hotshot_contract_adapter/bindings/
light_client_v2_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
636    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2242}
2243```*/
2244#[allow(
2245    non_camel_case_types,
2246    non_snake_case,
2247    clippy::pub_underscore_fields,
2248    clippy::style,
2249    clippy::empty_structs_with_brackets
2250)]
2251pub mod LightClient {
2252    use super::*;
2253    use alloy::sol_types as alloy_sol_types;
2254    #[derive(serde::Serialize, serde::Deserialize)]
2255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2256    /**```solidity
2257struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2258```*/
2259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2260    #[derive(Clone)]
2261    pub struct LightClientState {
2262        #[allow(missing_docs)]
2263        pub viewNum: u64,
2264        #[allow(missing_docs)]
2265        pub blockHeight: u64,
2266        #[allow(missing_docs)]
2267        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2268    }
2269    #[allow(
2270        non_camel_case_types,
2271        non_snake_case,
2272        clippy::pub_underscore_fields,
2273        clippy::style
2274    )]
2275    const _: () = {
2276        use alloy::sol_types as alloy_sol_types;
2277        #[doc(hidden)]
2278        #[allow(dead_code)]
2279        type UnderlyingSolTuple<'a> = (
2280            alloy::sol_types::sol_data::Uint<64>,
2281            alloy::sol_types::sol_data::Uint<64>,
2282            BN254::ScalarField,
2283        );
2284        #[doc(hidden)]
2285        type UnderlyingRustTuple<'a> = (
2286            u64,
2287            u64,
2288            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2289        );
2290        #[cfg(test)]
2291        #[allow(dead_code, unreachable_patterns)]
2292        fn _type_assertion(
2293            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2294        ) {
2295            match _t {
2296                alloy_sol_types::private::AssertTypeEq::<
2297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2298                >(_) => {}
2299            }
2300        }
2301        #[automatically_derived]
2302        #[doc(hidden)]
2303        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2304            fn from(value: LightClientState) -> Self {
2305                (value.viewNum, value.blockHeight, value.blockCommRoot)
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2311            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2312                Self {
2313                    viewNum: tuple.0,
2314                    blockHeight: tuple.1,
2315                    blockCommRoot: tuple.2,
2316                }
2317            }
2318        }
2319        #[automatically_derived]
2320        impl alloy_sol_types::SolValue for LightClientState {
2321            type SolType = Self;
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2325            #[inline]
2326            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2327                (
2328                    <alloy::sol_types::sol_data::Uint<
2329                        64,
2330                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2334                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2335                        &self.blockCommRoot,
2336                    ),
2337                )
2338            }
2339            #[inline]
2340            fn stv_abi_encoded_size(&self) -> usize {
2341                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2342                    return size;
2343                }
2344                let tuple = <UnderlyingRustTuple<
2345                    '_,
2346                > as ::core::convert::From<Self>>::from(self.clone());
2347                <UnderlyingSolTuple<
2348                    '_,
2349                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2350            }
2351            #[inline]
2352            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2353                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2354            }
2355            #[inline]
2356            fn stv_abi_encode_packed_to(
2357                &self,
2358                out: &mut alloy_sol_types::private::Vec<u8>,
2359            ) {
2360                let tuple = <UnderlyingRustTuple<
2361                    '_,
2362                > as ::core::convert::From<Self>>::from(self.clone());
2363                <UnderlyingSolTuple<
2364                    '_,
2365                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2366            }
2367            #[inline]
2368            fn stv_abi_packed_encoded_size(&self) -> usize {
2369                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2370                    return size;
2371                }
2372                let tuple = <UnderlyingRustTuple<
2373                    '_,
2374                > as ::core::convert::From<Self>>::from(self.clone());
2375                <UnderlyingSolTuple<
2376                    '_,
2377                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2378            }
2379        }
2380        #[automatically_derived]
2381        impl alloy_sol_types::SolType for LightClientState {
2382            type RustType = Self;
2383            type Token<'a> = <UnderlyingSolTuple<
2384                'a,
2385            > as alloy_sol_types::SolType>::Token<'a>;
2386            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2387            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2388                '_,
2389            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2390            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2393            #[inline]
2394            fn valid_token(token: &Self::Token<'_>) -> bool {
2395                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2396            }
2397            #[inline]
2398            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2399                let tuple = <UnderlyingSolTuple<
2400                    '_,
2401                > as alloy_sol_types::SolType>::detokenize(token);
2402                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2403            }
2404        }
2405        #[automatically_derived]
2406        impl alloy_sol_types::SolStruct for LightClientState {
2407            const NAME: &'static str = "LightClientState";
2408            #[inline]
2409            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2410                alloy_sol_types::private::Cow::Borrowed(
2411                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2412                )
2413            }
2414            #[inline]
2415            fn eip712_components() -> alloy_sol_types::private::Vec<
2416                alloy_sol_types::private::Cow<'static, str>,
2417            > {
2418                alloy_sol_types::private::Vec::new()
2419            }
2420            #[inline]
2421            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2422                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2423            }
2424            #[inline]
2425            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2426                [
2427                    <alloy::sol_types::sol_data::Uint<
2428                        64,
2429                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2430                        .0,
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2434                        .0,
2435                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2436                            &self.blockCommRoot,
2437                        )
2438                        .0,
2439                ]
2440                    .concat()
2441            }
2442        }
2443        #[automatically_derived]
2444        impl alloy_sol_types::EventTopic for LightClientState {
2445            #[inline]
2446            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2447                0usize
2448                    + <alloy::sol_types::sol_data::Uint<
2449                        64,
2450                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2451                        &rust.viewNum,
2452                    )
2453                    + <alloy::sol_types::sol_data::Uint<
2454                        64,
2455                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2456                        &rust.blockHeight,
2457                    )
2458                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockCommRoot,
2460                    )
2461            }
2462            #[inline]
2463            fn encode_topic_preimage(
2464                rust: &Self::RustType,
2465                out: &mut alloy_sol_types::private::Vec<u8>,
2466            ) {
2467                out.reserve(
2468                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2469                );
2470                <alloy::sol_types::sol_data::Uint<
2471                    64,
2472                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    &rust.viewNum,
2474                    out,
2475                );
2476                <alloy::sol_types::sol_data::Uint<
2477                    64,
2478                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2479                    &rust.blockHeight,
2480                    out,
2481                );
2482                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockCommRoot,
2484                    out,
2485                );
2486            }
2487            #[inline]
2488            fn encode_topic(
2489                rust: &Self::RustType,
2490            ) -> alloy_sol_types::abi::token::WordToken {
2491                let mut out = alloy_sol_types::private::Vec::new();
2492                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2493                    rust,
2494                    &mut out,
2495                );
2496                alloy_sol_types::abi::token::WordToken(
2497                    alloy_sol_types::private::keccak256(out),
2498                )
2499            }
2500        }
2501    };
2502    #[derive(serde::Serialize, serde::Deserialize)]
2503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2504    /**```solidity
2505struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2506```*/
2507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2508    #[derive(Clone)]
2509    pub struct StakeTableState {
2510        #[allow(missing_docs)]
2511        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2512        #[allow(missing_docs)]
2513        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2514        #[allow(missing_docs)]
2515        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2516        #[allow(missing_docs)]
2517        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518    }
2519    #[allow(
2520        non_camel_case_types,
2521        non_snake_case,
2522        clippy::pub_underscore_fields,
2523        clippy::style
2524    )]
2525    const _: () = {
2526        use alloy::sol_types as alloy_sol_types;
2527        #[doc(hidden)]
2528        #[allow(dead_code)]
2529        type UnderlyingSolTuple<'a> = (
2530            alloy::sol_types::sol_data::Uint<256>,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533            BN254::ScalarField,
2534        );
2535        #[doc(hidden)]
2536        type UnderlyingRustTuple<'a> = (
2537            alloy::sol_types::private::primitives::aliases::U256,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541        );
2542        #[cfg(test)]
2543        #[allow(dead_code, unreachable_patterns)]
2544        fn _type_assertion(
2545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2546        ) {
2547            match _t {
2548                alloy_sol_types::private::AssertTypeEq::<
2549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2550                >(_) => {}
2551            }
2552        }
2553        #[automatically_derived]
2554        #[doc(hidden)]
2555        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2556            fn from(value: StakeTableState) -> Self {
2557                (
2558                    value.threshold,
2559                    value.blsKeyComm,
2560                    value.schnorrKeyComm,
2561                    value.amountComm,
2562                )
2563            }
2564        }
2565        #[automatically_derived]
2566        #[doc(hidden)]
2567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2569                Self {
2570                    threshold: tuple.0,
2571                    blsKeyComm: tuple.1,
2572                    schnorrKeyComm: tuple.2,
2573                    amountComm: tuple.3,
2574                }
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::SolValue for StakeTableState {
2579            type SolType = Self;
2580        }
2581        #[automatically_derived]
2582        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2583            #[inline]
2584            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2585                (
2586                    <alloy::sol_types::sol_data::Uint<
2587                        256,
2588                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2589                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2590                        &self.blsKeyComm,
2591                    ),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.schnorrKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.amountComm,
2597                    ),
2598                )
2599            }
2600            #[inline]
2601            fn stv_abi_encoded_size(&self) -> usize {
2602                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2603                    return size;
2604                }
2605                let tuple = <UnderlyingRustTuple<
2606                    '_,
2607                > as ::core::convert::From<Self>>::from(self.clone());
2608                <UnderlyingSolTuple<
2609                    '_,
2610                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2611            }
2612            #[inline]
2613            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2614                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2615            }
2616            #[inline]
2617            fn stv_abi_encode_packed_to(
2618                &self,
2619                out: &mut alloy_sol_types::private::Vec<u8>,
2620            ) {
2621                let tuple = <UnderlyingRustTuple<
2622                    '_,
2623                > as ::core::convert::From<Self>>::from(self.clone());
2624                <UnderlyingSolTuple<
2625                    '_,
2626                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2627            }
2628            #[inline]
2629            fn stv_abi_packed_encoded_size(&self) -> usize {
2630                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2631                    return size;
2632                }
2633                let tuple = <UnderlyingRustTuple<
2634                    '_,
2635                > as ::core::convert::From<Self>>::from(self.clone());
2636                <UnderlyingSolTuple<
2637                    '_,
2638                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2639            }
2640        }
2641        #[automatically_derived]
2642        impl alloy_sol_types::SolType for StakeTableState {
2643            type RustType = Self;
2644            type Token<'a> = <UnderlyingSolTuple<
2645                'a,
2646            > as alloy_sol_types::SolType>::Token<'a>;
2647            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2648            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2649                '_,
2650            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2651            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2654            #[inline]
2655            fn valid_token(token: &Self::Token<'_>) -> bool {
2656                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2657            }
2658            #[inline]
2659            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2660                let tuple = <UnderlyingSolTuple<
2661                    '_,
2662                > as alloy_sol_types::SolType>::detokenize(token);
2663                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2664            }
2665        }
2666        #[automatically_derived]
2667        impl alloy_sol_types::SolStruct for StakeTableState {
2668            const NAME: &'static str = "StakeTableState";
2669            #[inline]
2670            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2671                alloy_sol_types::private::Cow::Borrowed(
2672                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2673                )
2674            }
2675            #[inline]
2676            fn eip712_components() -> alloy_sol_types::private::Vec<
2677                alloy_sol_types::private::Cow<'static, str>,
2678            > {
2679                alloy_sol_types::private::Vec::new()
2680            }
2681            #[inline]
2682            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2683                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2684            }
2685            #[inline]
2686            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2687                [
2688                    <alloy::sol_types::sol_data::Uint<
2689                        256,
2690                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2691                        .0,
2692                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2693                            &self.blsKeyComm,
2694                        )
2695                        .0,
2696                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2697                            &self.schnorrKeyComm,
2698                        )
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.amountComm,
2702                        )
2703                        .0,
2704                ]
2705                    .concat()
2706            }
2707        }
2708        #[automatically_derived]
2709        impl alloy_sol_types::EventTopic for StakeTableState {
2710            #[inline]
2711            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2712                0usize
2713                    + <alloy::sol_types::sol_data::Uint<
2714                        256,
2715                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2716                        &rust.threshold,
2717                    )
2718                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.blsKeyComm,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.schnorrKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.amountComm,
2726                    )
2727            }
2728            #[inline]
2729            fn encode_topic_preimage(
2730                rust: &Self::RustType,
2731                out: &mut alloy_sol_types::private::Vec<u8>,
2732            ) {
2733                out.reserve(
2734                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2735                );
2736                <alloy::sol_types::sol_data::Uint<
2737                    256,
2738                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    &rust.threshold,
2740                    out,
2741                );
2742                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2743                    &rust.blsKeyComm,
2744                    out,
2745                );
2746                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.schnorrKeyComm,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.amountComm,
2752                    out,
2753                );
2754            }
2755            #[inline]
2756            fn encode_topic(
2757                rust: &Self::RustType,
2758            ) -> alloy_sol_types::abi::token::WordToken {
2759                let mut out = alloy_sol_types::private::Vec::new();
2760                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2761                    rust,
2762                    &mut out,
2763                );
2764                alloy_sol_types::abi::token::WordToken(
2765                    alloy_sol_types::private::keccak256(out),
2766                )
2767            }
2768        }
2769    };
2770    #[derive(serde::Serialize, serde::Deserialize)]
2771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2772    /**```solidity
2773struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2774```*/
2775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2776    #[derive(Clone)]
2777    pub struct StateHistoryCommitment {
2778        #[allow(missing_docs)]
2779        pub l1BlockHeight: u64,
2780        #[allow(missing_docs)]
2781        pub l1BlockTimestamp: u64,
2782        #[allow(missing_docs)]
2783        pub hotShotBlockHeight: u64,
2784        #[allow(missing_docs)]
2785        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786    }
2787    #[allow(
2788        non_camel_case_types,
2789        non_snake_case,
2790        clippy::pub_underscore_fields,
2791        clippy::style
2792    )]
2793    const _: () = {
2794        use alloy::sol_types as alloy_sol_types;
2795        #[doc(hidden)]
2796        #[allow(dead_code)]
2797        type UnderlyingSolTuple<'a> = (
2798            alloy::sol_types::sol_data::Uint<64>,
2799            alloy::sol_types::sol_data::Uint<64>,
2800            alloy::sol_types::sol_data::Uint<64>,
2801            BN254::ScalarField,
2802        );
2803        #[doc(hidden)]
2804        type UnderlyingRustTuple<'a> = (
2805            u64,
2806            u64,
2807            u64,
2808            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2809        );
2810        #[cfg(test)]
2811        #[allow(dead_code, unreachable_patterns)]
2812        fn _type_assertion(
2813            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2814        ) {
2815            match _t {
2816                alloy_sol_types::private::AssertTypeEq::<
2817                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2818                >(_) => {}
2819            }
2820        }
2821        #[automatically_derived]
2822        #[doc(hidden)]
2823        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2824            fn from(value: StateHistoryCommitment) -> Self {
2825                (
2826                    value.l1BlockHeight,
2827                    value.l1BlockTimestamp,
2828                    value.hotShotBlockHeight,
2829                    value.hotShotBlockCommRoot,
2830                )
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self {
2838                    l1BlockHeight: tuple.0,
2839                    l1BlockTimestamp: tuple.1,
2840                    hotShotBlockHeight: tuple.2,
2841                    hotShotBlockCommRoot: tuple.3,
2842                }
2843            }
2844        }
2845        #[automatically_derived]
2846        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2847            type SolType = Self;
2848        }
2849        #[automatically_derived]
2850        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2851            #[inline]
2852            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2853                (
2854                    <alloy::sol_types::sol_data::Uint<
2855                        64,
2856                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2857                    <alloy::sol_types::sol_data::Uint<
2858                        64,
2859                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2860                    <alloy::sol_types::sol_data::Uint<
2861                        64,
2862                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2864                        &self.hotShotBlockCommRoot,
2865                    ),
2866                )
2867            }
2868            #[inline]
2869            fn stv_abi_encoded_size(&self) -> usize {
2870                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2871                    return size;
2872                }
2873                let tuple = <UnderlyingRustTuple<
2874                    '_,
2875                > as ::core::convert::From<Self>>::from(self.clone());
2876                <UnderlyingSolTuple<
2877                    '_,
2878                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2879            }
2880            #[inline]
2881            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2882                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2883            }
2884            #[inline]
2885            fn stv_abi_encode_packed_to(
2886                &self,
2887                out: &mut alloy_sol_types::private::Vec<u8>,
2888            ) {
2889                let tuple = <UnderlyingRustTuple<
2890                    '_,
2891                > as ::core::convert::From<Self>>::from(self.clone());
2892                <UnderlyingSolTuple<
2893                    '_,
2894                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2895            }
2896            #[inline]
2897            fn stv_abi_packed_encoded_size(&self) -> usize {
2898                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2899                    return size;
2900                }
2901                let tuple = <UnderlyingRustTuple<
2902                    '_,
2903                > as ::core::convert::From<Self>>::from(self.clone());
2904                <UnderlyingSolTuple<
2905                    '_,
2906                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2907            }
2908        }
2909        #[automatically_derived]
2910        impl alloy_sol_types::SolType for StateHistoryCommitment {
2911            type RustType = Self;
2912            type Token<'a> = <UnderlyingSolTuple<
2913                'a,
2914            > as alloy_sol_types::SolType>::Token<'a>;
2915            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2916            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2917                '_,
2918            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2919            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2920                '_,
2921            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2922            #[inline]
2923            fn valid_token(token: &Self::Token<'_>) -> bool {
2924                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2925            }
2926            #[inline]
2927            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2928                let tuple = <UnderlyingSolTuple<
2929                    '_,
2930                > as alloy_sol_types::SolType>::detokenize(token);
2931                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2932            }
2933        }
2934        #[automatically_derived]
2935        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2936            const NAME: &'static str = "StateHistoryCommitment";
2937            #[inline]
2938            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2939                alloy_sol_types::private::Cow::Borrowed(
2940                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2941                )
2942            }
2943            #[inline]
2944            fn eip712_components() -> alloy_sol_types::private::Vec<
2945                alloy_sol_types::private::Cow<'static, str>,
2946            > {
2947                alloy_sol_types::private::Vec::new()
2948            }
2949            #[inline]
2950            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2951                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2952            }
2953            #[inline]
2954            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2955                [
2956                    <alloy::sol_types::sol_data::Uint<
2957                        64,
2958                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2959                        .0,
2960                    <alloy::sol_types::sol_data::Uint<
2961                        64,
2962                    > as alloy_sol_types::SolType>::eip712_data_word(
2963                            &self.l1BlockTimestamp,
2964                        )
2965                        .0,
2966                    <alloy::sol_types::sol_data::Uint<
2967                        64,
2968                    > as alloy_sol_types::SolType>::eip712_data_word(
2969                            &self.hotShotBlockHeight,
2970                        )
2971                        .0,
2972                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2973                            &self.hotShotBlockCommRoot,
2974                        )
2975                        .0,
2976                ]
2977                    .concat()
2978            }
2979        }
2980        #[automatically_derived]
2981        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2982            #[inline]
2983            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2984                0usize
2985                    + <alloy::sol_types::sol_data::Uint<
2986                        64,
2987                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2988                        &rust.l1BlockHeight,
2989                    )
2990                    + <alloy::sol_types::sol_data::Uint<
2991                        64,
2992                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2993                        &rust.l1BlockTimestamp,
2994                    )
2995                    + <alloy::sol_types::sol_data::Uint<
2996                        64,
2997                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2998                        &rust.hotShotBlockHeight,
2999                    )
3000                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.hotShotBlockCommRoot,
3002                    )
3003            }
3004            #[inline]
3005            fn encode_topic_preimage(
3006                rust: &Self::RustType,
3007                out: &mut alloy_sol_types::private::Vec<u8>,
3008            ) {
3009                out.reserve(
3010                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3011                );
3012                <alloy::sol_types::sol_data::Uint<
3013                    64,
3014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3015                    &rust.l1BlockHeight,
3016                    out,
3017                );
3018                <alloy::sol_types::sol_data::Uint<
3019                    64,
3020                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3021                    &rust.l1BlockTimestamp,
3022                    out,
3023                );
3024                <alloy::sol_types::sol_data::Uint<
3025                    64,
3026                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3027                    &rust.hotShotBlockHeight,
3028                    out,
3029                );
3030                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3031                    &rust.hotShotBlockCommRoot,
3032                    out,
3033                );
3034            }
3035            #[inline]
3036            fn encode_topic(
3037                rust: &Self::RustType,
3038            ) -> alloy_sol_types::abi::token::WordToken {
3039                let mut out = alloy_sol_types::private::Vec::new();
3040                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3041                    rust,
3042                    &mut out,
3043                );
3044                alloy_sol_types::abi::token::WordToken(
3045                    alloy_sol_types::private::keccak256(out),
3046                )
3047            }
3048        }
3049    };
3050    use alloy::contract as alloy_contract;
3051    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3052
3053See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3054    #[inline]
3055    pub const fn new<
3056        P: alloy_contract::private::Provider<N>,
3057        N: alloy_contract::private::Network,
3058    >(
3059        address: alloy_sol_types::private::Address,
3060        __provider: P,
3061    ) -> LightClientInstance<P, N> {
3062        LightClientInstance::<P, N>::new(address, __provider)
3063    }
3064    /**A [`LightClient`](self) instance.
3065
3066Contains type-safe methods for interacting with an on-chain instance of the
3067[`LightClient`](self) contract located at a given `address`, using a given
3068provider `P`.
3069
3070If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3071documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3072be used to deploy a new instance of the contract.
3073
3074See the [module-level documentation](self) for all the available methods.*/
3075    #[derive(Clone)]
3076    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3077        address: alloy_sol_types::private::Address,
3078        provider: P,
3079        _network: ::core::marker::PhantomData<N>,
3080    }
3081    #[automatically_derived]
3082    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3083        #[inline]
3084        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3085            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3086        }
3087    }
3088    /// Instantiation and getters/setters.
3089    impl<
3090        P: alloy_contract::private::Provider<N>,
3091        N: alloy_contract::private::Network,
3092    > LightClientInstance<P, N> {
3093        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3094
3095See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3096        #[inline]
3097        pub const fn new(
3098            address: alloy_sol_types::private::Address,
3099            __provider: P,
3100        ) -> Self {
3101            Self {
3102                address,
3103                provider: __provider,
3104                _network: ::core::marker::PhantomData,
3105            }
3106        }
3107        /// Returns a reference to the address.
3108        #[inline]
3109        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3110            &self.address
3111        }
3112        /// Sets the address.
3113        #[inline]
3114        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3115            self.address = address;
3116        }
3117        /// Sets the address and returns `self`.
3118        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3119            self.set_address(address);
3120            self
3121        }
3122        /// Returns a reference to the provider.
3123        #[inline]
3124        pub const fn provider(&self) -> &P {
3125            &self.provider
3126        }
3127    }
3128    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3129        /// Clones the provider and returns a new instance with the cloned provider.
3130        #[inline]
3131        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3132            LightClientInstance {
3133                address: self.address,
3134                provider: ::core::clone::Clone::clone(&self.provider),
3135                _network: ::core::marker::PhantomData,
3136            }
3137        }
3138    }
3139    /// Function calls.
3140    impl<
3141        P: alloy_contract::private::Provider<N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<P, N> {
3144        /// Creates a new call builder using this contract instance's provider and address.
3145        ///
3146        /// Note that the call can be any function call, not just those defined in this
3147        /// contract. Prefer using the other methods for building type-safe contract calls.
3148        pub fn call_builder<C: alloy_sol_types::SolCall>(
3149            &self,
3150            call: &C,
3151        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3152            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3153        }
3154    }
3155    /// Event filters.
3156    impl<
3157        P: alloy_contract::private::Provider<N>,
3158        N: alloy_contract::private::Network,
3159    > LightClientInstance<P, N> {
3160        /// Creates a new event filter using this contract instance's provider and address.
3161        ///
3162        /// Note that the type can be any event, not just those defined in this contract.
3163        /// Prefer using the other methods for building type-safe event filters.
3164        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3165            &self,
3166        ) -> alloy_contract::Event<&P, E, N> {
3167            alloy_contract::Event::new_sol(&self.provider, &self.address)
3168        }
3169    }
3170}
3171/**
3172
3173Generated by the following Solidity interface...
3174```solidity
3175library BN254 {
3176    type BaseField is uint256;
3177    type ScalarField is uint256;
3178    struct G1Point {
3179        BaseField x;
3180        BaseField y;
3181    }
3182}
3183
3184library IPlonkVerifier {
3185    struct PlonkProof {
3186        BN254.G1Point wire0;
3187        BN254.G1Point wire1;
3188        BN254.G1Point wire2;
3189        BN254.G1Point wire3;
3190        BN254.G1Point wire4;
3191        BN254.G1Point prodPerm;
3192        BN254.G1Point split0;
3193        BN254.G1Point split1;
3194        BN254.G1Point split2;
3195        BN254.G1Point split3;
3196        BN254.G1Point split4;
3197        BN254.G1Point zeta;
3198        BN254.G1Point zetaOmega;
3199        BN254.ScalarField wireEval0;
3200        BN254.ScalarField wireEval1;
3201        BN254.ScalarField wireEval2;
3202        BN254.ScalarField wireEval3;
3203        BN254.ScalarField wireEval4;
3204        BN254.ScalarField sigmaEval0;
3205        BN254.ScalarField sigmaEval1;
3206        BN254.ScalarField sigmaEval2;
3207        BN254.ScalarField sigmaEval3;
3208        BN254.ScalarField prodPermZetaOmegaEval;
3209    }
3210    struct VerifyingKey {
3211        uint256 domainSize;
3212        uint256 numInputs;
3213        BN254.G1Point sigma0;
3214        BN254.G1Point sigma1;
3215        BN254.G1Point sigma2;
3216        BN254.G1Point sigma3;
3217        BN254.G1Point sigma4;
3218        BN254.G1Point q1;
3219        BN254.G1Point q2;
3220        BN254.G1Point q3;
3221        BN254.G1Point q4;
3222        BN254.G1Point qM12;
3223        BN254.G1Point qM34;
3224        BN254.G1Point qO;
3225        BN254.G1Point qC;
3226        BN254.G1Point qH1;
3227        BN254.G1Point qH2;
3228        BN254.G1Point qH3;
3229        BN254.G1Point qH4;
3230        BN254.G1Point qEcc;
3231        bytes32 g2LSB;
3232        bytes32 g2MSB;
3233    }
3234}
3235
3236library LightClient {
3237    struct LightClientState {
3238        uint64 viewNum;
3239        uint64 blockHeight;
3240        BN254.ScalarField blockCommRoot;
3241    }
3242    struct StakeTableState {
3243        uint256 threshold;
3244        BN254.ScalarField blsKeyComm;
3245        BN254.ScalarField schnorrKeyComm;
3246        BN254.ScalarField amountComm;
3247    }
3248    struct StateHistoryCommitment {
3249        uint64 l1BlockHeight;
3250        uint64 l1BlockTimestamp;
3251        uint64 hotShotBlockHeight;
3252        BN254.ScalarField hotShotBlockCommRoot;
3253    }
3254}
3255
3256interface LightClientV2Mock {
3257    error AddressEmptyCode(address target);
3258    error DeprecatedApi();
3259    error ERC1967InvalidImplementation(address implementation);
3260    error ERC1967NonPayable();
3261    error FailedInnerCall();
3262    error InsufficientSnapshotHistory();
3263    error InvalidAddress();
3264    error InvalidArgs();
3265    error InvalidHotShotBlockForCommitmentCheck();
3266    error InvalidInitialization();
3267    error InvalidMaxStateHistory();
3268    error InvalidProof();
3269    error InvalidScalar();
3270    error MissingEpochRootUpdate();
3271    error NoChangeRequired();
3272    error NotInitializing();
3273    error OutdatedState();
3274    error OwnableInvalidOwner(address owner);
3275    error OwnableUnauthorizedAccount(address account);
3276    error OwnershipCannotBeRenounced();
3277    error ProverNotPermissioned();
3278    error UUPSUnauthorizedCallContext();
3279    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3280    error WrongStakeTableUsed();
3281
3282    event Initialized(uint64 version);
3283    event NewEpoch(uint64 epoch);
3284    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3285    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3286    event PermissionedProverNotRequired();
3287    event PermissionedProverRequired(address permissionedProver);
3288    event Upgrade(address implementation);
3289    event Upgraded(address indexed implementation);
3290
3291    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3292    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3293    function blocksPerEpoch() external view returns (uint64);
3294    function currentBlockNumber() external view returns (uint256);
3295    function currentEpoch() external view returns (uint64);
3296    function disablePermissionedProverMode() external;
3297    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3298    function epochStartBlock() external view returns (uint64);
3299    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3300    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3301    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3302    function getFirstEpoch() external view returns (uint64);
3303    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3304    function getStateHistoryCount() external view returns (uint256);
3305    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3306    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3307    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3308    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3309    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3310    function isPermissionedProverEnabled() external view returns (bool);
3311    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3312    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3313    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3314    function owner() external view returns (address);
3315    function permissionedProver() external view returns (address);
3316    function proxiableUUID() external view returns (bytes32);
3317    function renounceOwnership() external;
3318    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3319    function setFinalizedState(LightClient.LightClientState memory state) external;
3320    function setHotShotDownSince(uint256 l1Height) external;
3321    function setHotShotUp() external;
3322    function setPermissionedProver(address prover) external;
3323    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3324    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3325    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3326    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3327    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3328    function stateHistoryFirstIndex() external view returns (uint64);
3329    function stateHistoryRetentionPeriod() external view returns (uint32);
3330    function transferOwnership(address newOwner) external;
3331    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3332    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3333    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3334}
3335```
3336
3337...which was generated by the following JSON ABI:
3338```json
3339[
3340  {
3341    "type": "function",
3342    "name": "UPGRADE_INTERFACE_VERSION",
3343    "inputs": [],
3344    "outputs": [
3345      {
3346        "name": "",
3347        "type": "string",
3348        "internalType": "string"
3349      }
3350    ],
3351    "stateMutability": "view"
3352  },
3353  {
3354    "type": "function",
3355    "name": "_getVk",
3356    "inputs": [],
3357    "outputs": [
3358      {
3359        "name": "vk",
3360        "type": "tuple",
3361        "internalType": "struct IPlonkVerifier.VerifyingKey",
3362        "components": [
3363          {
3364            "name": "domainSize",
3365            "type": "uint256",
3366            "internalType": "uint256"
3367          },
3368          {
3369            "name": "numInputs",
3370            "type": "uint256",
3371            "internalType": "uint256"
3372          },
3373          {
3374            "name": "sigma0",
3375            "type": "tuple",
3376            "internalType": "struct BN254.G1Point",
3377            "components": [
3378              {
3379                "name": "x",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              },
3383              {
3384                "name": "y",
3385                "type": "uint256",
3386                "internalType": "BN254.BaseField"
3387              }
3388            ]
3389          },
3390          {
3391            "name": "sigma1",
3392            "type": "tuple",
3393            "internalType": "struct BN254.G1Point",
3394            "components": [
3395              {
3396                "name": "x",
3397                "type": "uint256",
3398                "internalType": "BN254.BaseField"
3399              },
3400              {
3401                "name": "y",
3402                "type": "uint256",
3403                "internalType": "BN254.BaseField"
3404              }
3405            ]
3406          },
3407          {
3408            "name": "sigma2",
3409            "type": "tuple",
3410            "internalType": "struct BN254.G1Point",
3411            "components": [
3412              {
3413                "name": "x",
3414                "type": "uint256",
3415                "internalType": "BN254.BaseField"
3416              },
3417              {
3418                "name": "y",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              }
3422            ]
3423          },
3424          {
3425            "name": "sigma3",
3426            "type": "tuple",
3427            "internalType": "struct BN254.G1Point",
3428            "components": [
3429              {
3430                "name": "x",
3431                "type": "uint256",
3432                "internalType": "BN254.BaseField"
3433              },
3434              {
3435                "name": "y",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              }
3439            ]
3440          },
3441          {
3442            "name": "sigma4",
3443            "type": "tuple",
3444            "internalType": "struct BN254.G1Point",
3445            "components": [
3446              {
3447                "name": "x",
3448                "type": "uint256",
3449                "internalType": "BN254.BaseField"
3450              },
3451              {
3452                "name": "y",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              }
3456            ]
3457          },
3458          {
3459            "name": "q1",
3460            "type": "tuple",
3461            "internalType": "struct BN254.G1Point",
3462            "components": [
3463              {
3464                "name": "x",
3465                "type": "uint256",
3466                "internalType": "BN254.BaseField"
3467              },
3468              {
3469                "name": "y",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              }
3473            ]
3474          },
3475          {
3476            "name": "q2",
3477            "type": "tuple",
3478            "internalType": "struct BN254.G1Point",
3479            "components": [
3480              {
3481                "name": "x",
3482                "type": "uint256",
3483                "internalType": "BN254.BaseField"
3484              },
3485              {
3486                "name": "y",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              }
3490            ]
3491          },
3492          {
3493            "name": "q3",
3494            "type": "tuple",
3495            "internalType": "struct BN254.G1Point",
3496            "components": [
3497              {
3498                "name": "x",
3499                "type": "uint256",
3500                "internalType": "BN254.BaseField"
3501              },
3502              {
3503                "name": "y",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              }
3507            ]
3508          },
3509          {
3510            "name": "q4",
3511            "type": "tuple",
3512            "internalType": "struct BN254.G1Point",
3513            "components": [
3514              {
3515                "name": "x",
3516                "type": "uint256",
3517                "internalType": "BN254.BaseField"
3518              },
3519              {
3520                "name": "y",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              }
3524            ]
3525          },
3526          {
3527            "name": "qM12",
3528            "type": "tuple",
3529            "internalType": "struct BN254.G1Point",
3530            "components": [
3531              {
3532                "name": "x",
3533                "type": "uint256",
3534                "internalType": "BN254.BaseField"
3535              },
3536              {
3537                "name": "y",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              }
3541            ]
3542          },
3543          {
3544            "name": "qM34",
3545            "type": "tuple",
3546            "internalType": "struct BN254.G1Point",
3547            "components": [
3548              {
3549                "name": "x",
3550                "type": "uint256",
3551                "internalType": "BN254.BaseField"
3552              },
3553              {
3554                "name": "y",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              }
3558            ]
3559          },
3560          {
3561            "name": "qO",
3562            "type": "tuple",
3563            "internalType": "struct BN254.G1Point",
3564            "components": [
3565              {
3566                "name": "x",
3567                "type": "uint256",
3568                "internalType": "BN254.BaseField"
3569              },
3570              {
3571                "name": "y",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              }
3575            ]
3576          },
3577          {
3578            "name": "qC",
3579            "type": "tuple",
3580            "internalType": "struct BN254.G1Point",
3581            "components": [
3582              {
3583                "name": "x",
3584                "type": "uint256",
3585                "internalType": "BN254.BaseField"
3586              },
3587              {
3588                "name": "y",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              }
3592            ]
3593          },
3594          {
3595            "name": "qH1",
3596            "type": "tuple",
3597            "internalType": "struct BN254.G1Point",
3598            "components": [
3599              {
3600                "name": "x",
3601                "type": "uint256",
3602                "internalType": "BN254.BaseField"
3603              },
3604              {
3605                "name": "y",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              }
3609            ]
3610          },
3611          {
3612            "name": "qH2",
3613            "type": "tuple",
3614            "internalType": "struct BN254.G1Point",
3615            "components": [
3616              {
3617                "name": "x",
3618                "type": "uint256",
3619                "internalType": "BN254.BaseField"
3620              },
3621              {
3622                "name": "y",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              }
3626            ]
3627          },
3628          {
3629            "name": "qH3",
3630            "type": "tuple",
3631            "internalType": "struct BN254.G1Point",
3632            "components": [
3633              {
3634                "name": "x",
3635                "type": "uint256",
3636                "internalType": "BN254.BaseField"
3637              },
3638              {
3639                "name": "y",
3640                "type": "uint256",
3641                "internalType": "BN254.BaseField"
3642              }
3643            ]
3644          },
3645          {
3646            "name": "qH4",
3647            "type": "tuple",
3648            "internalType": "struct BN254.G1Point",
3649            "components": [
3650              {
3651                "name": "x",
3652                "type": "uint256",
3653                "internalType": "BN254.BaseField"
3654              },
3655              {
3656                "name": "y",
3657                "type": "uint256",
3658                "internalType": "BN254.BaseField"
3659              }
3660            ]
3661          },
3662          {
3663            "name": "qEcc",
3664            "type": "tuple",
3665            "internalType": "struct BN254.G1Point",
3666            "components": [
3667              {
3668                "name": "x",
3669                "type": "uint256",
3670                "internalType": "BN254.BaseField"
3671              },
3672              {
3673                "name": "y",
3674                "type": "uint256",
3675                "internalType": "BN254.BaseField"
3676              }
3677            ]
3678          },
3679          {
3680            "name": "g2LSB",
3681            "type": "bytes32",
3682            "internalType": "bytes32"
3683          },
3684          {
3685            "name": "g2MSB",
3686            "type": "bytes32",
3687            "internalType": "bytes32"
3688          }
3689        ]
3690      }
3691    ],
3692    "stateMutability": "pure"
3693  },
3694  {
3695    "type": "function",
3696    "name": "blocksPerEpoch",
3697    "inputs": [],
3698    "outputs": [
3699      {
3700        "name": "",
3701        "type": "uint64",
3702        "internalType": "uint64"
3703      }
3704    ],
3705    "stateMutability": "view"
3706  },
3707  {
3708    "type": "function",
3709    "name": "currentBlockNumber",
3710    "inputs": [],
3711    "outputs": [
3712      {
3713        "name": "",
3714        "type": "uint256",
3715        "internalType": "uint256"
3716      }
3717    ],
3718    "stateMutability": "view"
3719  },
3720  {
3721    "type": "function",
3722    "name": "currentEpoch",
3723    "inputs": [],
3724    "outputs": [
3725      {
3726        "name": "",
3727        "type": "uint64",
3728        "internalType": "uint64"
3729      }
3730    ],
3731    "stateMutability": "view"
3732  },
3733  {
3734    "type": "function",
3735    "name": "disablePermissionedProverMode",
3736    "inputs": [],
3737    "outputs": [],
3738    "stateMutability": "nonpayable"
3739  },
3740  {
3741    "type": "function",
3742    "name": "epochFromBlockNumber",
3743    "inputs": [
3744      {
3745        "name": "_blockNum",
3746        "type": "uint64",
3747        "internalType": "uint64"
3748      },
3749      {
3750        "name": "_blocksPerEpoch",
3751        "type": "uint64",
3752        "internalType": "uint64"
3753      }
3754    ],
3755    "outputs": [
3756      {
3757        "name": "",
3758        "type": "uint64",
3759        "internalType": "uint64"
3760      }
3761    ],
3762    "stateMutability": "pure"
3763  },
3764  {
3765    "type": "function",
3766    "name": "epochStartBlock",
3767    "inputs": [],
3768    "outputs": [
3769      {
3770        "name": "",
3771        "type": "uint64",
3772        "internalType": "uint64"
3773      }
3774    ],
3775    "stateMutability": "view"
3776  },
3777  {
3778    "type": "function",
3779    "name": "finalizedState",
3780    "inputs": [],
3781    "outputs": [
3782      {
3783        "name": "viewNum",
3784        "type": "uint64",
3785        "internalType": "uint64"
3786      },
3787      {
3788        "name": "blockHeight",
3789        "type": "uint64",
3790        "internalType": "uint64"
3791      },
3792      {
3793        "name": "blockCommRoot",
3794        "type": "uint256",
3795        "internalType": "BN254.ScalarField"
3796      }
3797    ],
3798    "stateMutability": "view"
3799  },
3800  {
3801    "type": "function",
3802    "name": "genesisStakeTableState",
3803    "inputs": [],
3804    "outputs": [
3805      {
3806        "name": "threshold",
3807        "type": "uint256",
3808        "internalType": "uint256"
3809      },
3810      {
3811        "name": "blsKeyComm",
3812        "type": "uint256",
3813        "internalType": "BN254.ScalarField"
3814      },
3815      {
3816        "name": "schnorrKeyComm",
3817        "type": "uint256",
3818        "internalType": "BN254.ScalarField"
3819      },
3820      {
3821        "name": "amountComm",
3822        "type": "uint256",
3823        "internalType": "BN254.ScalarField"
3824      }
3825    ],
3826    "stateMutability": "view"
3827  },
3828  {
3829    "type": "function",
3830    "name": "genesisState",
3831    "inputs": [],
3832    "outputs": [
3833      {
3834        "name": "viewNum",
3835        "type": "uint64",
3836        "internalType": "uint64"
3837      },
3838      {
3839        "name": "blockHeight",
3840        "type": "uint64",
3841        "internalType": "uint64"
3842      },
3843      {
3844        "name": "blockCommRoot",
3845        "type": "uint256",
3846        "internalType": "BN254.ScalarField"
3847      }
3848    ],
3849    "stateMutability": "view"
3850  },
3851  {
3852    "type": "function",
3853    "name": "getFirstEpoch",
3854    "inputs": [],
3855    "outputs": [
3856      {
3857        "name": "",
3858        "type": "uint64",
3859        "internalType": "uint64"
3860      }
3861    ],
3862    "stateMutability": "view"
3863  },
3864  {
3865    "type": "function",
3866    "name": "getHotShotCommitment",
3867    "inputs": [
3868      {
3869        "name": "hotShotBlockHeight",
3870        "type": "uint256",
3871        "internalType": "uint256"
3872      }
3873    ],
3874    "outputs": [
3875      {
3876        "name": "hotShotBlockCommRoot",
3877        "type": "uint256",
3878        "internalType": "BN254.ScalarField"
3879      },
3880      {
3881        "name": "hotshotBlockHeight",
3882        "type": "uint64",
3883        "internalType": "uint64"
3884      }
3885    ],
3886    "stateMutability": "view"
3887  },
3888  {
3889    "type": "function",
3890    "name": "getStateHistoryCount",
3891    "inputs": [],
3892    "outputs": [
3893      {
3894        "name": "",
3895        "type": "uint256",
3896        "internalType": "uint256"
3897      }
3898    ],
3899    "stateMutability": "view"
3900  },
3901  {
3902    "type": "function",
3903    "name": "getVersion",
3904    "inputs": [],
3905    "outputs": [
3906      {
3907        "name": "majorVersion",
3908        "type": "uint8",
3909        "internalType": "uint8"
3910      },
3911      {
3912        "name": "minorVersion",
3913        "type": "uint8",
3914        "internalType": "uint8"
3915      },
3916      {
3917        "name": "patchVersion",
3918        "type": "uint8",
3919        "internalType": "uint8"
3920      }
3921    ],
3922    "stateMutability": "pure"
3923  },
3924  {
3925    "type": "function",
3926    "name": "initialize",
3927    "inputs": [
3928      {
3929        "name": "_genesis",
3930        "type": "tuple",
3931        "internalType": "struct LightClient.LightClientState",
3932        "components": [
3933          {
3934            "name": "viewNum",
3935            "type": "uint64",
3936            "internalType": "uint64"
3937          },
3938          {
3939            "name": "blockHeight",
3940            "type": "uint64",
3941            "internalType": "uint64"
3942          },
3943          {
3944            "name": "blockCommRoot",
3945            "type": "uint256",
3946            "internalType": "BN254.ScalarField"
3947          }
3948        ]
3949      },
3950      {
3951        "name": "_genesisStakeTableState",
3952        "type": "tuple",
3953        "internalType": "struct LightClient.StakeTableState",
3954        "components": [
3955          {
3956            "name": "threshold",
3957            "type": "uint256",
3958            "internalType": "uint256"
3959          },
3960          {
3961            "name": "blsKeyComm",
3962            "type": "uint256",
3963            "internalType": "BN254.ScalarField"
3964          },
3965          {
3966            "name": "schnorrKeyComm",
3967            "type": "uint256",
3968            "internalType": "BN254.ScalarField"
3969          },
3970          {
3971            "name": "amountComm",
3972            "type": "uint256",
3973            "internalType": "BN254.ScalarField"
3974          }
3975        ]
3976      },
3977      {
3978        "name": "_stateHistoryRetentionPeriod",
3979        "type": "uint32",
3980        "internalType": "uint32"
3981      },
3982      {
3983        "name": "owner",
3984        "type": "address",
3985        "internalType": "address"
3986      }
3987    ],
3988    "outputs": [],
3989    "stateMutability": "nonpayable"
3990  },
3991  {
3992    "type": "function",
3993    "name": "initializeV2",
3994    "inputs": [
3995      {
3996        "name": "_blocksPerEpoch",
3997        "type": "uint64",
3998        "internalType": "uint64"
3999      },
4000      {
4001        "name": "_epochStartBlock",
4002        "type": "uint64",
4003        "internalType": "uint64"
4004      }
4005    ],
4006    "outputs": [],
4007    "stateMutability": "nonpayable"
4008  },
4009  {
4010    "type": "function",
4011    "name": "isEpochRoot",
4012    "inputs": [
4013      {
4014        "name": "blockHeight",
4015        "type": "uint64",
4016        "internalType": "uint64"
4017      }
4018    ],
4019    "outputs": [
4020      {
4021        "name": "",
4022        "type": "bool",
4023        "internalType": "bool"
4024      }
4025    ],
4026    "stateMutability": "view"
4027  },
4028  {
4029    "type": "function",
4030    "name": "isGtEpochRoot",
4031    "inputs": [
4032      {
4033        "name": "blockHeight",
4034        "type": "uint64",
4035        "internalType": "uint64"
4036      }
4037    ],
4038    "outputs": [
4039      {
4040        "name": "",
4041        "type": "bool",
4042        "internalType": "bool"
4043      }
4044    ],
4045    "stateMutability": "view"
4046  },
4047  {
4048    "type": "function",
4049    "name": "isPermissionedProverEnabled",
4050    "inputs": [],
4051    "outputs": [
4052      {
4053        "name": "",
4054        "type": "bool",
4055        "internalType": "bool"
4056      }
4057    ],
4058    "stateMutability": "view"
4059  },
4060  {
4061    "type": "function",
4062    "name": "lagOverEscapeHatchThreshold",
4063    "inputs": [
4064      {
4065        "name": "blockNumber",
4066        "type": "uint256",
4067        "internalType": "uint256"
4068      },
4069      {
4070        "name": "threshold",
4071        "type": "uint256",
4072        "internalType": "uint256"
4073      }
4074    ],
4075    "outputs": [
4076      {
4077        "name": "",
4078        "type": "bool",
4079        "internalType": "bool"
4080      }
4081    ],
4082    "stateMutability": "view"
4083  },
4084  {
4085    "type": "function",
4086    "name": "newFinalizedState",
4087    "inputs": [
4088      {
4089        "name": "",
4090        "type": "tuple",
4091        "internalType": "struct LightClient.LightClientState",
4092        "components": [
4093          {
4094            "name": "viewNum",
4095            "type": "uint64",
4096            "internalType": "uint64"
4097          },
4098          {
4099            "name": "blockHeight",
4100            "type": "uint64",
4101            "internalType": "uint64"
4102          },
4103          {
4104            "name": "blockCommRoot",
4105            "type": "uint256",
4106            "internalType": "BN254.ScalarField"
4107          }
4108        ]
4109      },
4110      {
4111        "name": "",
4112        "type": "tuple",
4113        "internalType": "struct IPlonkVerifier.PlonkProof",
4114        "components": [
4115          {
4116            "name": "wire0",
4117            "type": "tuple",
4118            "internalType": "struct BN254.G1Point",
4119            "components": [
4120              {
4121                "name": "x",
4122                "type": "uint256",
4123                "internalType": "BN254.BaseField"
4124              },
4125              {
4126                "name": "y",
4127                "type": "uint256",
4128                "internalType": "BN254.BaseField"
4129              }
4130            ]
4131          },
4132          {
4133            "name": "wire1",
4134            "type": "tuple",
4135            "internalType": "struct BN254.G1Point",
4136            "components": [
4137              {
4138                "name": "x",
4139                "type": "uint256",
4140                "internalType": "BN254.BaseField"
4141              },
4142              {
4143                "name": "y",
4144                "type": "uint256",
4145                "internalType": "BN254.BaseField"
4146              }
4147            ]
4148          },
4149          {
4150            "name": "wire2",
4151            "type": "tuple",
4152            "internalType": "struct BN254.G1Point",
4153            "components": [
4154              {
4155                "name": "x",
4156                "type": "uint256",
4157                "internalType": "BN254.BaseField"
4158              },
4159              {
4160                "name": "y",
4161                "type": "uint256",
4162                "internalType": "BN254.BaseField"
4163              }
4164            ]
4165          },
4166          {
4167            "name": "wire3",
4168            "type": "tuple",
4169            "internalType": "struct BN254.G1Point",
4170            "components": [
4171              {
4172                "name": "x",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              },
4176              {
4177                "name": "y",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              }
4181            ]
4182          },
4183          {
4184            "name": "wire4",
4185            "type": "tuple",
4186            "internalType": "struct BN254.G1Point",
4187            "components": [
4188              {
4189                "name": "x",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              },
4193              {
4194                "name": "y",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              }
4198            ]
4199          },
4200          {
4201            "name": "prodPerm",
4202            "type": "tuple",
4203            "internalType": "struct BN254.G1Point",
4204            "components": [
4205              {
4206                "name": "x",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              },
4210              {
4211                "name": "y",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              }
4215            ]
4216          },
4217          {
4218            "name": "split0",
4219            "type": "tuple",
4220            "internalType": "struct BN254.G1Point",
4221            "components": [
4222              {
4223                "name": "x",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              },
4227              {
4228                "name": "y",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              }
4232            ]
4233          },
4234          {
4235            "name": "split1",
4236            "type": "tuple",
4237            "internalType": "struct BN254.G1Point",
4238            "components": [
4239              {
4240                "name": "x",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              },
4244              {
4245                "name": "y",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              }
4249            ]
4250          },
4251          {
4252            "name": "split2",
4253            "type": "tuple",
4254            "internalType": "struct BN254.G1Point",
4255            "components": [
4256              {
4257                "name": "x",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              },
4261              {
4262                "name": "y",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              }
4266            ]
4267          },
4268          {
4269            "name": "split3",
4270            "type": "tuple",
4271            "internalType": "struct BN254.G1Point",
4272            "components": [
4273              {
4274                "name": "x",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              },
4278              {
4279                "name": "y",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              }
4283            ]
4284          },
4285          {
4286            "name": "split4",
4287            "type": "tuple",
4288            "internalType": "struct BN254.G1Point",
4289            "components": [
4290              {
4291                "name": "x",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              },
4295              {
4296                "name": "y",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              }
4300            ]
4301          },
4302          {
4303            "name": "zeta",
4304            "type": "tuple",
4305            "internalType": "struct BN254.G1Point",
4306            "components": [
4307              {
4308                "name": "x",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              },
4312              {
4313                "name": "y",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              }
4317            ]
4318          },
4319          {
4320            "name": "zetaOmega",
4321            "type": "tuple",
4322            "internalType": "struct BN254.G1Point",
4323            "components": [
4324              {
4325                "name": "x",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              },
4329              {
4330                "name": "y",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              }
4334            ]
4335          },
4336          {
4337            "name": "wireEval0",
4338            "type": "uint256",
4339            "internalType": "BN254.ScalarField"
4340          },
4341          {
4342            "name": "wireEval1",
4343            "type": "uint256",
4344            "internalType": "BN254.ScalarField"
4345          },
4346          {
4347            "name": "wireEval2",
4348            "type": "uint256",
4349            "internalType": "BN254.ScalarField"
4350          },
4351          {
4352            "name": "wireEval3",
4353            "type": "uint256",
4354            "internalType": "BN254.ScalarField"
4355          },
4356          {
4357            "name": "wireEval4",
4358            "type": "uint256",
4359            "internalType": "BN254.ScalarField"
4360          },
4361          {
4362            "name": "sigmaEval0",
4363            "type": "uint256",
4364            "internalType": "BN254.ScalarField"
4365          },
4366          {
4367            "name": "sigmaEval1",
4368            "type": "uint256",
4369            "internalType": "BN254.ScalarField"
4370          },
4371          {
4372            "name": "sigmaEval2",
4373            "type": "uint256",
4374            "internalType": "BN254.ScalarField"
4375          },
4376          {
4377            "name": "sigmaEval3",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          },
4381          {
4382            "name": "prodPermZetaOmegaEval",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          }
4386        ]
4387      }
4388    ],
4389    "outputs": [],
4390    "stateMutability": "pure"
4391  },
4392  {
4393    "type": "function",
4394    "name": "newFinalizedState",
4395    "inputs": [
4396      {
4397        "name": "newState",
4398        "type": "tuple",
4399        "internalType": "struct LightClient.LightClientState",
4400        "components": [
4401          {
4402            "name": "viewNum",
4403            "type": "uint64",
4404            "internalType": "uint64"
4405          },
4406          {
4407            "name": "blockHeight",
4408            "type": "uint64",
4409            "internalType": "uint64"
4410          },
4411          {
4412            "name": "blockCommRoot",
4413            "type": "uint256",
4414            "internalType": "BN254.ScalarField"
4415          }
4416        ]
4417      },
4418      {
4419        "name": "nextStakeTable",
4420        "type": "tuple",
4421        "internalType": "struct LightClient.StakeTableState",
4422        "components": [
4423          {
4424            "name": "threshold",
4425            "type": "uint256",
4426            "internalType": "uint256"
4427          },
4428          {
4429            "name": "blsKeyComm",
4430            "type": "uint256",
4431            "internalType": "BN254.ScalarField"
4432          },
4433          {
4434            "name": "schnorrKeyComm",
4435            "type": "uint256",
4436            "internalType": "BN254.ScalarField"
4437          },
4438          {
4439            "name": "amountComm",
4440            "type": "uint256",
4441            "internalType": "BN254.ScalarField"
4442          }
4443        ]
4444      },
4445      {
4446        "name": "proof",
4447        "type": "tuple",
4448        "internalType": "struct IPlonkVerifier.PlonkProof",
4449        "components": [
4450          {
4451            "name": "wire0",
4452            "type": "tuple",
4453            "internalType": "struct BN254.G1Point",
4454            "components": [
4455              {
4456                "name": "x",
4457                "type": "uint256",
4458                "internalType": "BN254.BaseField"
4459              },
4460              {
4461                "name": "y",
4462                "type": "uint256",
4463                "internalType": "BN254.BaseField"
4464              }
4465            ]
4466          },
4467          {
4468            "name": "wire1",
4469            "type": "tuple",
4470            "internalType": "struct BN254.G1Point",
4471            "components": [
4472              {
4473                "name": "x",
4474                "type": "uint256",
4475                "internalType": "BN254.BaseField"
4476              },
4477              {
4478                "name": "y",
4479                "type": "uint256",
4480                "internalType": "BN254.BaseField"
4481              }
4482            ]
4483          },
4484          {
4485            "name": "wire2",
4486            "type": "tuple",
4487            "internalType": "struct BN254.G1Point",
4488            "components": [
4489              {
4490                "name": "x",
4491                "type": "uint256",
4492                "internalType": "BN254.BaseField"
4493              },
4494              {
4495                "name": "y",
4496                "type": "uint256",
4497                "internalType": "BN254.BaseField"
4498              }
4499            ]
4500          },
4501          {
4502            "name": "wire3",
4503            "type": "tuple",
4504            "internalType": "struct BN254.G1Point",
4505            "components": [
4506              {
4507                "name": "x",
4508                "type": "uint256",
4509                "internalType": "BN254.BaseField"
4510              },
4511              {
4512                "name": "y",
4513                "type": "uint256",
4514                "internalType": "BN254.BaseField"
4515              }
4516            ]
4517          },
4518          {
4519            "name": "wire4",
4520            "type": "tuple",
4521            "internalType": "struct BN254.G1Point",
4522            "components": [
4523              {
4524                "name": "x",
4525                "type": "uint256",
4526                "internalType": "BN254.BaseField"
4527              },
4528              {
4529                "name": "y",
4530                "type": "uint256",
4531                "internalType": "BN254.BaseField"
4532              }
4533            ]
4534          },
4535          {
4536            "name": "prodPerm",
4537            "type": "tuple",
4538            "internalType": "struct BN254.G1Point",
4539            "components": [
4540              {
4541                "name": "x",
4542                "type": "uint256",
4543                "internalType": "BN254.BaseField"
4544              },
4545              {
4546                "name": "y",
4547                "type": "uint256",
4548                "internalType": "BN254.BaseField"
4549              }
4550            ]
4551          },
4552          {
4553            "name": "split0",
4554            "type": "tuple",
4555            "internalType": "struct BN254.G1Point",
4556            "components": [
4557              {
4558                "name": "x",
4559                "type": "uint256",
4560                "internalType": "BN254.BaseField"
4561              },
4562              {
4563                "name": "y",
4564                "type": "uint256",
4565                "internalType": "BN254.BaseField"
4566              }
4567            ]
4568          },
4569          {
4570            "name": "split1",
4571            "type": "tuple",
4572            "internalType": "struct BN254.G1Point",
4573            "components": [
4574              {
4575                "name": "x",
4576                "type": "uint256",
4577                "internalType": "BN254.BaseField"
4578              },
4579              {
4580                "name": "y",
4581                "type": "uint256",
4582                "internalType": "BN254.BaseField"
4583              }
4584            ]
4585          },
4586          {
4587            "name": "split2",
4588            "type": "tuple",
4589            "internalType": "struct BN254.G1Point",
4590            "components": [
4591              {
4592                "name": "x",
4593                "type": "uint256",
4594                "internalType": "BN254.BaseField"
4595              },
4596              {
4597                "name": "y",
4598                "type": "uint256",
4599                "internalType": "BN254.BaseField"
4600              }
4601            ]
4602          },
4603          {
4604            "name": "split3",
4605            "type": "tuple",
4606            "internalType": "struct BN254.G1Point",
4607            "components": [
4608              {
4609                "name": "x",
4610                "type": "uint256",
4611                "internalType": "BN254.BaseField"
4612              },
4613              {
4614                "name": "y",
4615                "type": "uint256",
4616                "internalType": "BN254.BaseField"
4617              }
4618            ]
4619          },
4620          {
4621            "name": "split4",
4622            "type": "tuple",
4623            "internalType": "struct BN254.G1Point",
4624            "components": [
4625              {
4626                "name": "x",
4627                "type": "uint256",
4628                "internalType": "BN254.BaseField"
4629              },
4630              {
4631                "name": "y",
4632                "type": "uint256",
4633                "internalType": "BN254.BaseField"
4634              }
4635            ]
4636          },
4637          {
4638            "name": "zeta",
4639            "type": "tuple",
4640            "internalType": "struct BN254.G1Point",
4641            "components": [
4642              {
4643                "name": "x",
4644                "type": "uint256",
4645                "internalType": "BN254.BaseField"
4646              },
4647              {
4648                "name": "y",
4649                "type": "uint256",
4650                "internalType": "BN254.BaseField"
4651              }
4652            ]
4653          },
4654          {
4655            "name": "zetaOmega",
4656            "type": "tuple",
4657            "internalType": "struct BN254.G1Point",
4658            "components": [
4659              {
4660                "name": "x",
4661                "type": "uint256",
4662                "internalType": "BN254.BaseField"
4663              },
4664              {
4665                "name": "y",
4666                "type": "uint256",
4667                "internalType": "BN254.BaseField"
4668              }
4669            ]
4670          },
4671          {
4672            "name": "wireEval0",
4673            "type": "uint256",
4674            "internalType": "BN254.ScalarField"
4675          },
4676          {
4677            "name": "wireEval1",
4678            "type": "uint256",
4679            "internalType": "BN254.ScalarField"
4680          },
4681          {
4682            "name": "wireEval2",
4683            "type": "uint256",
4684            "internalType": "BN254.ScalarField"
4685          },
4686          {
4687            "name": "wireEval3",
4688            "type": "uint256",
4689            "internalType": "BN254.ScalarField"
4690          },
4691          {
4692            "name": "wireEval4",
4693            "type": "uint256",
4694            "internalType": "BN254.ScalarField"
4695          },
4696          {
4697            "name": "sigmaEval0",
4698            "type": "uint256",
4699            "internalType": "BN254.ScalarField"
4700          },
4701          {
4702            "name": "sigmaEval1",
4703            "type": "uint256",
4704            "internalType": "BN254.ScalarField"
4705          },
4706          {
4707            "name": "sigmaEval2",
4708            "type": "uint256",
4709            "internalType": "BN254.ScalarField"
4710          },
4711          {
4712            "name": "sigmaEval3",
4713            "type": "uint256",
4714            "internalType": "BN254.ScalarField"
4715          },
4716          {
4717            "name": "prodPermZetaOmegaEval",
4718            "type": "uint256",
4719            "internalType": "BN254.ScalarField"
4720          }
4721        ]
4722      }
4723    ],
4724    "outputs": [],
4725    "stateMutability": "nonpayable"
4726  },
4727  {
4728    "type": "function",
4729    "name": "owner",
4730    "inputs": [],
4731    "outputs": [
4732      {
4733        "name": "",
4734        "type": "address",
4735        "internalType": "address"
4736      }
4737    ],
4738    "stateMutability": "view"
4739  },
4740  {
4741    "type": "function",
4742    "name": "permissionedProver",
4743    "inputs": [],
4744    "outputs": [
4745      {
4746        "name": "",
4747        "type": "address",
4748        "internalType": "address"
4749      }
4750    ],
4751    "stateMutability": "view"
4752  },
4753  {
4754    "type": "function",
4755    "name": "proxiableUUID",
4756    "inputs": [],
4757    "outputs": [
4758      {
4759        "name": "",
4760        "type": "bytes32",
4761        "internalType": "bytes32"
4762      }
4763    ],
4764    "stateMutability": "view"
4765  },
4766  {
4767    "type": "function",
4768    "name": "renounceOwnership",
4769    "inputs": [],
4770    "outputs": [],
4771    "stateMutability": "nonpayable"
4772  },
4773  {
4774    "type": "function",
4775    "name": "setBlocksPerEpoch",
4776    "inputs": [
4777      {
4778        "name": "newBlocksPerEpoch",
4779        "type": "uint64",
4780        "internalType": "uint64"
4781      }
4782    ],
4783    "outputs": [],
4784    "stateMutability": "nonpayable"
4785  },
4786  {
4787    "type": "function",
4788    "name": "setFinalizedState",
4789    "inputs": [
4790      {
4791        "name": "state",
4792        "type": "tuple",
4793        "internalType": "struct LightClient.LightClientState",
4794        "components": [
4795          {
4796            "name": "viewNum",
4797            "type": "uint64",
4798            "internalType": "uint64"
4799          },
4800          {
4801            "name": "blockHeight",
4802            "type": "uint64",
4803            "internalType": "uint64"
4804          },
4805          {
4806            "name": "blockCommRoot",
4807            "type": "uint256",
4808            "internalType": "BN254.ScalarField"
4809          }
4810        ]
4811      }
4812    ],
4813    "outputs": [],
4814    "stateMutability": "nonpayable"
4815  },
4816  {
4817    "type": "function",
4818    "name": "setHotShotDownSince",
4819    "inputs": [
4820      {
4821        "name": "l1Height",
4822        "type": "uint256",
4823        "internalType": "uint256"
4824      }
4825    ],
4826    "outputs": [],
4827    "stateMutability": "nonpayable"
4828  },
4829  {
4830    "type": "function",
4831    "name": "setHotShotUp",
4832    "inputs": [],
4833    "outputs": [],
4834    "stateMutability": "nonpayable"
4835  },
4836  {
4837    "type": "function",
4838    "name": "setPermissionedProver",
4839    "inputs": [
4840      {
4841        "name": "prover",
4842        "type": "address",
4843        "internalType": "address"
4844      }
4845    ],
4846    "outputs": [],
4847    "stateMutability": "nonpayable"
4848  },
4849  {
4850    "type": "function",
4851    "name": "setStateHistory",
4852    "inputs": [
4853      {
4854        "name": "_stateHistoryCommitments",
4855        "type": "tuple[]",
4856        "internalType": "struct LightClient.StateHistoryCommitment[]",
4857        "components": [
4858          {
4859            "name": "l1BlockHeight",
4860            "type": "uint64",
4861            "internalType": "uint64"
4862          },
4863          {
4864            "name": "l1BlockTimestamp",
4865            "type": "uint64",
4866            "internalType": "uint64"
4867          },
4868          {
4869            "name": "hotShotBlockHeight",
4870            "type": "uint64",
4871            "internalType": "uint64"
4872          },
4873          {
4874            "name": "hotShotBlockCommRoot",
4875            "type": "uint256",
4876            "internalType": "BN254.ScalarField"
4877          }
4878        ]
4879      }
4880    ],
4881    "outputs": [],
4882    "stateMutability": "nonpayable"
4883  },
4884  {
4885    "type": "function",
4886    "name": "setStateHistoryRetentionPeriod",
4887    "inputs": [
4888      {
4889        "name": "historySeconds",
4890        "type": "uint32",
4891        "internalType": "uint32"
4892      }
4893    ],
4894    "outputs": [],
4895    "stateMutability": "nonpayable"
4896  },
4897  {
4898    "type": "function",
4899    "name": "setVotingStakeTableState",
4900    "inputs": [
4901      {
4902        "name": "stake",
4903        "type": "tuple",
4904        "internalType": "struct LightClient.StakeTableState",
4905        "components": [
4906          {
4907            "name": "threshold",
4908            "type": "uint256",
4909            "internalType": "uint256"
4910          },
4911          {
4912            "name": "blsKeyComm",
4913            "type": "uint256",
4914            "internalType": "BN254.ScalarField"
4915          },
4916          {
4917            "name": "schnorrKeyComm",
4918            "type": "uint256",
4919            "internalType": "BN254.ScalarField"
4920          },
4921          {
4922            "name": "amountComm",
4923            "type": "uint256",
4924            "internalType": "BN254.ScalarField"
4925          }
4926        ]
4927      }
4928    ],
4929    "outputs": [],
4930    "stateMutability": "nonpayable"
4931  },
4932  {
4933    "type": "function",
4934    "name": "setstateHistoryRetentionPeriod",
4935    "inputs": [
4936      {
4937        "name": "historySeconds",
4938        "type": "uint32",
4939        "internalType": "uint32"
4940      }
4941    ],
4942    "outputs": [],
4943    "stateMutability": "nonpayable"
4944  },
4945  {
4946    "type": "function",
4947    "name": "stateHistoryCommitments",
4948    "inputs": [
4949      {
4950        "name": "",
4951        "type": "uint256",
4952        "internalType": "uint256"
4953      }
4954    ],
4955    "outputs": [
4956      {
4957        "name": "l1BlockHeight",
4958        "type": "uint64",
4959        "internalType": "uint64"
4960      },
4961      {
4962        "name": "l1BlockTimestamp",
4963        "type": "uint64",
4964        "internalType": "uint64"
4965      },
4966      {
4967        "name": "hotShotBlockHeight",
4968        "type": "uint64",
4969        "internalType": "uint64"
4970      },
4971      {
4972        "name": "hotShotBlockCommRoot",
4973        "type": "uint256",
4974        "internalType": "BN254.ScalarField"
4975      }
4976    ],
4977    "stateMutability": "view"
4978  },
4979  {
4980    "type": "function",
4981    "name": "stateHistoryFirstIndex",
4982    "inputs": [],
4983    "outputs": [
4984      {
4985        "name": "",
4986        "type": "uint64",
4987        "internalType": "uint64"
4988      }
4989    ],
4990    "stateMutability": "view"
4991  },
4992  {
4993    "type": "function",
4994    "name": "stateHistoryRetentionPeriod",
4995    "inputs": [],
4996    "outputs": [
4997      {
4998        "name": "",
4999        "type": "uint32",
5000        "internalType": "uint32"
5001      }
5002    ],
5003    "stateMutability": "view"
5004  },
5005  {
5006    "type": "function",
5007    "name": "transferOwnership",
5008    "inputs": [
5009      {
5010        "name": "newOwner",
5011        "type": "address",
5012        "internalType": "address"
5013      }
5014    ],
5015    "outputs": [],
5016    "stateMutability": "nonpayable"
5017  },
5018  {
5019    "type": "function",
5020    "name": "updateEpochStartBlock",
5021    "inputs": [
5022      {
5023        "name": "newEpochStartBlock",
5024        "type": "uint64",
5025        "internalType": "uint64"
5026      }
5027    ],
5028    "outputs": [],
5029    "stateMutability": "nonpayable"
5030  },
5031  {
5032    "type": "function",
5033    "name": "upgradeToAndCall",
5034    "inputs": [
5035      {
5036        "name": "newImplementation",
5037        "type": "address",
5038        "internalType": "address"
5039      },
5040      {
5041        "name": "data",
5042        "type": "bytes",
5043        "internalType": "bytes"
5044      }
5045    ],
5046    "outputs": [],
5047    "stateMutability": "payable"
5048  },
5049  {
5050    "type": "function",
5051    "name": "votingStakeTableState",
5052    "inputs": [],
5053    "outputs": [
5054      {
5055        "name": "threshold",
5056        "type": "uint256",
5057        "internalType": "uint256"
5058      },
5059      {
5060        "name": "blsKeyComm",
5061        "type": "uint256",
5062        "internalType": "BN254.ScalarField"
5063      },
5064      {
5065        "name": "schnorrKeyComm",
5066        "type": "uint256",
5067        "internalType": "BN254.ScalarField"
5068      },
5069      {
5070        "name": "amountComm",
5071        "type": "uint256",
5072        "internalType": "BN254.ScalarField"
5073      }
5074    ],
5075    "stateMutability": "view"
5076  },
5077  {
5078    "type": "event",
5079    "name": "Initialized",
5080    "inputs": [
5081      {
5082        "name": "version",
5083        "type": "uint64",
5084        "indexed": false,
5085        "internalType": "uint64"
5086      }
5087    ],
5088    "anonymous": false
5089  },
5090  {
5091    "type": "event",
5092    "name": "NewEpoch",
5093    "inputs": [
5094      {
5095        "name": "epoch",
5096        "type": "uint64",
5097        "indexed": false,
5098        "internalType": "uint64"
5099      }
5100    ],
5101    "anonymous": false
5102  },
5103  {
5104    "type": "event",
5105    "name": "NewState",
5106    "inputs": [
5107      {
5108        "name": "viewNum",
5109        "type": "uint64",
5110        "indexed": true,
5111        "internalType": "uint64"
5112      },
5113      {
5114        "name": "blockHeight",
5115        "type": "uint64",
5116        "indexed": true,
5117        "internalType": "uint64"
5118      },
5119      {
5120        "name": "blockCommRoot",
5121        "type": "uint256",
5122        "indexed": false,
5123        "internalType": "BN254.ScalarField"
5124      }
5125    ],
5126    "anonymous": false
5127  },
5128  {
5129    "type": "event",
5130    "name": "OwnershipTransferred",
5131    "inputs": [
5132      {
5133        "name": "previousOwner",
5134        "type": "address",
5135        "indexed": true,
5136        "internalType": "address"
5137      },
5138      {
5139        "name": "newOwner",
5140        "type": "address",
5141        "indexed": true,
5142        "internalType": "address"
5143      }
5144    ],
5145    "anonymous": false
5146  },
5147  {
5148    "type": "event",
5149    "name": "PermissionedProverNotRequired",
5150    "inputs": [],
5151    "anonymous": false
5152  },
5153  {
5154    "type": "event",
5155    "name": "PermissionedProverRequired",
5156    "inputs": [
5157      {
5158        "name": "permissionedProver",
5159        "type": "address",
5160        "indexed": false,
5161        "internalType": "address"
5162      }
5163    ],
5164    "anonymous": false
5165  },
5166  {
5167    "type": "event",
5168    "name": "Upgrade",
5169    "inputs": [
5170      {
5171        "name": "implementation",
5172        "type": "address",
5173        "indexed": false,
5174        "internalType": "address"
5175      }
5176    ],
5177    "anonymous": false
5178  },
5179  {
5180    "type": "event",
5181    "name": "Upgraded",
5182    "inputs": [
5183      {
5184        "name": "implementation",
5185        "type": "address",
5186        "indexed": true,
5187        "internalType": "address"
5188      }
5189    ],
5190    "anonymous": false
5191  },
5192  {
5193    "type": "error",
5194    "name": "AddressEmptyCode",
5195    "inputs": [
5196      {
5197        "name": "target",
5198        "type": "address",
5199        "internalType": "address"
5200      }
5201    ]
5202  },
5203  {
5204    "type": "error",
5205    "name": "DeprecatedApi",
5206    "inputs": []
5207  },
5208  {
5209    "type": "error",
5210    "name": "ERC1967InvalidImplementation",
5211    "inputs": [
5212      {
5213        "name": "implementation",
5214        "type": "address",
5215        "internalType": "address"
5216      }
5217    ]
5218  },
5219  {
5220    "type": "error",
5221    "name": "ERC1967NonPayable",
5222    "inputs": []
5223  },
5224  {
5225    "type": "error",
5226    "name": "FailedInnerCall",
5227    "inputs": []
5228  },
5229  {
5230    "type": "error",
5231    "name": "InsufficientSnapshotHistory",
5232    "inputs": []
5233  },
5234  {
5235    "type": "error",
5236    "name": "InvalidAddress",
5237    "inputs": []
5238  },
5239  {
5240    "type": "error",
5241    "name": "InvalidArgs",
5242    "inputs": []
5243  },
5244  {
5245    "type": "error",
5246    "name": "InvalidHotShotBlockForCommitmentCheck",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "InvalidInitialization",
5252    "inputs": []
5253  },
5254  {
5255    "type": "error",
5256    "name": "InvalidMaxStateHistory",
5257    "inputs": []
5258  },
5259  {
5260    "type": "error",
5261    "name": "InvalidProof",
5262    "inputs": []
5263  },
5264  {
5265    "type": "error",
5266    "name": "InvalidScalar",
5267    "inputs": []
5268  },
5269  {
5270    "type": "error",
5271    "name": "MissingEpochRootUpdate",
5272    "inputs": []
5273  },
5274  {
5275    "type": "error",
5276    "name": "NoChangeRequired",
5277    "inputs": []
5278  },
5279  {
5280    "type": "error",
5281    "name": "NotInitializing",
5282    "inputs": []
5283  },
5284  {
5285    "type": "error",
5286    "name": "OutdatedState",
5287    "inputs": []
5288  },
5289  {
5290    "type": "error",
5291    "name": "OwnableInvalidOwner",
5292    "inputs": [
5293      {
5294        "name": "owner",
5295        "type": "address",
5296        "internalType": "address"
5297      }
5298    ]
5299  },
5300  {
5301    "type": "error",
5302    "name": "OwnableUnauthorizedAccount",
5303    "inputs": [
5304      {
5305        "name": "account",
5306        "type": "address",
5307        "internalType": "address"
5308      }
5309    ]
5310  },
5311  {
5312    "type": "error",
5313    "name": "OwnershipCannotBeRenounced",
5314    "inputs": []
5315  },
5316  {
5317    "type": "error",
5318    "name": "ProverNotPermissioned",
5319    "inputs": []
5320  },
5321  {
5322    "type": "error",
5323    "name": "UUPSUnauthorizedCallContext",
5324    "inputs": []
5325  },
5326  {
5327    "type": "error",
5328    "name": "UUPSUnsupportedProxiableUUID",
5329    "inputs": [
5330      {
5331        "name": "slot",
5332        "type": "bytes32",
5333        "internalType": "bytes32"
5334      }
5335    ]
5336  },
5337  {
5338    "type": "error",
5339    "name": "WrongStakeTableUsed",
5340    "inputs": []
5341  }
5342]
5343```*/
5344#[allow(
5345    non_camel_case_types,
5346    non_snake_case,
5347    clippy::pub_underscore_fields,
5348    clippy::style,
5349    clippy::empty_structs_with_brackets
5350)]
5351pub mod LightClientV2Mock {
5352    use super::*;
5353    use alloy::sol_types as alloy_sol_types;
5354    /// The creation / init bytecode of the contract.
5355    ///
5356    /// ```text
5357    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161385d6100f95f395f8181611c7c01528181611ca50152611e22015261385d5ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a09565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a22565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a39565b34801561036f575f5ffd5b5061027761037e366004612c50565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f34565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c50565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a22565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c50565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c50565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f7b565b6111a6565b61027761055e366004612f94565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b5061027761059136600461307a565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613094565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a22565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d8565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f7b565b61177a565b3480156106ea575f5ffd5b506102776106f9366004613100565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613155565b34801561079b575f5ffd5b506102776107aa3660046130d8565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd36600461318a565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a4565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a09565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c4565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132d0565b6110fc9190613303565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613303565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613330565b600a546001600160401b0391821691611195911684613303565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f5160206138315f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef8383613330565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132d0565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132d0565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334f565b8154811061160457611604613362565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613362565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613362565b905f5260205f20906002020160010154600982815481106116cf576116cf613362565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613303565b6001600160401b03165f036117655761175e8284613376565b90506111a0565b61176f8284613376565b61175e9060016132d0565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334f565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613362565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f5160206138315f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a3565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f5160206138315f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129ab565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359c565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137bc565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613362565b5f91825260209091206002909102015461208290600160401b90046001600160401b031684613330565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613362565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137db565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613362565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334f565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613362565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613362565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613805565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334f565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f5160206138315f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612633919061381a565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129ca565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129ef5780546001600160c01b03191681555f60018201556002016129cb565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a19575f5ffd5b611b25826129f3565b5f60208284031215612a32575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a6b604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c60575f5ffd5b611b2582612c3a565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ca057612ca0612c69565b60405290565b604051608081016001600160401b0381118282101715612ca057612ca0612c69565b604051601f8201601f191681016001600160401b0381118282101715612cf057612cf0612c69565b604052919050565b5f60608284031215612d08575f5ffd5b604051606081016001600160401b0381118282101715612d2a57612d2a612c69565b604052905080612d3983612c3a565b8152612d4760208401612c3a565b6020820152604092830135920191909152919050565b5f60408284031215612d6d575f5ffd5b604080519081016001600160401b0381118282101715612d8f57612d8f612c69565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dba575f5ffd5b612dc2612c7d565b9050612dce8383612d5d565b8152612ddd8360408401612d5d565b6020820152612def8360808401612d5d565b6040820152612e018360c08401612d5d565b6060820152612e14836101008401612d5d565b6080820152612e27836101408401612d5d565b60a0820152612e3a836101808401612d5d565b60c0820152612e4d836101c08401612d5d565b60e0820152612e60836102008401612d5d565b610100820152612e74836102408401612d5d565b610120820152612e88836102808401612d5d565b610140820152612e9c836102c08401612d5d565b610160820152612eb0836103008401612d5d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f46575f5ffd5b612f508484612cf8565b9150612f5f8460608501612da9565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f8b575f5ffd5b611b2582612f68565b5f5f60408385031215612fa5575f5ffd5b612fae836129f3565b915060208301356001600160401b03811115612fc8575f5ffd5b8301601f81018513612fd8575f5ffd5b80356001600160401b03811115612ff157612ff1612c69565b613004601f8201601f1916602001612cc8565b818152866020838501011115613018575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613047575f5ffd5b61304f612ca6565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f6080828403121561308a575f5ffd5b611b258383613037565b5f5f5f61056084860312156130a7575f5ffd5b6130b18585612cf8565b92506130c08560608601613037565b91506130cf8560e08601612da9565b90509250925092565b5f5f604083850312156130e9575f5ffd5b6130f283612c3a565b9150612f5f60208401612c3a565b5f5f5f5f6101208587031215613114575f5ffd5b61311e8686612cf8565b935061312d8660608701613037565b925061313b60e08601612f68565b915061314a61010086016129f3565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561319a575f5ffd5b611b258383612cf8565b5f5f604083850312156131b5575f5ffd5b50508035926020909101359150565b5f602082840312156131d4575f5ffd5b81356001600160401b038111156131e9575f5ffd5b8201601f810184136131f9575f5ffd5b80356001600160401b0381111561321257613212612c69565b61322160208260051b01612cc8565b8082825260208201915060208360071b850101925086831115613242575f5ffd5b6020840193505b828410156132b25760808488031215613260575f5ffd5b613268612ca6565b61327185612c3a565b815261327f60208601612c3a565b602082015261329060408601612c3a565b6040820152606085810135908201528252608090930192602090910190613249565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132bc565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061331b5761331b6132ef565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132bc565b818103818111156111a0576111a06132bc565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338e5761338e6132ef565b806001600160401b0384160491505092915050565b5f602082840312156133b3575f5ffd5b5051919050565b805f5b600b8110156133dc5781518452602093840193909101906001016133bd565b50505050565b6133f782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135ce604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a66105008301856133ba565b6137b46106608301846133e2565b949350505050565b5f602082840312156137cc575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fc576137fc6132bc565b60010192915050565b5f81613813576138136132bc565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5358    /// ```
5359    #[rustfmt::skip]
5360    #[allow(clippy::all)]
5361    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5362        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[`\x80Qa8]a\0\xF9_9_\x81\x81a\x1C|\x01R\x81\x81a\x1C\xA5\x01Ra\x1E\"\x01Ra8]_\xF3\xFE`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a*\tV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\"V[a\t\xA7V[`@Qa\x02\xCD\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*9V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,PV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/4V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,PV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\"V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,PV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,PV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/{V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x94V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0zV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x94V[a\x12\x83V[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xB6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\"V[a\x15\xE0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xD8V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/{V[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\0V[a\x18\x03V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1UV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD8V[a\x19%V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1A\x91V[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x8AV[a\x1A\xB2V[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xA4V[a\x1A\xF9V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a*\tV[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC4V[a\x1BkV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@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\tRW`@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\t\xB6W_\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\t\xF8a'(V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1C\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x17\x0BV[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xD0V[a\x10\xFC\x91\x90a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a30V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1C\x16V[a\x11\xB7\x81a\x17zV[PV[a\x11\xC2a\x1CqV[a\x11\xCB\x82a\x1D\x15V[a\x11\xD5\x82\x82a\x1DVV[PPV[_a\x11\xE2a\x1E\x17V[P_Q` a81_9_Q\x90_R\x90V[a\x11\xFCa\x1C\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1C\x16V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\xA8WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xC6W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x12\xFFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\x1DW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13*\x83`@\x01Qa\x1E`V[a\x137\x82` \x01Qa\x1E`V[a\x13D\x82`@\x01Qa\x1E`V[a\x13Q\x82``\x01Qa\x1E`V[_a\x13Za\x15\xB6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13z\x91\x90`\x01`\x01`@\x1B\x03\x16a\x17\x0BV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xC5Wa\x13\xA7\x85` \x01Qa\x11\x11V[\x15a\x13\xC5W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\x14xW`\x02a\x13\xEF\x83\x83a30V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x16W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14!\x82`\x01a2\xD0V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14ZWP`\x06Ta\x14X\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14xW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x83\x85\x85\x85a\x1E\xA1V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x14\xE2WPa\x14\xE2\x85` \x01Qa\x10\xAFV[\x15a\x15LW\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x150\x82`\x01a2\xD0V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15WCB\x87a \x18V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x15\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xDB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x17\x0BV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xF4`\x01\x83a3OV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16CW`@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\x17\x04W\x84`\t\x82\x81T\x81\x10a\x16sWa\x16sa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xFCW`\t\x81\x81T\x81\x10a\x16\xACWa\x16\xACa3bV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3bV[\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\x16WV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17#WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17;WP`\x01a\x11\xA0V[a\x17E\x82\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3vV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3vV[a\x17^\x90`\x01a2\xD0V[a\x17\x82a\x1C\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\xA1WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xBFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xDDW`@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\x18GWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18bWP0;\x15[\x90P\x81\x15\x80\x15a\x18pWP\x80\x15[\x15a\x18\x8EW`@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\x18\xB8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xC1\x86a\"\x01V[a\x18\xC9a\"\x12V[a\x18\xD4\x89\x89\x89a\"\x1AV[\x83\x15a\x19\x1AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x19-a\x1C\x16V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x19vWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19\x94W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xDCW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1A%\x83\x85a\x17\x0BV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\nT_\x90a\x15\xDB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x17\x0BV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x18V[`\x0FT_\x90`\xFF\x16a\x1B\x14Wa\x1B\x0F\x83\x83a#FV[a\x1B%V[\x81`\x10T\x84a\x1B#\x91\x90a3OV[\x11[\x93\x92PPPV[a\x1B4a\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a$\x9EV[a\x1Bv`\t_a)\x8DV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B\x95Wa\x1B\x95a3bV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1BxV[3a\x1CH\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BYV[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\x1C\xF7WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xEB_Q` a81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x1Da\x1C\x16V[`@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\t\x9CV[\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\x1D\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\xAD\x91\x81\x01\x90a3\xA3V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_9_Q\x90_R\x81\x14a\x1E\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BYV[a\x1E\x12\x83\x83a%\x0EV[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\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1E\xAAa\t\xF0V[\x90Pa\x1E\xB4a)\xABV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1F$WPa\x1F$\x85` \x01Qa\x10\xAFV[\x15a\x1FVW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1FzV[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1F\xB5\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x9CV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\xD0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xF4\x91\x90a7\xBCV[a \x11W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \x8DWP`\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 XWa Xa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a30V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a! W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \xBAWa \xBAa3bV[_\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 \xFA\x83a7\xDBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a\"\ta%cV[a\x11\xB7\x81a%\xACV[a\x12`a%cV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\">WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"KWP` \x82\x01Q\x15[\x80a\"XWP`@\x82\x01Q\x15[\x80a\"eWP``\x82\x01Q\x15[\x80a\"oWP\x81Q\x15[\x80a\"\x81WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\x95WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"\xB3W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a#WWP\x80\x15[\x80a#\xA1WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x85Wa#\x85a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a#\xBFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a#\xCD`\x01\x85a3OV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x05V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3OV[\x11\x97\x96PPPPPPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a%\x17\x82a%\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a%[Wa\x1E\x12\x82\x82a&\x17V[a\x11\xD5a&\x89V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B4a%cV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xE9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_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&3\x91\x90a8\x1AV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&kW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&pV[``\x91P[P\x91P\x91Pa&\x80\x85\x83\x83a&\xA8V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xB8Wa\x1B\x0F\x82a&\xFFV[\x81Q\x15\x80\x15a&\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BYV[P\x92\x91PPV[\x80Q\x15a'\x0FW\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'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a([`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a({`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xCAV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xEFW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xCBV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a\x1B%\x82a)\xF3V[_` \x82\x84\x03\x12\x15a*2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*k`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,`W__\xFD[a\x1B%\x82a,:V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xF0Wa,\xF0a,iV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x08W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-*Wa-*a,iV[`@R\x90P\x80a-9\x83a,:V[\x81Ra-G` \x84\x01a,:V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-mW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8FWa-\x8Fa,iV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xBAW__\xFD[a-\xC2a,}V[\x90Pa-\xCE\x83\x83a-]V[\x81Ra-\xDD\x83`@\x84\x01a-]V[` \x82\x01Ra-\xEF\x83`\x80\x84\x01a-]V[`@\x82\x01Ra.\x01\x83`\xC0\x84\x01a-]V[``\x82\x01Ra.\x14\x83a\x01\0\x84\x01a-]V[`\x80\x82\x01Ra.'\x83a\x01@\x84\x01a-]V[`\xA0\x82\x01Ra.:\x83a\x01\x80\x84\x01a-]V[`\xC0\x82\x01Ra.M\x83a\x01\xC0\x84\x01a-]V[`\xE0\x82\x01Ra.`\x83a\x02\0\x84\x01a-]V[a\x01\0\x82\x01Ra.t\x83a\x02@\x84\x01a-]V[a\x01 \x82\x01Ra.\x88\x83a\x02\x80\x84\x01a-]V[a\x01@\x82\x01Ra.\x9C\x83a\x02\xC0\x84\x01a-]V[a\x01`\x82\x01Ra.\xB0\x83a\x03\0\x84\x01a-]V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a/FW__\xFD[a/P\x84\x84a,\xF8V[\x91Pa/_\x84``\x85\x01a-\xA9V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x8BW__\xFD[a\x1B%\x82a/hV[__`@\x83\x85\x03\x12\x15a/\xA5W__\xFD[a/\xAE\x83a)\xF3V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xF1Wa/\xF1a,iV[a0\x04`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0GW__\xFD[a0Oa,\xA6V[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\x8AW__\xFD[a\x1B%\x83\x83a07V[___a\x05`\x84\x86\x03\x12\x15a0\xA7W__\xFD[a0\xB1\x85\x85a,\xF8V[\x92Pa0\xC0\x85``\x86\x01a07V[\x91Pa0\xCF\x85`\xE0\x86\x01a-\xA9V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE9W__\xFD[a0\xF2\x83a,:V[\x91Pa/_` \x84\x01a,:V[____a\x01 \x85\x87\x03\x12\x15a1\x14W__\xFD[a1\x1E\x86\x86a,\xF8V[\x93Pa1-\x86``\x87\x01a07V[\x92Pa1;`\xE0\x86\x01a/hV[\x91Pa1Ja\x01\0\x86\x01a)\xF3V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a1\x9AW__\xFD[a\x1B%\x83\x83a,\xF8V[__`@\x83\x85\x03\x12\x15a1\xB5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD4W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x12Wa2\x12a,iV[a2!` \x82`\x05\x1B\x01a,\xC8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2BW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB2W`\x80\x84\x88\x03\x12\x15a2`W__\xFD[a2ha,\xA6V[a2q\x85a,:V[\x81Ra2\x7F` \x86\x01a,:V[` \x82\x01Ra2\x90`@\x86\x01a,:V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2IV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x1BWa3\x1Ba2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8EWa3\x8Ea2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDCW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBDV[PPPPV[a3\xF7\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa5\xCE`@\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\x01Ra7\xA6a\x05\0\x83\x01\x85a3\xBAV[a7\xB4a\x06`\x83\x01\x84a3\xE2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCCW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFCWa7\xFCa2\xBCV[`\x01\x01\x92\x91PPV[_\x81a8\x13Wa8\x13a2\xBCV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
5363    );
5364    /// The runtime bytecode of the contract, as deployed on the network.
5365    ///
5366    /// ```text
5367    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a09565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a22565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a39565b34801561036f575f5ffd5b5061027761037e366004612c50565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f34565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c50565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a22565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c50565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c50565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f7b565b6111a6565b61027761055e366004612f94565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b5061027761059136600461307a565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613094565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a22565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d8565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f7b565b61177a565b3480156106ea575f5ffd5b506102776106f9366004613100565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613155565b34801561079b575f5ffd5b506102776107aa3660046130d8565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd36600461318a565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a4565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a09565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c4565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132d0565b6110fc9190613303565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613303565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613330565b600a546001600160401b0391821691611195911684613303565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f5160206138315f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef8383613330565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132d0565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132d0565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334f565b8154811061160457611604613362565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613362565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613362565b905f5260205f20906002020160010154600982815481106116cf576116cf613362565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613303565b6001600160401b03165f036117655761175e8284613376565b90506111a0565b61176f8284613376565b61175e9060016132d0565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334f565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613362565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f5160206138315f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a3565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f5160206138315f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129ab565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359c565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137bc565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613362565b5f91825260209091206002909102015461208290600160401b90046001600160401b031684613330565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613362565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137db565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613362565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334f565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613362565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613362565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613805565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334f565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f5160206138315f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612633919061381a565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129ca565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129ef5780546001600160c01b03191681555f60018201556002016129cb565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a19575f5ffd5b611b25826129f3565b5f60208284031215612a32575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a6b604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c60575f5ffd5b611b2582612c3a565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ca057612ca0612c69565b60405290565b604051608081016001600160401b0381118282101715612ca057612ca0612c69565b604051601f8201601f191681016001600160401b0381118282101715612cf057612cf0612c69565b604052919050565b5f60608284031215612d08575f5ffd5b604051606081016001600160401b0381118282101715612d2a57612d2a612c69565b604052905080612d3983612c3a565b8152612d4760208401612c3a565b6020820152604092830135920191909152919050565b5f60408284031215612d6d575f5ffd5b604080519081016001600160401b0381118282101715612d8f57612d8f612c69565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dba575f5ffd5b612dc2612c7d565b9050612dce8383612d5d565b8152612ddd8360408401612d5d565b6020820152612def8360808401612d5d565b6040820152612e018360c08401612d5d565b6060820152612e14836101008401612d5d565b6080820152612e27836101408401612d5d565b60a0820152612e3a836101808401612d5d565b60c0820152612e4d836101c08401612d5d565b60e0820152612e60836102008401612d5d565b610100820152612e74836102408401612d5d565b610120820152612e88836102808401612d5d565b610140820152612e9c836102c08401612d5d565b610160820152612eb0836103008401612d5d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f46575f5ffd5b612f508484612cf8565b9150612f5f8460608501612da9565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f8b575f5ffd5b611b2582612f68565b5f5f60408385031215612fa5575f5ffd5b612fae836129f3565b915060208301356001600160401b03811115612fc8575f5ffd5b8301601f81018513612fd8575f5ffd5b80356001600160401b03811115612ff157612ff1612c69565b613004601f8201601f1916602001612cc8565b818152866020838501011115613018575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613047575f5ffd5b61304f612ca6565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f6080828403121561308a575f5ffd5b611b258383613037565b5f5f5f61056084860312156130a7575f5ffd5b6130b18585612cf8565b92506130c08560608601613037565b91506130cf8560e08601612da9565b90509250925092565b5f5f604083850312156130e9575f5ffd5b6130f283612c3a565b9150612f5f60208401612c3a565b5f5f5f5f6101208587031215613114575f5ffd5b61311e8686612cf8565b935061312d8660608701613037565b925061313b60e08601612f68565b915061314a61010086016129f3565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561319a575f5ffd5b611b258383612cf8565b5f5f604083850312156131b5575f5ffd5b50508035926020909101359150565b5f602082840312156131d4575f5ffd5b81356001600160401b038111156131e9575f5ffd5b8201601f810184136131f9575f5ffd5b80356001600160401b0381111561321257613212612c69565b61322160208260051b01612cc8565b8082825260208201915060208360071b850101925086831115613242575f5ffd5b6020840193505b828410156132b25760808488031215613260575f5ffd5b613268612ca6565b61327185612c3a565b815261327f60208601612c3a565b602082015261329060408601612c3a565b6040820152606085810135908201528252608090930192602090910190613249565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132bc565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061331b5761331b6132ef565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132bc565b818103818111156111a0576111a06132bc565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338e5761338e6132ef565b806001600160401b0384160491505092915050565b5f602082840312156133b3575f5ffd5b5051919050565b805f5b600b8110156133dc5781518452602093840193909101906001016133bd565b50505050565b6133f782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135ce604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a66105008301856133ba565b6137b46106608301846133e2565b949350505050565b5f602082840312156137cc575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fc576137fc6132bc565b60010192915050565b5f81613813576138136132bc565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5368    /// ```
5369    #[rustfmt::skip]
5370    #[allow(clippy::all)]
5371    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5372        b"`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a*\tV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\"V[a\t\xA7V[`@Qa\x02\xCD\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*9V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,PV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/4V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,PV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\"V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,PV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,PV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/{V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x94V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0zV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x94V[a\x12\x83V[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xB6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\"V[a\x15\xE0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xD8V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/{V[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\0V[a\x18\x03V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1UV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD8V[a\x19%V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1A\x91V[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x8AV[a\x1A\xB2V[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xA4V[a\x1A\xF9V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a*\tV[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC4V[a\x1BkV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@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\tRW`@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\t\xB6W_\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\t\xF8a'(V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1C\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x17\x0BV[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xD0V[a\x10\xFC\x91\x90a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a30V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1C\x16V[a\x11\xB7\x81a\x17zV[PV[a\x11\xC2a\x1CqV[a\x11\xCB\x82a\x1D\x15V[a\x11\xD5\x82\x82a\x1DVV[PPV[_a\x11\xE2a\x1E\x17V[P_Q` a81_9_Q\x90_R\x90V[a\x11\xFCa\x1C\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1C\x16V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\xA8WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xC6W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x12\xFFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\x1DW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13*\x83`@\x01Qa\x1E`V[a\x137\x82` \x01Qa\x1E`V[a\x13D\x82`@\x01Qa\x1E`V[a\x13Q\x82``\x01Qa\x1E`V[_a\x13Za\x15\xB6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13z\x91\x90`\x01`\x01`@\x1B\x03\x16a\x17\x0BV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xC5Wa\x13\xA7\x85` \x01Qa\x11\x11V[\x15a\x13\xC5W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\x14xW`\x02a\x13\xEF\x83\x83a30V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x16W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14!\x82`\x01a2\xD0V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14ZWP`\x06Ta\x14X\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14xW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x83\x85\x85\x85a\x1E\xA1V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x14\xE2WPa\x14\xE2\x85` \x01Qa\x10\xAFV[\x15a\x15LW\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x150\x82`\x01a2\xD0V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15WCB\x87a \x18V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x15\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xDB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x17\x0BV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xF4`\x01\x83a3OV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16CW`@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\x17\x04W\x84`\t\x82\x81T\x81\x10a\x16sWa\x16sa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xFCW`\t\x81\x81T\x81\x10a\x16\xACWa\x16\xACa3bV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3bV[\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\x16WV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17#WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17;WP`\x01a\x11\xA0V[a\x17E\x82\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3vV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3vV[a\x17^\x90`\x01a2\xD0V[a\x17\x82a\x1C\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\xA1WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xBFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xDDW`@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\x18GWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18bWP0;\x15[\x90P\x81\x15\x80\x15a\x18pWP\x80\x15[\x15a\x18\x8EW`@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\x18\xB8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xC1\x86a\"\x01V[a\x18\xC9a\"\x12V[a\x18\xD4\x89\x89\x89a\"\x1AV[\x83\x15a\x19\x1AW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x19-a\x1C\x16V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x19vWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19\x94W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xDCW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1A%\x83\x85a\x17\x0BV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\nT_\x90a\x15\xDB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x17\x0BV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x18V[`\x0FT_\x90`\xFF\x16a\x1B\x14Wa\x1B\x0F\x83\x83a#FV[a\x1B%V[\x81`\x10T\x84a\x1B#\x91\x90a3OV[\x11[\x93\x92PPPV[a\x1B4a\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a$\x9EV[a\x1Bv`\t_a)\x8DV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B\x95Wa\x1B\x95a3bV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1BxV[3a\x1CH\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BYV[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\x1C\xF7WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xEB_Q` a81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x1Da\x1C\x16V[`@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\t\x9CV[\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\x1D\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\xAD\x91\x81\x01\x90a3\xA3V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_9_Q\x90_R\x81\x14a\x1E\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BYV[a\x1E\x12\x83\x83a%\x0EV[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\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1E\xAAa\t\xF0V[\x90Pa\x1E\xB4a)\xABV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1F$WPa\x1F$\x85` \x01Qa\x10\xAFV[\x15a\x1FVW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1FzV[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1F\xB5\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x9CV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\xD0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xF4\x91\x90a7\xBCV[a \x11W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \x8DWP`\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 XWa Xa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a30V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a! W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \xBAWa \xBAa3bV[_\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 \xFA\x83a7\xDBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a\"\ta%cV[a\x11\xB7\x81a%\xACV[a\x12`a%cV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\">WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"KWP` \x82\x01Q\x15[\x80a\"XWP`@\x82\x01Q\x15[\x80a\"eWP``\x82\x01Q\x15[\x80a\"oWP\x81Q\x15[\x80a\"\x81WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\x95WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"\xB3W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a#WWP\x80\x15[\x80a#\xA1WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x85Wa#\x85a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a#\xBFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a#\xCD`\x01\x85a3OV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x05V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3OV[\x11\x97\x96PPPPPPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a%\x17\x82a%\xB4V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a%[Wa\x1E\x12\x82\x82a&\x17V[a\x11\xD5a&\x89V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B4a%cV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xE9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_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&3\x91\x90a8\x1AV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&kW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&pV[``\x91P[P\x91P\x91Pa&\x80\x85\x83\x83a&\xA8V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xB8Wa\x1B\x0F\x82a&\xFFV[\x81Q\x15\x80\x15a&\xCFWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xF8W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BYV[P\x92\x91PPV[\x80Q\x15a'\x0FW\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'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a([`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a({`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xCAV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xEFW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xCBV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a\x1B%\x82a)\xF3V[_` \x82\x84\x03\x12\x15a*2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*k`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,`W__\xFD[a\x1B%\x82a,:V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xF0Wa,\xF0a,iV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x08W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-*Wa-*a,iV[`@R\x90P\x80a-9\x83a,:V[\x81Ra-G` \x84\x01a,:V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-mW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8FWa-\x8Fa,iV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xBAW__\xFD[a-\xC2a,}V[\x90Pa-\xCE\x83\x83a-]V[\x81Ra-\xDD\x83`@\x84\x01a-]V[` \x82\x01Ra-\xEF\x83`\x80\x84\x01a-]V[`@\x82\x01Ra.\x01\x83`\xC0\x84\x01a-]V[``\x82\x01Ra.\x14\x83a\x01\0\x84\x01a-]V[`\x80\x82\x01Ra.'\x83a\x01@\x84\x01a-]V[`\xA0\x82\x01Ra.:\x83a\x01\x80\x84\x01a-]V[`\xC0\x82\x01Ra.M\x83a\x01\xC0\x84\x01a-]V[`\xE0\x82\x01Ra.`\x83a\x02\0\x84\x01a-]V[a\x01\0\x82\x01Ra.t\x83a\x02@\x84\x01a-]V[a\x01 \x82\x01Ra.\x88\x83a\x02\x80\x84\x01a-]V[a\x01@\x82\x01Ra.\x9C\x83a\x02\xC0\x84\x01a-]V[a\x01`\x82\x01Ra.\xB0\x83a\x03\0\x84\x01a-]V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a/FW__\xFD[a/P\x84\x84a,\xF8V[\x91Pa/_\x84``\x85\x01a-\xA9V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x8BW__\xFD[a\x1B%\x82a/hV[__`@\x83\x85\x03\x12\x15a/\xA5W__\xFD[a/\xAE\x83a)\xF3V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xF1Wa/\xF1a,iV[a0\x04`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0GW__\xFD[a0Oa,\xA6V[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\x8AW__\xFD[a\x1B%\x83\x83a07V[___a\x05`\x84\x86\x03\x12\x15a0\xA7W__\xFD[a0\xB1\x85\x85a,\xF8V[\x92Pa0\xC0\x85``\x86\x01a07V[\x91Pa0\xCF\x85`\xE0\x86\x01a-\xA9V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE9W__\xFD[a0\xF2\x83a,:V[\x91Pa/_` \x84\x01a,:V[____a\x01 \x85\x87\x03\x12\x15a1\x14W__\xFD[a1\x1E\x86\x86a,\xF8V[\x93Pa1-\x86``\x87\x01a07V[\x92Pa1;`\xE0\x86\x01a/hV[\x91Pa1Ja\x01\0\x86\x01a)\xF3V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a1\x9AW__\xFD[a\x1B%\x83\x83a,\xF8V[__`@\x83\x85\x03\x12\x15a1\xB5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD4W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x12Wa2\x12a,iV[a2!` \x82`\x05\x1B\x01a,\xC8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2BW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB2W`\x80\x84\x88\x03\x12\x15a2`W__\xFD[a2ha,\xA6V[a2q\x85a,:V[\x81Ra2\x7F` \x86\x01a,:V[` \x82\x01Ra2\x90`@\x86\x01a,:V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2IV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x1BWa3\x1Ba2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8EWa3\x8Ea2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDCW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBDV[PPPPV[a3\xF7\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa5\xCE`@\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\x01Ra7\xA6a\x05\0\x83\x01\x85a3\xBAV[a7\xB4a\x06`\x83\x01\x84a3\xE2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCCW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFCWa7\xFCa2\xBCV[`\x01\x01\x92\x91PPV[_\x81a8\x13Wa8\x13a2\xBCV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
5373    );
5374    #[derive(serde::Serialize, serde::Deserialize)]
5375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5376    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5377```solidity
5378error AddressEmptyCode(address target);
5379```*/
5380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5381    #[derive(Clone)]
5382    pub struct AddressEmptyCode {
5383        #[allow(missing_docs)]
5384        pub target: alloy::sol_types::private::Address,
5385    }
5386    #[allow(
5387        non_camel_case_types,
5388        non_snake_case,
5389        clippy::pub_underscore_fields,
5390        clippy::style
5391    )]
5392    const _: () = {
5393        use alloy::sol_types as alloy_sol_types;
5394        #[doc(hidden)]
5395        #[allow(dead_code)]
5396        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5397        #[doc(hidden)]
5398        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5399        #[cfg(test)]
5400        #[allow(dead_code, unreachable_patterns)]
5401        fn _type_assertion(
5402            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5403        ) {
5404            match _t {
5405                alloy_sol_types::private::AssertTypeEq::<
5406                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5407                >(_) => {}
5408            }
5409        }
5410        #[automatically_derived]
5411        #[doc(hidden)]
5412        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5413            fn from(value: AddressEmptyCode) -> Self {
5414                (value.target,)
5415            }
5416        }
5417        #[automatically_derived]
5418        #[doc(hidden)]
5419        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5421                Self { target: tuple.0 }
5422            }
5423        }
5424        #[automatically_derived]
5425        impl alloy_sol_types::SolError for AddressEmptyCode {
5426            type Parameters<'a> = UnderlyingSolTuple<'a>;
5427            type Token<'a> = <Self::Parameters<
5428                'a,
5429            > as alloy_sol_types::SolType>::Token<'a>;
5430            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5431            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5432            #[inline]
5433            fn new<'a>(
5434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5435            ) -> Self {
5436                tuple.into()
5437            }
5438            #[inline]
5439            fn tokenize(&self) -> Self::Token<'_> {
5440                (
5441                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5442                        &self.target,
5443                    ),
5444                )
5445            }
5446            #[inline]
5447            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5448                <Self::Parameters<
5449                    '_,
5450                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5451                    .map(Self::new)
5452            }
5453        }
5454    };
5455    #[derive(serde::Serialize, serde::Deserialize)]
5456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5457    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5458```solidity
5459error DeprecatedApi();
5460```*/
5461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5462    #[derive(Clone)]
5463    pub struct DeprecatedApi;
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        #[allow(dead_code)]
5474        type UnderlyingSolTuple<'a> = ();
5475        #[doc(hidden)]
5476        type UnderlyingRustTuple<'a> = ();
5477        #[cfg(test)]
5478        #[allow(dead_code, unreachable_patterns)]
5479        fn _type_assertion(
5480            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5481        ) {
5482            match _t {
5483                alloy_sol_types::private::AssertTypeEq::<
5484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5485                >(_) => {}
5486            }
5487        }
5488        #[automatically_derived]
5489        #[doc(hidden)]
5490        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5491            fn from(value: DeprecatedApi) -> Self {
5492                ()
5493            }
5494        }
5495        #[automatically_derived]
5496        #[doc(hidden)]
5497        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5498            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5499                Self
5500            }
5501        }
5502        #[automatically_derived]
5503        impl alloy_sol_types::SolError for DeprecatedApi {
5504            type Parameters<'a> = UnderlyingSolTuple<'a>;
5505            type Token<'a> = <Self::Parameters<
5506                'a,
5507            > as alloy_sol_types::SolType>::Token<'a>;
5508            const SIGNATURE: &'static str = "DeprecatedApi()";
5509            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5510            #[inline]
5511            fn new<'a>(
5512                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5513            ) -> Self {
5514                tuple.into()
5515            }
5516            #[inline]
5517            fn tokenize(&self) -> Self::Token<'_> {
5518                ()
5519            }
5520            #[inline]
5521            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5522                <Self::Parameters<
5523                    '_,
5524                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5525                    .map(Self::new)
5526            }
5527        }
5528    };
5529    #[derive(serde::Serialize, serde::Deserialize)]
5530    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5531    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5532```solidity
5533error ERC1967InvalidImplementation(address implementation);
5534```*/
5535    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5536    #[derive(Clone)]
5537    pub struct ERC1967InvalidImplementation {
5538        #[allow(missing_docs)]
5539        pub implementation: alloy::sol_types::private::Address,
5540    }
5541    #[allow(
5542        non_camel_case_types,
5543        non_snake_case,
5544        clippy::pub_underscore_fields,
5545        clippy::style
5546    )]
5547    const _: () = {
5548        use alloy::sol_types as alloy_sol_types;
5549        #[doc(hidden)]
5550        #[allow(dead_code)]
5551        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5552        #[doc(hidden)]
5553        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5554        #[cfg(test)]
5555        #[allow(dead_code, unreachable_patterns)]
5556        fn _type_assertion(
5557            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5558        ) {
5559            match _t {
5560                alloy_sol_types::private::AssertTypeEq::<
5561                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5562                >(_) => {}
5563            }
5564        }
5565        #[automatically_derived]
5566        #[doc(hidden)]
5567        impl ::core::convert::From<ERC1967InvalidImplementation>
5568        for UnderlyingRustTuple<'_> {
5569            fn from(value: ERC1967InvalidImplementation) -> Self {
5570                (value.implementation,)
5571            }
5572        }
5573        #[automatically_derived]
5574        #[doc(hidden)]
5575        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5576        for ERC1967InvalidImplementation {
5577            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5578                Self { implementation: tuple.0 }
5579            }
5580        }
5581        #[automatically_derived]
5582        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5583            type Parameters<'a> = UnderlyingSolTuple<'a>;
5584            type Token<'a> = <Self::Parameters<
5585                'a,
5586            > as alloy_sol_types::SolType>::Token<'a>;
5587            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5588            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5589            #[inline]
5590            fn new<'a>(
5591                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5592            ) -> Self {
5593                tuple.into()
5594            }
5595            #[inline]
5596            fn tokenize(&self) -> Self::Token<'_> {
5597                (
5598                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5599                        &self.implementation,
5600                    ),
5601                )
5602            }
5603            #[inline]
5604            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5605                <Self::Parameters<
5606                    '_,
5607                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5608                    .map(Self::new)
5609            }
5610        }
5611    };
5612    #[derive(serde::Serialize, serde::Deserialize)]
5613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5614    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5615```solidity
5616error ERC1967NonPayable();
5617```*/
5618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5619    #[derive(Clone)]
5620    pub struct ERC1967NonPayable;
5621    #[allow(
5622        non_camel_case_types,
5623        non_snake_case,
5624        clippy::pub_underscore_fields,
5625        clippy::style
5626    )]
5627    const _: () = {
5628        use alloy::sol_types as alloy_sol_types;
5629        #[doc(hidden)]
5630        #[allow(dead_code)]
5631        type UnderlyingSolTuple<'a> = ();
5632        #[doc(hidden)]
5633        type UnderlyingRustTuple<'a> = ();
5634        #[cfg(test)]
5635        #[allow(dead_code, unreachable_patterns)]
5636        fn _type_assertion(
5637            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5638        ) {
5639            match _t {
5640                alloy_sol_types::private::AssertTypeEq::<
5641                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5642                >(_) => {}
5643            }
5644        }
5645        #[automatically_derived]
5646        #[doc(hidden)]
5647        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5648            fn from(value: ERC1967NonPayable) -> Self {
5649                ()
5650            }
5651        }
5652        #[automatically_derived]
5653        #[doc(hidden)]
5654        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5655            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5656                Self
5657            }
5658        }
5659        #[automatically_derived]
5660        impl alloy_sol_types::SolError for ERC1967NonPayable {
5661            type Parameters<'a> = UnderlyingSolTuple<'a>;
5662            type Token<'a> = <Self::Parameters<
5663                'a,
5664            > as alloy_sol_types::SolType>::Token<'a>;
5665            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5666            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5667            #[inline]
5668            fn new<'a>(
5669                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5670            ) -> Self {
5671                tuple.into()
5672            }
5673            #[inline]
5674            fn tokenize(&self) -> Self::Token<'_> {
5675                ()
5676            }
5677            #[inline]
5678            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5679                <Self::Parameters<
5680                    '_,
5681                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5682                    .map(Self::new)
5683            }
5684        }
5685    };
5686    #[derive(serde::Serialize, serde::Deserialize)]
5687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5688    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5689```solidity
5690error FailedInnerCall();
5691```*/
5692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5693    #[derive(Clone)]
5694    pub struct FailedInnerCall;
5695    #[allow(
5696        non_camel_case_types,
5697        non_snake_case,
5698        clippy::pub_underscore_fields,
5699        clippy::style
5700    )]
5701    const _: () = {
5702        use alloy::sol_types as alloy_sol_types;
5703        #[doc(hidden)]
5704        #[allow(dead_code)]
5705        type UnderlyingSolTuple<'a> = ();
5706        #[doc(hidden)]
5707        type UnderlyingRustTuple<'a> = ();
5708        #[cfg(test)]
5709        #[allow(dead_code, unreachable_patterns)]
5710        fn _type_assertion(
5711            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5712        ) {
5713            match _t {
5714                alloy_sol_types::private::AssertTypeEq::<
5715                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5716                >(_) => {}
5717            }
5718        }
5719        #[automatically_derived]
5720        #[doc(hidden)]
5721        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5722            fn from(value: FailedInnerCall) -> Self {
5723                ()
5724            }
5725        }
5726        #[automatically_derived]
5727        #[doc(hidden)]
5728        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5729            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5730                Self
5731            }
5732        }
5733        #[automatically_derived]
5734        impl alloy_sol_types::SolError for FailedInnerCall {
5735            type Parameters<'a> = UnderlyingSolTuple<'a>;
5736            type Token<'a> = <Self::Parameters<
5737                'a,
5738            > as alloy_sol_types::SolType>::Token<'a>;
5739            const SIGNATURE: &'static str = "FailedInnerCall()";
5740            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5741            #[inline]
5742            fn new<'a>(
5743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5744            ) -> Self {
5745                tuple.into()
5746            }
5747            #[inline]
5748            fn tokenize(&self) -> Self::Token<'_> {
5749                ()
5750            }
5751            #[inline]
5752            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5753                <Self::Parameters<
5754                    '_,
5755                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5756                    .map(Self::new)
5757            }
5758        }
5759    };
5760    #[derive(serde::Serialize, serde::Deserialize)]
5761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5762    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5763```solidity
5764error InsufficientSnapshotHistory();
5765```*/
5766    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5767    #[derive(Clone)]
5768    pub struct InsufficientSnapshotHistory;
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        #[allow(dead_code)]
5779        type UnderlyingSolTuple<'a> = ();
5780        #[doc(hidden)]
5781        type UnderlyingRustTuple<'a> = ();
5782        #[cfg(test)]
5783        #[allow(dead_code, unreachable_patterns)]
5784        fn _type_assertion(
5785            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5786        ) {
5787            match _t {
5788                alloy_sol_types::private::AssertTypeEq::<
5789                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5790                >(_) => {}
5791            }
5792        }
5793        #[automatically_derived]
5794        #[doc(hidden)]
5795        impl ::core::convert::From<InsufficientSnapshotHistory>
5796        for UnderlyingRustTuple<'_> {
5797            fn from(value: InsufficientSnapshotHistory) -> Self {
5798                ()
5799            }
5800        }
5801        #[automatically_derived]
5802        #[doc(hidden)]
5803        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5804        for InsufficientSnapshotHistory {
5805            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5806                Self
5807            }
5808        }
5809        #[automatically_derived]
5810        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5811            type Parameters<'a> = UnderlyingSolTuple<'a>;
5812            type Token<'a> = <Self::Parameters<
5813                'a,
5814            > as alloy_sol_types::SolType>::Token<'a>;
5815            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5816            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5817            #[inline]
5818            fn new<'a>(
5819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5820            ) -> Self {
5821                tuple.into()
5822            }
5823            #[inline]
5824            fn tokenize(&self) -> Self::Token<'_> {
5825                ()
5826            }
5827            #[inline]
5828            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5829                <Self::Parameters<
5830                    '_,
5831                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5832                    .map(Self::new)
5833            }
5834        }
5835    };
5836    #[derive(serde::Serialize, serde::Deserialize)]
5837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5838    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5839```solidity
5840error InvalidAddress();
5841```*/
5842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5843    #[derive(Clone)]
5844    pub struct InvalidAddress;
5845    #[allow(
5846        non_camel_case_types,
5847        non_snake_case,
5848        clippy::pub_underscore_fields,
5849        clippy::style
5850    )]
5851    const _: () = {
5852        use alloy::sol_types as alloy_sol_types;
5853        #[doc(hidden)]
5854        #[allow(dead_code)]
5855        type UnderlyingSolTuple<'a> = ();
5856        #[doc(hidden)]
5857        type UnderlyingRustTuple<'a> = ();
5858        #[cfg(test)]
5859        #[allow(dead_code, unreachable_patterns)]
5860        fn _type_assertion(
5861            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5862        ) {
5863            match _t {
5864                alloy_sol_types::private::AssertTypeEq::<
5865                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5866                >(_) => {}
5867            }
5868        }
5869        #[automatically_derived]
5870        #[doc(hidden)]
5871        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5872            fn from(value: InvalidAddress) -> Self {
5873                ()
5874            }
5875        }
5876        #[automatically_derived]
5877        #[doc(hidden)]
5878        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5879            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5880                Self
5881            }
5882        }
5883        #[automatically_derived]
5884        impl alloy_sol_types::SolError for InvalidAddress {
5885            type Parameters<'a> = UnderlyingSolTuple<'a>;
5886            type Token<'a> = <Self::Parameters<
5887                'a,
5888            > as alloy_sol_types::SolType>::Token<'a>;
5889            const SIGNATURE: &'static str = "InvalidAddress()";
5890            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5891            #[inline]
5892            fn new<'a>(
5893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5894            ) -> Self {
5895                tuple.into()
5896            }
5897            #[inline]
5898            fn tokenize(&self) -> Self::Token<'_> {
5899                ()
5900            }
5901            #[inline]
5902            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5903                <Self::Parameters<
5904                    '_,
5905                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5906                    .map(Self::new)
5907            }
5908        }
5909    };
5910    #[derive(serde::Serialize, serde::Deserialize)]
5911    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5912    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5913```solidity
5914error InvalidArgs();
5915```*/
5916    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5917    #[derive(Clone)]
5918    pub struct InvalidArgs;
5919    #[allow(
5920        non_camel_case_types,
5921        non_snake_case,
5922        clippy::pub_underscore_fields,
5923        clippy::style
5924    )]
5925    const _: () = {
5926        use alloy::sol_types as alloy_sol_types;
5927        #[doc(hidden)]
5928        #[allow(dead_code)]
5929        type UnderlyingSolTuple<'a> = ();
5930        #[doc(hidden)]
5931        type UnderlyingRustTuple<'a> = ();
5932        #[cfg(test)]
5933        #[allow(dead_code, unreachable_patterns)]
5934        fn _type_assertion(
5935            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5936        ) {
5937            match _t {
5938                alloy_sol_types::private::AssertTypeEq::<
5939                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5940                >(_) => {}
5941            }
5942        }
5943        #[automatically_derived]
5944        #[doc(hidden)]
5945        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5946            fn from(value: InvalidArgs) -> Self {
5947                ()
5948            }
5949        }
5950        #[automatically_derived]
5951        #[doc(hidden)]
5952        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5953            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5954                Self
5955            }
5956        }
5957        #[automatically_derived]
5958        impl alloy_sol_types::SolError for InvalidArgs {
5959            type Parameters<'a> = UnderlyingSolTuple<'a>;
5960            type Token<'a> = <Self::Parameters<
5961                'a,
5962            > as alloy_sol_types::SolType>::Token<'a>;
5963            const SIGNATURE: &'static str = "InvalidArgs()";
5964            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5965            #[inline]
5966            fn new<'a>(
5967                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5968            ) -> Self {
5969                tuple.into()
5970            }
5971            #[inline]
5972            fn tokenize(&self) -> Self::Token<'_> {
5973                ()
5974            }
5975            #[inline]
5976            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5977                <Self::Parameters<
5978                    '_,
5979                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5980                    .map(Self::new)
5981            }
5982        }
5983    };
5984    #[derive(serde::Serialize, serde::Deserialize)]
5985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5986    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5987```solidity
5988error InvalidHotShotBlockForCommitmentCheck();
5989```*/
5990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5991    #[derive(Clone)]
5992    pub struct InvalidHotShotBlockForCommitmentCheck;
5993    #[allow(
5994        non_camel_case_types,
5995        non_snake_case,
5996        clippy::pub_underscore_fields,
5997        clippy::style
5998    )]
5999    const _: () = {
6000        use alloy::sol_types as alloy_sol_types;
6001        #[doc(hidden)]
6002        #[allow(dead_code)]
6003        type UnderlyingSolTuple<'a> = ();
6004        #[doc(hidden)]
6005        type UnderlyingRustTuple<'a> = ();
6006        #[cfg(test)]
6007        #[allow(dead_code, unreachable_patterns)]
6008        fn _type_assertion(
6009            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6010        ) {
6011            match _t {
6012                alloy_sol_types::private::AssertTypeEq::<
6013                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6014                >(_) => {}
6015            }
6016        }
6017        #[automatically_derived]
6018        #[doc(hidden)]
6019        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6020        for UnderlyingRustTuple<'_> {
6021            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6022                ()
6023            }
6024        }
6025        #[automatically_derived]
6026        #[doc(hidden)]
6027        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6028        for InvalidHotShotBlockForCommitmentCheck {
6029            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6030                Self
6031            }
6032        }
6033        #[automatically_derived]
6034        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6035            type Parameters<'a> = UnderlyingSolTuple<'a>;
6036            type Token<'a> = <Self::Parameters<
6037                'a,
6038            > as alloy_sol_types::SolType>::Token<'a>;
6039            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6040            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6041            #[inline]
6042            fn new<'a>(
6043                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6044            ) -> Self {
6045                tuple.into()
6046            }
6047            #[inline]
6048            fn tokenize(&self) -> Self::Token<'_> {
6049                ()
6050            }
6051            #[inline]
6052            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6053                <Self::Parameters<
6054                    '_,
6055                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6056                    .map(Self::new)
6057            }
6058        }
6059    };
6060    #[derive(serde::Serialize, serde::Deserialize)]
6061    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6062    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6063```solidity
6064error InvalidInitialization();
6065```*/
6066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6067    #[derive(Clone)]
6068    pub struct InvalidInitialization;
6069    #[allow(
6070        non_camel_case_types,
6071        non_snake_case,
6072        clippy::pub_underscore_fields,
6073        clippy::style
6074    )]
6075    const _: () = {
6076        use alloy::sol_types as alloy_sol_types;
6077        #[doc(hidden)]
6078        #[allow(dead_code)]
6079        type UnderlyingSolTuple<'a> = ();
6080        #[doc(hidden)]
6081        type UnderlyingRustTuple<'a> = ();
6082        #[cfg(test)]
6083        #[allow(dead_code, unreachable_patterns)]
6084        fn _type_assertion(
6085            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6086        ) {
6087            match _t {
6088                alloy_sol_types::private::AssertTypeEq::<
6089                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6090                >(_) => {}
6091            }
6092        }
6093        #[automatically_derived]
6094        #[doc(hidden)]
6095        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6096            fn from(value: InvalidInitialization) -> Self {
6097                ()
6098            }
6099        }
6100        #[automatically_derived]
6101        #[doc(hidden)]
6102        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6103            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6104                Self
6105            }
6106        }
6107        #[automatically_derived]
6108        impl alloy_sol_types::SolError for InvalidInitialization {
6109            type Parameters<'a> = UnderlyingSolTuple<'a>;
6110            type Token<'a> = <Self::Parameters<
6111                'a,
6112            > as alloy_sol_types::SolType>::Token<'a>;
6113            const SIGNATURE: &'static str = "InvalidInitialization()";
6114            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6115            #[inline]
6116            fn new<'a>(
6117                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6118            ) -> Self {
6119                tuple.into()
6120            }
6121            #[inline]
6122            fn tokenize(&self) -> Self::Token<'_> {
6123                ()
6124            }
6125            #[inline]
6126            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6127                <Self::Parameters<
6128                    '_,
6129                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6130                    .map(Self::new)
6131            }
6132        }
6133    };
6134    #[derive(serde::Serialize, serde::Deserialize)]
6135    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6136    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6137```solidity
6138error InvalidMaxStateHistory();
6139```*/
6140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6141    #[derive(Clone)]
6142    pub struct InvalidMaxStateHistory;
6143    #[allow(
6144        non_camel_case_types,
6145        non_snake_case,
6146        clippy::pub_underscore_fields,
6147        clippy::style
6148    )]
6149    const _: () = {
6150        use alloy::sol_types as alloy_sol_types;
6151        #[doc(hidden)]
6152        #[allow(dead_code)]
6153        type UnderlyingSolTuple<'a> = ();
6154        #[doc(hidden)]
6155        type UnderlyingRustTuple<'a> = ();
6156        #[cfg(test)]
6157        #[allow(dead_code, unreachable_patterns)]
6158        fn _type_assertion(
6159            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6160        ) {
6161            match _t {
6162                alloy_sol_types::private::AssertTypeEq::<
6163                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6164                >(_) => {}
6165            }
6166        }
6167        #[automatically_derived]
6168        #[doc(hidden)]
6169        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6170            fn from(value: InvalidMaxStateHistory) -> Self {
6171                ()
6172            }
6173        }
6174        #[automatically_derived]
6175        #[doc(hidden)]
6176        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6177            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6178                Self
6179            }
6180        }
6181        #[automatically_derived]
6182        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6183            type Parameters<'a> = UnderlyingSolTuple<'a>;
6184            type Token<'a> = <Self::Parameters<
6185                'a,
6186            > as alloy_sol_types::SolType>::Token<'a>;
6187            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6188            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6189            #[inline]
6190            fn new<'a>(
6191                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6192            ) -> Self {
6193                tuple.into()
6194            }
6195            #[inline]
6196            fn tokenize(&self) -> Self::Token<'_> {
6197                ()
6198            }
6199            #[inline]
6200            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6201                <Self::Parameters<
6202                    '_,
6203                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6204                    .map(Self::new)
6205            }
6206        }
6207    };
6208    #[derive(serde::Serialize, serde::Deserialize)]
6209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6210    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6211```solidity
6212error InvalidProof();
6213```*/
6214    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6215    #[derive(Clone)]
6216    pub struct InvalidProof;
6217    #[allow(
6218        non_camel_case_types,
6219        non_snake_case,
6220        clippy::pub_underscore_fields,
6221        clippy::style
6222    )]
6223    const _: () = {
6224        use alloy::sol_types as alloy_sol_types;
6225        #[doc(hidden)]
6226        #[allow(dead_code)]
6227        type UnderlyingSolTuple<'a> = ();
6228        #[doc(hidden)]
6229        type UnderlyingRustTuple<'a> = ();
6230        #[cfg(test)]
6231        #[allow(dead_code, unreachable_patterns)]
6232        fn _type_assertion(
6233            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6234        ) {
6235            match _t {
6236                alloy_sol_types::private::AssertTypeEq::<
6237                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6238                >(_) => {}
6239            }
6240        }
6241        #[automatically_derived]
6242        #[doc(hidden)]
6243        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6244            fn from(value: InvalidProof) -> Self {
6245                ()
6246            }
6247        }
6248        #[automatically_derived]
6249        #[doc(hidden)]
6250        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6251            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6252                Self
6253            }
6254        }
6255        #[automatically_derived]
6256        impl alloy_sol_types::SolError for InvalidProof {
6257            type Parameters<'a> = UnderlyingSolTuple<'a>;
6258            type Token<'a> = <Self::Parameters<
6259                'a,
6260            > as alloy_sol_types::SolType>::Token<'a>;
6261            const SIGNATURE: &'static str = "InvalidProof()";
6262            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6263            #[inline]
6264            fn new<'a>(
6265                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6266            ) -> Self {
6267                tuple.into()
6268            }
6269            #[inline]
6270            fn tokenize(&self) -> Self::Token<'_> {
6271                ()
6272            }
6273            #[inline]
6274            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6275                <Self::Parameters<
6276                    '_,
6277                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6278                    .map(Self::new)
6279            }
6280        }
6281    };
6282    #[derive(serde::Serialize, serde::Deserialize)]
6283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6284    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6285```solidity
6286error InvalidScalar();
6287```*/
6288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6289    #[derive(Clone)]
6290    pub struct InvalidScalar;
6291    #[allow(
6292        non_camel_case_types,
6293        non_snake_case,
6294        clippy::pub_underscore_fields,
6295        clippy::style
6296    )]
6297    const _: () = {
6298        use alloy::sol_types as alloy_sol_types;
6299        #[doc(hidden)]
6300        #[allow(dead_code)]
6301        type UnderlyingSolTuple<'a> = ();
6302        #[doc(hidden)]
6303        type UnderlyingRustTuple<'a> = ();
6304        #[cfg(test)]
6305        #[allow(dead_code, unreachable_patterns)]
6306        fn _type_assertion(
6307            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6308        ) {
6309            match _t {
6310                alloy_sol_types::private::AssertTypeEq::<
6311                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6312                >(_) => {}
6313            }
6314        }
6315        #[automatically_derived]
6316        #[doc(hidden)]
6317        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6318            fn from(value: InvalidScalar) -> Self {
6319                ()
6320            }
6321        }
6322        #[automatically_derived]
6323        #[doc(hidden)]
6324        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6325            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6326                Self
6327            }
6328        }
6329        #[automatically_derived]
6330        impl alloy_sol_types::SolError for InvalidScalar {
6331            type Parameters<'a> = UnderlyingSolTuple<'a>;
6332            type Token<'a> = <Self::Parameters<
6333                'a,
6334            > as alloy_sol_types::SolType>::Token<'a>;
6335            const SIGNATURE: &'static str = "InvalidScalar()";
6336            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6337            #[inline]
6338            fn new<'a>(
6339                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6340            ) -> Self {
6341                tuple.into()
6342            }
6343            #[inline]
6344            fn tokenize(&self) -> Self::Token<'_> {
6345                ()
6346            }
6347            #[inline]
6348            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6349                <Self::Parameters<
6350                    '_,
6351                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6352                    .map(Self::new)
6353            }
6354        }
6355    };
6356    #[derive(serde::Serialize, serde::Deserialize)]
6357    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6358    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6359```solidity
6360error MissingEpochRootUpdate();
6361```*/
6362    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6363    #[derive(Clone)]
6364    pub struct MissingEpochRootUpdate;
6365    #[allow(
6366        non_camel_case_types,
6367        non_snake_case,
6368        clippy::pub_underscore_fields,
6369        clippy::style
6370    )]
6371    const _: () = {
6372        use alloy::sol_types as alloy_sol_types;
6373        #[doc(hidden)]
6374        #[allow(dead_code)]
6375        type UnderlyingSolTuple<'a> = ();
6376        #[doc(hidden)]
6377        type UnderlyingRustTuple<'a> = ();
6378        #[cfg(test)]
6379        #[allow(dead_code, unreachable_patterns)]
6380        fn _type_assertion(
6381            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6382        ) {
6383            match _t {
6384                alloy_sol_types::private::AssertTypeEq::<
6385                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6386                >(_) => {}
6387            }
6388        }
6389        #[automatically_derived]
6390        #[doc(hidden)]
6391        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6392            fn from(value: MissingEpochRootUpdate) -> Self {
6393                ()
6394            }
6395        }
6396        #[automatically_derived]
6397        #[doc(hidden)]
6398        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6399            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6400                Self
6401            }
6402        }
6403        #[automatically_derived]
6404        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6405            type Parameters<'a> = UnderlyingSolTuple<'a>;
6406            type Token<'a> = <Self::Parameters<
6407                'a,
6408            > as alloy_sol_types::SolType>::Token<'a>;
6409            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6410            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6411            #[inline]
6412            fn new<'a>(
6413                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6414            ) -> Self {
6415                tuple.into()
6416            }
6417            #[inline]
6418            fn tokenize(&self) -> Self::Token<'_> {
6419                ()
6420            }
6421            #[inline]
6422            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6423                <Self::Parameters<
6424                    '_,
6425                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6426                    .map(Self::new)
6427            }
6428        }
6429    };
6430    #[derive(serde::Serialize, serde::Deserialize)]
6431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6432    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6433```solidity
6434error NoChangeRequired();
6435```*/
6436    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6437    #[derive(Clone)]
6438    pub struct NoChangeRequired;
6439    #[allow(
6440        non_camel_case_types,
6441        non_snake_case,
6442        clippy::pub_underscore_fields,
6443        clippy::style
6444    )]
6445    const _: () = {
6446        use alloy::sol_types as alloy_sol_types;
6447        #[doc(hidden)]
6448        #[allow(dead_code)]
6449        type UnderlyingSolTuple<'a> = ();
6450        #[doc(hidden)]
6451        type UnderlyingRustTuple<'a> = ();
6452        #[cfg(test)]
6453        #[allow(dead_code, unreachable_patterns)]
6454        fn _type_assertion(
6455            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6456        ) {
6457            match _t {
6458                alloy_sol_types::private::AssertTypeEq::<
6459                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6460                >(_) => {}
6461            }
6462        }
6463        #[automatically_derived]
6464        #[doc(hidden)]
6465        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6466            fn from(value: NoChangeRequired) -> Self {
6467                ()
6468            }
6469        }
6470        #[automatically_derived]
6471        #[doc(hidden)]
6472        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6473            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6474                Self
6475            }
6476        }
6477        #[automatically_derived]
6478        impl alloy_sol_types::SolError for NoChangeRequired {
6479            type Parameters<'a> = UnderlyingSolTuple<'a>;
6480            type Token<'a> = <Self::Parameters<
6481                'a,
6482            > as alloy_sol_types::SolType>::Token<'a>;
6483            const SIGNATURE: &'static str = "NoChangeRequired()";
6484            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6485            #[inline]
6486            fn new<'a>(
6487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6488            ) -> Self {
6489                tuple.into()
6490            }
6491            #[inline]
6492            fn tokenize(&self) -> Self::Token<'_> {
6493                ()
6494            }
6495            #[inline]
6496            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6497                <Self::Parameters<
6498                    '_,
6499                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6500                    .map(Self::new)
6501            }
6502        }
6503    };
6504    #[derive(serde::Serialize, serde::Deserialize)]
6505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6506    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6507```solidity
6508error NotInitializing();
6509```*/
6510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6511    #[derive(Clone)]
6512    pub struct NotInitializing;
6513    #[allow(
6514        non_camel_case_types,
6515        non_snake_case,
6516        clippy::pub_underscore_fields,
6517        clippy::style
6518    )]
6519    const _: () = {
6520        use alloy::sol_types as alloy_sol_types;
6521        #[doc(hidden)]
6522        #[allow(dead_code)]
6523        type UnderlyingSolTuple<'a> = ();
6524        #[doc(hidden)]
6525        type UnderlyingRustTuple<'a> = ();
6526        #[cfg(test)]
6527        #[allow(dead_code, unreachable_patterns)]
6528        fn _type_assertion(
6529            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6530        ) {
6531            match _t {
6532                alloy_sol_types::private::AssertTypeEq::<
6533                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6534                >(_) => {}
6535            }
6536        }
6537        #[automatically_derived]
6538        #[doc(hidden)]
6539        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6540            fn from(value: NotInitializing) -> Self {
6541                ()
6542            }
6543        }
6544        #[automatically_derived]
6545        #[doc(hidden)]
6546        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6548                Self
6549            }
6550        }
6551        #[automatically_derived]
6552        impl alloy_sol_types::SolError for NotInitializing {
6553            type Parameters<'a> = UnderlyingSolTuple<'a>;
6554            type Token<'a> = <Self::Parameters<
6555                'a,
6556            > as alloy_sol_types::SolType>::Token<'a>;
6557            const SIGNATURE: &'static str = "NotInitializing()";
6558            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6559            #[inline]
6560            fn new<'a>(
6561                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6562            ) -> Self {
6563                tuple.into()
6564            }
6565            #[inline]
6566            fn tokenize(&self) -> Self::Token<'_> {
6567                ()
6568            }
6569            #[inline]
6570            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6571                <Self::Parameters<
6572                    '_,
6573                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6574                    .map(Self::new)
6575            }
6576        }
6577    };
6578    #[derive(serde::Serialize, serde::Deserialize)]
6579    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6580    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6581```solidity
6582error OutdatedState();
6583```*/
6584    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6585    #[derive(Clone)]
6586    pub struct OutdatedState;
6587    #[allow(
6588        non_camel_case_types,
6589        non_snake_case,
6590        clippy::pub_underscore_fields,
6591        clippy::style
6592    )]
6593    const _: () = {
6594        use alloy::sol_types as alloy_sol_types;
6595        #[doc(hidden)]
6596        #[allow(dead_code)]
6597        type UnderlyingSolTuple<'a> = ();
6598        #[doc(hidden)]
6599        type UnderlyingRustTuple<'a> = ();
6600        #[cfg(test)]
6601        #[allow(dead_code, unreachable_patterns)]
6602        fn _type_assertion(
6603            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6604        ) {
6605            match _t {
6606                alloy_sol_types::private::AssertTypeEq::<
6607                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6608                >(_) => {}
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6614            fn from(value: OutdatedState) -> Self {
6615                ()
6616            }
6617        }
6618        #[automatically_derived]
6619        #[doc(hidden)]
6620        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6621            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6622                Self
6623            }
6624        }
6625        #[automatically_derived]
6626        impl alloy_sol_types::SolError for OutdatedState {
6627            type Parameters<'a> = UnderlyingSolTuple<'a>;
6628            type Token<'a> = <Self::Parameters<
6629                'a,
6630            > as alloy_sol_types::SolType>::Token<'a>;
6631            const SIGNATURE: &'static str = "OutdatedState()";
6632            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6633            #[inline]
6634            fn new<'a>(
6635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6636            ) -> Self {
6637                tuple.into()
6638            }
6639            #[inline]
6640            fn tokenize(&self) -> Self::Token<'_> {
6641                ()
6642            }
6643            #[inline]
6644            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6645                <Self::Parameters<
6646                    '_,
6647                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6648                    .map(Self::new)
6649            }
6650        }
6651    };
6652    #[derive(serde::Serialize, serde::Deserialize)]
6653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6654    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6655```solidity
6656error OwnableInvalidOwner(address owner);
6657```*/
6658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6659    #[derive(Clone)]
6660    pub struct OwnableInvalidOwner {
6661        #[allow(missing_docs)]
6662        pub owner: alloy::sol_types::private::Address,
6663    }
6664    #[allow(
6665        non_camel_case_types,
6666        non_snake_case,
6667        clippy::pub_underscore_fields,
6668        clippy::style
6669    )]
6670    const _: () = {
6671        use alloy::sol_types as alloy_sol_types;
6672        #[doc(hidden)]
6673        #[allow(dead_code)]
6674        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6675        #[doc(hidden)]
6676        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6677        #[cfg(test)]
6678        #[allow(dead_code, unreachable_patterns)]
6679        fn _type_assertion(
6680            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6681        ) {
6682            match _t {
6683                alloy_sol_types::private::AssertTypeEq::<
6684                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6685                >(_) => {}
6686            }
6687        }
6688        #[automatically_derived]
6689        #[doc(hidden)]
6690        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6691            fn from(value: OwnableInvalidOwner) -> Self {
6692                (value.owner,)
6693            }
6694        }
6695        #[automatically_derived]
6696        #[doc(hidden)]
6697        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6698            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6699                Self { owner: tuple.0 }
6700            }
6701        }
6702        #[automatically_derived]
6703        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6704            type Parameters<'a> = UnderlyingSolTuple<'a>;
6705            type Token<'a> = <Self::Parameters<
6706                'a,
6707            > as alloy_sol_types::SolType>::Token<'a>;
6708            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6709            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6710            #[inline]
6711            fn new<'a>(
6712                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6713            ) -> Self {
6714                tuple.into()
6715            }
6716            #[inline]
6717            fn tokenize(&self) -> Self::Token<'_> {
6718                (
6719                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6720                        &self.owner,
6721                    ),
6722                )
6723            }
6724            #[inline]
6725            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6726                <Self::Parameters<
6727                    '_,
6728                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6729                    .map(Self::new)
6730            }
6731        }
6732    };
6733    #[derive(serde::Serialize, serde::Deserialize)]
6734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6735    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6736```solidity
6737error OwnableUnauthorizedAccount(address account);
6738```*/
6739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6740    #[derive(Clone)]
6741    pub struct OwnableUnauthorizedAccount {
6742        #[allow(missing_docs)]
6743        pub account: alloy::sol_types::private::Address,
6744    }
6745    #[allow(
6746        non_camel_case_types,
6747        non_snake_case,
6748        clippy::pub_underscore_fields,
6749        clippy::style
6750    )]
6751    const _: () = {
6752        use alloy::sol_types as alloy_sol_types;
6753        #[doc(hidden)]
6754        #[allow(dead_code)]
6755        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6756        #[doc(hidden)]
6757        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6758        #[cfg(test)]
6759        #[allow(dead_code, unreachable_patterns)]
6760        fn _type_assertion(
6761            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6762        ) {
6763            match _t {
6764                alloy_sol_types::private::AssertTypeEq::<
6765                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6766                >(_) => {}
6767            }
6768        }
6769        #[automatically_derived]
6770        #[doc(hidden)]
6771        impl ::core::convert::From<OwnableUnauthorizedAccount>
6772        for UnderlyingRustTuple<'_> {
6773            fn from(value: OwnableUnauthorizedAccount) -> Self {
6774                (value.account,)
6775            }
6776        }
6777        #[automatically_derived]
6778        #[doc(hidden)]
6779        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6780        for OwnableUnauthorizedAccount {
6781            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6782                Self { account: tuple.0 }
6783            }
6784        }
6785        #[automatically_derived]
6786        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6787            type Parameters<'a> = UnderlyingSolTuple<'a>;
6788            type Token<'a> = <Self::Parameters<
6789                'a,
6790            > as alloy_sol_types::SolType>::Token<'a>;
6791            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6792            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6793            #[inline]
6794            fn new<'a>(
6795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6796            ) -> Self {
6797                tuple.into()
6798            }
6799            #[inline]
6800            fn tokenize(&self) -> Self::Token<'_> {
6801                (
6802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6803                        &self.account,
6804                    ),
6805                )
6806            }
6807            #[inline]
6808            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6809                <Self::Parameters<
6810                    '_,
6811                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6812                    .map(Self::new)
6813            }
6814        }
6815    };
6816    #[derive(serde::Serialize, serde::Deserialize)]
6817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6818    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6819```solidity
6820error OwnershipCannotBeRenounced();
6821```*/
6822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6823    #[derive(Clone)]
6824    pub struct OwnershipCannotBeRenounced;
6825    #[allow(
6826        non_camel_case_types,
6827        non_snake_case,
6828        clippy::pub_underscore_fields,
6829        clippy::style
6830    )]
6831    const _: () = {
6832        use alloy::sol_types as alloy_sol_types;
6833        #[doc(hidden)]
6834        #[allow(dead_code)]
6835        type UnderlyingSolTuple<'a> = ();
6836        #[doc(hidden)]
6837        type UnderlyingRustTuple<'a> = ();
6838        #[cfg(test)]
6839        #[allow(dead_code, unreachable_patterns)]
6840        fn _type_assertion(
6841            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6842        ) {
6843            match _t {
6844                alloy_sol_types::private::AssertTypeEq::<
6845                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6846                >(_) => {}
6847            }
6848        }
6849        #[automatically_derived]
6850        #[doc(hidden)]
6851        impl ::core::convert::From<OwnershipCannotBeRenounced>
6852        for UnderlyingRustTuple<'_> {
6853            fn from(value: OwnershipCannotBeRenounced) -> Self {
6854                ()
6855            }
6856        }
6857        #[automatically_derived]
6858        #[doc(hidden)]
6859        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6860        for OwnershipCannotBeRenounced {
6861            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6862                Self
6863            }
6864        }
6865        #[automatically_derived]
6866        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6867            type Parameters<'a> = UnderlyingSolTuple<'a>;
6868            type Token<'a> = <Self::Parameters<
6869                'a,
6870            > as alloy_sol_types::SolType>::Token<'a>;
6871            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6872            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6873            #[inline]
6874            fn new<'a>(
6875                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6876            ) -> Self {
6877                tuple.into()
6878            }
6879            #[inline]
6880            fn tokenize(&self) -> Self::Token<'_> {
6881                ()
6882            }
6883            #[inline]
6884            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6885                <Self::Parameters<
6886                    '_,
6887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6888                    .map(Self::new)
6889            }
6890        }
6891    };
6892    #[derive(serde::Serialize, serde::Deserialize)]
6893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6894    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6895```solidity
6896error ProverNotPermissioned();
6897```*/
6898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6899    #[derive(Clone)]
6900    pub struct ProverNotPermissioned;
6901    #[allow(
6902        non_camel_case_types,
6903        non_snake_case,
6904        clippy::pub_underscore_fields,
6905        clippy::style
6906    )]
6907    const _: () = {
6908        use alloy::sol_types as alloy_sol_types;
6909        #[doc(hidden)]
6910        #[allow(dead_code)]
6911        type UnderlyingSolTuple<'a> = ();
6912        #[doc(hidden)]
6913        type UnderlyingRustTuple<'a> = ();
6914        #[cfg(test)]
6915        #[allow(dead_code, unreachable_patterns)]
6916        fn _type_assertion(
6917            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6918        ) {
6919            match _t {
6920                alloy_sol_types::private::AssertTypeEq::<
6921                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6922                >(_) => {}
6923            }
6924        }
6925        #[automatically_derived]
6926        #[doc(hidden)]
6927        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6928            fn from(value: ProverNotPermissioned) -> Self {
6929                ()
6930            }
6931        }
6932        #[automatically_derived]
6933        #[doc(hidden)]
6934        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6935            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6936                Self
6937            }
6938        }
6939        #[automatically_derived]
6940        impl alloy_sol_types::SolError for ProverNotPermissioned {
6941            type Parameters<'a> = UnderlyingSolTuple<'a>;
6942            type Token<'a> = <Self::Parameters<
6943                'a,
6944            > as alloy_sol_types::SolType>::Token<'a>;
6945            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6946            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6947            #[inline]
6948            fn new<'a>(
6949                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6950            ) -> Self {
6951                tuple.into()
6952            }
6953            #[inline]
6954            fn tokenize(&self) -> Self::Token<'_> {
6955                ()
6956            }
6957            #[inline]
6958            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6959                <Self::Parameters<
6960                    '_,
6961                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6962                    .map(Self::new)
6963            }
6964        }
6965    };
6966    #[derive(serde::Serialize, serde::Deserialize)]
6967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6968    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6969```solidity
6970error UUPSUnauthorizedCallContext();
6971```*/
6972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6973    #[derive(Clone)]
6974    pub struct UUPSUnauthorizedCallContext;
6975    #[allow(
6976        non_camel_case_types,
6977        non_snake_case,
6978        clippy::pub_underscore_fields,
6979        clippy::style
6980    )]
6981    const _: () = {
6982        use alloy::sol_types as alloy_sol_types;
6983        #[doc(hidden)]
6984        #[allow(dead_code)]
6985        type UnderlyingSolTuple<'a> = ();
6986        #[doc(hidden)]
6987        type UnderlyingRustTuple<'a> = ();
6988        #[cfg(test)]
6989        #[allow(dead_code, unreachable_patterns)]
6990        fn _type_assertion(
6991            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6992        ) {
6993            match _t {
6994                alloy_sol_types::private::AssertTypeEq::<
6995                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6996                >(_) => {}
6997            }
6998        }
6999        #[automatically_derived]
7000        #[doc(hidden)]
7001        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7002        for UnderlyingRustTuple<'_> {
7003            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7004                ()
7005            }
7006        }
7007        #[automatically_derived]
7008        #[doc(hidden)]
7009        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7010        for UUPSUnauthorizedCallContext {
7011            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7012                Self
7013            }
7014        }
7015        #[automatically_derived]
7016        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7017            type Parameters<'a> = UnderlyingSolTuple<'a>;
7018            type Token<'a> = <Self::Parameters<
7019                'a,
7020            > as alloy_sol_types::SolType>::Token<'a>;
7021            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7022            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7023            #[inline]
7024            fn new<'a>(
7025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7026            ) -> Self {
7027                tuple.into()
7028            }
7029            #[inline]
7030            fn tokenize(&self) -> Self::Token<'_> {
7031                ()
7032            }
7033            #[inline]
7034            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7035                <Self::Parameters<
7036                    '_,
7037                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7038                    .map(Self::new)
7039            }
7040        }
7041    };
7042    #[derive(serde::Serialize, serde::Deserialize)]
7043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7044    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7045```solidity
7046error UUPSUnsupportedProxiableUUID(bytes32 slot);
7047```*/
7048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7049    #[derive(Clone)]
7050    pub struct UUPSUnsupportedProxiableUUID {
7051        #[allow(missing_docs)]
7052        pub slot: alloy::sol_types::private::FixedBytes<32>,
7053    }
7054    #[allow(
7055        non_camel_case_types,
7056        non_snake_case,
7057        clippy::pub_underscore_fields,
7058        clippy::style
7059    )]
7060    const _: () = {
7061        use alloy::sol_types as alloy_sol_types;
7062        #[doc(hidden)]
7063        #[allow(dead_code)]
7064        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7065        #[doc(hidden)]
7066        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7067        #[cfg(test)]
7068        #[allow(dead_code, unreachable_patterns)]
7069        fn _type_assertion(
7070            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7071        ) {
7072            match _t {
7073                alloy_sol_types::private::AssertTypeEq::<
7074                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7075                >(_) => {}
7076            }
7077        }
7078        #[automatically_derived]
7079        #[doc(hidden)]
7080        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7081        for UnderlyingRustTuple<'_> {
7082            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7083                (value.slot,)
7084            }
7085        }
7086        #[automatically_derived]
7087        #[doc(hidden)]
7088        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7089        for UUPSUnsupportedProxiableUUID {
7090            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7091                Self { slot: tuple.0 }
7092            }
7093        }
7094        #[automatically_derived]
7095        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7096            type Parameters<'a> = UnderlyingSolTuple<'a>;
7097            type Token<'a> = <Self::Parameters<
7098                'a,
7099            > as alloy_sol_types::SolType>::Token<'a>;
7100            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7101            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7102            #[inline]
7103            fn new<'a>(
7104                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7105            ) -> Self {
7106                tuple.into()
7107            }
7108            #[inline]
7109            fn tokenize(&self) -> Self::Token<'_> {
7110                (
7111                    <alloy::sol_types::sol_data::FixedBytes<
7112                        32,
7113                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7114                )
7115            }
7116            #[inline]
7117            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7118                <Self::Parameters<
7119                    '_,
7120                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7121                    .map(Self::new)
7122            }
7123        }
7124    };
7125    #[derive(serde::Serialize, serde::Deserialize)]
7126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7127    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7128```solidity
7129error WrongStakeTableUsed();
7130```*/
7131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7132    #[derive(Clone)]
7133    pub struct WrongStakeTableUsed;
7134    #[allow(
7135        non_camel_case_types,
7136        non_snake_case,
7137        clippy::pub_underscore_fields,
7138        clippy::style
7139    )]
7140    const _: () = {
7141        use alloy::sol_types as alloy_sol_types;
7142        #[doc(hidden)]
7143        #[allow(dead_code)]
7144        type UnderlyingSolTuple<'a> = ();
7145        #[doc(hidden)]
7146        type UnderlyingRustTuple<'a> = ();
7147        #[cfg(test)]
7148        #[allow(dead_code, unreachable_patterns)]
7149        fn _type_assertion(
7150            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7151        ) {
7152            match _t {
7153                alloy_sol_types::private::AssertTypeEq::<
7154                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7155                >(_) => {}
7156            }
7157        }
7158        #[automatically_derived]
7159        #[doc(hidden)]
7160        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7161            fn from(value: WrongStakeTableUsed) -> Self {
7162                ()
7163            }
7164        }
7165        #[automatically_derived]
7166        #[doc(hidden)]
7167        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7168            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7169                Self
7170            }
7171        }
7172        #[automatically_derived]
7173        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7174            type Parameters<'a> = UnderlyingSolTuple<'a>;
7175            type Token<'a> = <Self::Parameters<
7176                'a,
7177            > as alloy_sol_types::SolType>::Token<'a>;
7178            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7179            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7180            #[inline]
7181            fn new<'a>(
7182                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7183            ) -> Self {
7184                tuple.into()
7185            }
7186            #[inline]
7187            fn tokenize(&self) -> Self::Token<'_> {
7188                ()
7189            }
7190            #[inline]
7191            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7192                <Self::Parameters<
7193                    '_,
7194                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7195                    .map(Self::new)
7196            }
7197        }
7198    };
7199    #[derive(serde::Serialize, serde::Deserialize)]
7200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7201    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7202```solidity
7203event Initialized(uint64 version);
7204```*/
7205    #[allow(
7206        non_camel_case_types,
7207        non_snake_case,
7208        clippy::pub_underscore_fields,
7209        clippy::style
7210    )]
7211    #[derive(Clone)]
7212    pub struct Initialized {
7213        #[allow(missing_docs)]
7214        pub version: u64,
7215    }
7216    #[allow(
7217        non_camel_case_types,
7218        non_snake_case,
7219        clippy::pub_underscore_fields,
7220        clippy::style
7221    )]
7222    const _: () = {
7223        use alloy::sol_types as alloy_sol_types;
7224        #[automatically_derived]
7225        impl alloy_sol_types::SolEvent for Initialized {
7226            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7227            type DataToken<'a> = <Self::DataTuple<
7228                'a,
7229            > as alloy_sol_types::SolType>::Token<'a>;
7230            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7231            const SIGNATURE: &'static str = "Initialized(uint64)";
7232            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7233                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7234                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7235                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7236            ]);
7237            const ANONYMOUS: bool = false;
7238            #[allow(unused_variables)]
7239            #[inline]
7240            fn new(
7241                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7242                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7243            ) -> Self {
7244                Self { version: data.0 }
7245            }
7246            #[inline]
7247            fn check_signature(
7248                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7249            ) -> alloy_sol_types::Result<()> {
7250                if topics.0 != Self::SIGNATURE_HASH {
7251                    return Err(
7252                        alloy_sol_types::Error::invalid_event_signature_hash(
7253                            Self::SIGNATURE,
7254                            topics.0,
7255                            Self::SIGNATURE_HASH,
7256                        ),
7257                    );
7258                }
7259                Ok(())
7260            }
7261            #[inline]
7262            fn tokenize_body(&self) -> Self::DataToken<'_> {
7263                (
7264                    <alloy::sol_types::sol_data::Uint<
7265                        64,
7266                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7267                )
7268            }
7269            #[inline]
7270            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7271                (Self::SIGNATURE_HASH.into(),)
7272            }
7273            #[inline]
7274            fn encode_topics_raw(
7275                &self,
7276                out: &mut [alloy_sol_types::abi::token::WordToken],
7277            ) -> alloy_sol_types::Result<()> {
7278                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7279                    return Err(alloy_sol_types::Error::Overrun);
7280                }
7281                out[0usize] = alloy_sol_types::abi::token::WordToken(
7282                    Self::SIGNATURE_HASH,
7283                );
7284                Ok(())
7285            }
7286        }
7287        #[automatically_derived]
7288        impl alloy_sol_types::private::IntoLogData for Initialized {
7289            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7290                From::from(self)
7291            }
7292            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7293                From::from(&self)
7294            }
7295        }
7296        #[automatically_derived]
7297        impl From<&Initialized> for alloy_sol_types::private::LogData {
7298            #[inline]
7299            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7300                alloy_sol_types::SolEvent::encode_log_data(this)
7301            }
7302        }
7303    };
7304    #[derive(serde::Serialize, serde::Deserialize)]
7305    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7306    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7307```solidity
7308event NewEpoch(uint64 epoch);
7309```*/
7310    #[allow(
7311        non_camel_case_types,
7312        non_snake_case,
7313        clippy::pub_underscore_fields,
7314        clippy::style
7315    )]
7316    #[derive(Clone)]
7317    pub struct NewEpoch {
7318        #[allow(missing_docs)]
7319        pub epoch: u64,
7320    }
7321    #[allow(
7322        non_camel_case_types,
7323        non_snake_case,
7324        clippy::pub_underscore_fields,
7325        clippy::style
7326    )]
7327    const _: () = {
7328        use alloy::sol_types as alloy_sol_types;
7329        #[automatically_derived]
7330        impl alloy_sol_types::SolEvent for NewEpoch {
7331            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7332            type DataToken<'a> = <Self::DataTuple<
7333                'a,
7334            > as alloy_sol_types::SolType>::Token<'a>;
7335            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7336            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7337            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7338                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7339                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7340                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7341            ]);
7342            const ANONYMOUS: bool = false;
7343            #[allow(unused_variables)]
7344            #[inline]
7345            fn new(
7346                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7347                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7348            ) -> Self {
7349                Self { epoch: data.0 }
7350            }
7351            #[inline]
7352            fn check_signature(
7353                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7354            ) -> alloy_sol_types::Result<()> {
7355                if topics.0 != Self::SIGNATURE_HASH {
7356                    return Err(
7357                        alloy_sol_types::Error::invalid_event_signature_hash(
7358                            Self::SIGNATURE,
7359                            topics.0,
7360                            Self::SIGNATURE_HASH,
7361                        ),
7362                    );
7363                }
7364                Ok(())
7365            }
7366            #[inline]
7367            fn tokenize_body(&self) -> Self::DataToken<'_> {
7368                (
7369                    <alloy::sol_types::sol_data::Uint<
7370                        64,
7371                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7372                )
7373            }
7374            #[inline]
7375            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7376                (Self::SIGNATURE_HASH.into(),)
7377            }
7378            #[inline]
7379            fn encode_topics_raw(
7380                &self,
7381                out: &mut [alloy_sol_types::abi::token::WordToken],
7382            ) -> alloy_sol_types::Result<()> {
7383                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7384                    return Err(alloy_sol_types::Error::Overrun);
7385                }
7386                out[0usize] = alloy_sol_types::abi::token::WordToken(
7387                    Self::SIGNATURE_HASH,
7388                );
7389                Ok(())
7390            }
7391        }
7392        #[automatically_derived]
7393        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7394            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7395                From::from(self)
7396            }
7397            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7398                From::from(&self)
7399            }
7400        }
7401        #[automatically_derived]
7402        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7403            #[inline]
7404            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7405                alloy_sol_types::SolEvent::encode_log_data(this)
7406            }
7407        }
7408    };
7409    #[derive(serde::Serialize, serde::Deserialize)]
7410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7411    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7412```solidity
7413event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7414```*/
7415    #[allow(
7416        non_camel_case_types,
7417        non_snake_case,
7418        clippy::pub_underscore_fields,
7419        clippy::style
7420    )]
7421    #[derive(Clone)]
7422    pub struct NewState {
7423        #[allow(missing_docs)]
7424        pub viewNum: u64,
7425        #[allow(missing_docs)]
7426        pub blockHeight: u64,
7427        #[allow(missing_docs)]
7428        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7429    }
7430    #[allow(
7431        non_camel_case_types,
7432        non_snake_case,
7433        clippy::pub_underscore_fields,
7434        clippy::style
7435    )]
7436    const _: () = {
7437        use alloy::sol_types as alloy_sol_types;
7438        #[automatically_derived]
7439        impl alloy_sol_types::SolEvent for NewState {
7440            type DataTuple<'a> = (BN254::ScalarField,);
7441            type DataToken<'a> = <Self::DataTuple<
7442                'a,
7443            > as alloy_sol_types::SolType>::Token<'a>;
7444            type TopicList = (
7445                alloy_sol_types::sol_data::FixedBytes<32>,
7446                alloy::sol_types::sol_data::Uint<64>,
7447                alloy::sol_types::sol_data::Uint<64>,
7448            );
7449            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7450            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7451                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7452                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7453                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7454            ]);
7455            const ANONYMOUS: bool = false;
7456            #[allow(unused_variables)]
7457            #[inline]
7458            fn new(
7459                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7460                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7461            ) -> Self {
7462                Self {
7463                    viewNum: topics.1,
7464                    blockHeight: topics.2,
7465                    blockCommRoot: data.0,
7466                }
7467            }
7468            #[inline]
7469            fn check_signature(
7470                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7471            ) -> alloy_sol_types::Result<()> {
7472                if topics.0 != Self::SIGNATURE_HASH {
7473                    return Err(
7474                        alloy_sol_types::Error::invalid_event_signature_hash(
7475                            Self::SIGNATURE,
7476                            topics.0,
7477                            Self::SIGNATURE_HASH,
7478                        ),
7479                    );
7480                }
7481                Ok(())
7482            }
7483            #[inline]
7484            fn tokenize_body(&self) -> Self::DataToken<'_> {
7485                (
7486                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7487                        &self.blockCommRoot,
7488                    ),
7489                )
7490            }
7491            #[inline]
7492            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7493                (
7494                    Self::SIGNATURE_HASH.into(),
7495                    self.viewNum.clone(),
7496                    self.blockHeight.clone(),
7497                )
7498            }
7499            #[inline]
7500            fn encode_topics_raw(
7501                &self,
7502                out: &mut [alloy_sol_types::abi::token::WordToken],
7503            ) -> alloy_sol_types::Result<()> {
7504                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7505                    return Err(alloy_sol_types::Error::Overrun);
7506                }
7507                out[0usize] = alloy_sol_types::abi::token::WordToken(
7508                    Self::SIGNATURE_HASH,
7509                );
7510                out[1usize] = <alloy::sol_types::sol_data::Uint<
7511                    64,
7512                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7513                out[2usize] = <alloy::sol_types::sol_data::Uint<
7514                    64,
7515                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7516                Ok(())
7517            }
7518        }
7519        #[automatically_derived]
7520        impl alloy_sol_types::private::IntoLogData for NewState {
7521            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7522                From::from(self)
7523            }
7524            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7525                From::from(&self)
7526            }
7527        }
7528        #[automatically_derived]
7529        impl From<&NewState> for alloy_sol_types::private::LogData {
7530            #[inline]
7531            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7532                alloy_sol_types::SolEvent::encode_log_data(this)
7533            }
7534        }
7535    };
7536    #[derive(serde::Serialize, serde::Deserialize)]
7537    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7538    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7539```solidity
7540event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7541```*/
7542    #[allow(
7543        non_camel_case_types,
7544        non_snake_case,
7545        clippy::pub_underscore_fields,
7546        clippy::style
7547    )]
7548    #[derive(Clone)]
7549    pub struct OwnershipTransferred {
7550        #[allow(missing_docs)]
7551        pub previousOwner: alloy::sol_types::private::Address,
7552        #[allow(missing_docs)]
7553        pub newOwner: alloy::sol_types::private::Address,
7554    }
7555    #[allow(
7556        non_camel_case_types,
7557        non_snake_case,
7558        clippy::pub_underscore_fields,
7559        clippy::style
7560    )]
7561    const _: () = {
7562        use alloy::sol_types as alloy_sol_types;
7563        #[automatically_derived]
7564        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7565            type DataTuple<'a> = ();
7566            type DataToken<'a> = <Self::DataTuple<
7567                'a,
7568            > as alloy_sol_types::SolType>::Token<'a>;
7569            type TopicList = (
7570                alloy_sol_types::sol_data::FixedBytes<32>,
7571                alloy::sol_types::sol_data::Address,
7572                alloy::sol_types::sol_data::Address,
7573            );
7574            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7575            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7576                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7577                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7578                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7579            ]);
7580            const ANONYMOUS: bool = false;
7581            #[allow(unused_variables)]
7582            #[inline]
7583            fn new(
7584                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7585                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7586            ) -> Self {
7587                Self {
7588                    previousOwner: topics.1,
7589                    newOwner: topics.2,
7590                }
7591            }
7592            #[inline]
7593            fn check_signature(
7594                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7595            ) -> alloy_sol_types::Result<()> {
7596                if topics.0 != Self::SIGNATURE_HASH {
7597                    return Err(
7598                        alloy_sol_types::Error::invalid_event_signature_hash(
7599                            Self::SIGNATURE,
7600                            topics.0,
7601                            Self::SIGNATURE_HASH,
7602                        ),
7603                    );
7604                }
7605                Ok(())
7606            }
7607            #[inline]
7608            fn tokenize_body(&self) -> Self::DataToken<'_> {
7609                ()
7610            }
7611            #[inline]
7612            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7613                (
7614                    Self::SIGNATURE_HASH.into(),
7615                    self.previousOwner.clone(),
7616                    self.newOwner.clone(),
7617                )
7618            }
7619            #[inline]
7620            fn encode_topics_raw(
7621                &self,
7622                out: &mut [alloy_sol_types::abi::token::WordToken],
7623            ) -> alloy_sol_types::Result<()> {
7624                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7625                    return Err(alloy_sol_types::Error::Overrun);
7626                }
7627                out[0usize] = alloy_sol_types::abi::token::WordToken(
7628                    Self::SIGNATURE_HASH,
7629                );
7630                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7631                    &self.previousOwner,
7632                );
7633                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7634                    &self.newOwner,
7635                );
7636                Ok(())
7637            }
7638        }
7639        #[automatically_derived]
7640        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7641            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7642                From::from(self)
7643            }
7644            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7645                From::from(&self)
7646            }
7647        }
7648        #[automatically_derived]
7649        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7650            #[inline]
7651            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7652                alloy_sol_types::SolEvent::encode_log_data(this)
7653            }
7654        }
7655    };
7656    #[derive(serde::Serialize, serde::Deserialize)]
7657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7658    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7659```solidity
7660event PermissionedProverNotRequired();
7661```*/
7662    #[allow(
7663        non_camel_case_types,
7664        non_snake_case,
7665        clippy::pub_underscore_fields,
7666        clippy::style
7667    )]
7668    #[derive(Clone)]
7669    pub struct PermissionedProverNotRequired;
7670    #[allow(
7671        non_camel_case_types,
7672        non_snake_case,
7673        clippy::pub_underscore_fields,
7674        clippy::style
7675    )]
7676    const _: () = {
7677        use alloy::sol_types as alloy_sol_types;
7678        #[automatically_derived]
7679        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7680            type DataTuple<'a> = ();
7681            type DataToken<'a> = <Self::DataTuple<
7682                'a,
7683            > as alloy_sol_types::SolType>::Token<'a>;
7684            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7685            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7686            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7687                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7688                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7689                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7690            ]);
7691            const ANONYMOUS: bool = false;
7692            #[allow(unused_variables)]
7693            #[inline]
7694            fn new(
7695                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7696                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7697            ) -> Self {
7698                Self {}
7699            }
7700            #[inline]
7701            fn check_signature(
7702                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7703            ) -> alloy_sol_types::Result<()> {
7704                if topics.0 != Self::SIGNATURE_HASH {
7705                    return Err(
7706                        alloy_sol_types::Error::invalid_event_signature_hash(
7707                            Self::SIGNATURE,
7708                            topics.0,
7709                            Self::SIGNATURE_HASH,
7710                        ),
7711                    );
7712                }
7713                Ok(())
7714            }
7715            #[inline]
7716            fn tokenize_body(&self) -> Self::DataToken<'_> {
7717                ()
7718            }
7719            #[inline]
7720            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7721                (Self::SIGNATURE_HASH.into(),)
7722            }
7723            #[inline]
7724            fn encode_topics_raw(
7725                &self,
7726                out: &mut [alloy_sol_types::abi::token::WordToken],
7727            ) -> alloy_sol_types::Result<()> {
7728                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7729                    return Err(alloy_sol_types::Error::Overrun);
7730                }
7731                out[0usize] = alloy_sol_types::abi::token::WordToken(
7732                    Self::SIGNATURE_HASH,
7733                );
7734                Ok(())
7735            }
7736        }
7737        #[automatically_derived]
7738        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7739            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7740                From::from(self)
7741            }
7742            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7743                From::from(&self)
7744            }
7745        }
7746        #[automatically_derived]
7747        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7748            #[inline]
7749            fn from(
7750                this: &PermissionedProverNotRequired,
7751            ) -> alloy_sol_types::private::LogData {
7752                alloy_sol_types::SolEvent::encode_log_data(this)
7753            }
7754        }
7755    };
7756    #[derive(serde::Serialize, serde::Deserialize)]
7757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7758    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7759```solidity
7760event PermissionedProverRequired(address permissionedProver);
7761```*/
7762    #[allow(
7763        non_camel_case_types,
7764        non_snake_case,
7765        clippy::pub_underscore_fields,
7766        clippy::style
7767    )]
7768    #[derive(Clone)]
7769    pub struct PermissionedProverRequired {
7770        #[allow(missing_docs)]
7771        pub permissionedProver: alloy::sol_types::private::Address,
7772    }
7773    #[allow(
7774        non_camel_case_types,
7775        non_snake_case,
7776        clippy::pub_underscore_fields,
7777        clippy::style
7778    )]
7779    const _: () = {
7780        use alloy::sol_types as alloy_sol_types;
7781        #[automatically_derived]
7782        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7783            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7784            type DataToken<'a> = <Self::DataTuple<
7785                'a,
7786            > as alloy_sol_types::SolType>::Token<'a>;
7787            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7788            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7789            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7790                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7791                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7792                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7793            ]);
7794            const ANONYMOUS: bool = false;
7795            #[allow(unused_variables)]
7796            #[inline]
7797            fn new(
7798                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7799                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7800            ) -> Self {
7801                Self { permissionedProver: data.0 }
7802            }
7803            #[inline]
7804            fn check_signature(
7805                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7806            ) -> alloy_sol_types::Result<()> {
7807                if topics.0 != Self::SIGNATURE_HASH {
7808                    return Err(
7809                        alloy_sol_types::Error::invalid_event_signature_hash(
7810                            Self::SIGNATURE,
7811                            topics.0,
7812                            Self::SIGNATURE_HASH,
7813                        ),
7814                    );
7815                }
7816                Ok(())
7817            }
7818            #[inline]
7819            fn tokenize_body(&self) -> Self::DataToken<'_> {
7820                (
7821                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7822                        &self.permissionedProver,
7823                    ),
7824                )
7825            }
7826            #[inline]
7827            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7828                (Self::SIGNATURE_HASH.into(),)
7829            }
7830            #[inline]
7831            fn encode_topics_raw(
7832                &self,
7833                out: &mut [alloy_sol_types::abi::token::WordToken],
7834            ) -> alloy_sol_types::Result<()> {
7835                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7836                    return Err(alloy_sol_types::Error::Overrun);
7837                }
7838                out[0usize] = alloy_sol_types::abi::token::WordToken(
7839                    Self::SIGNATURE_HASH,
7840                );
7841                Ok(())
7842            }
7843        }
7844        #[automatically_derived]
7845        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7846            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7847                From::from(self)
7848            }
7849            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7850                From::from(&self)
7851            }
7852        }
7853        #[automatically_derived]
7854        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7855            #[inline]
7856            fn from(
7857                this: &PermissionedProverRequired,
7858            ) -> alloy_sol_types::private::LogData {
7859                alloy_sol_types::SolEvent::encode_log_data(this)
7860            }
7861        }
7862    };
7863    #[derive(serde::Serialize, serde::Deserialize)]
7864    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7865    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7866```solidity
7867event Upgrade(address implementation);
7868```*/
7869    #[allow(
7870        non_camel_case_types,
7871        non_snake_case,
7872        clippy::pub_underscore_fields,
7873        clippy::style
7874    )]
7875    #[derive(Clone)]
7876    pub struct Upgrade {
7877        #[allow(missing_docs)]
7878        pub implementation: alloy::sol_types::private::Address,
7879    }
7880    #[allow(
7881        non_camel_case_types,
7882        non_snake_case,
7883        clippy::pub_underscore_fields,
7884        clippy::style
7885    )]
7886    const _: () = {
7887        use alloy::sol_types as alloy_sol_types;
7888        #[automatically_derived]
7889        impl alloy_sol_types::SolEvent for Upgrade {
7890            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7891            type DataToken<'a> = <Self::DataTuple<
7892                'a,
7893            > as alloy_sol_types::SolType>::Token<'a>;
7894            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7895            const SIGNATURE: &'static str = "Upgrade(address)";
7896            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7897                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7898                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7899                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7900            ]);
7901            const ANONYMOUS: bool = false;
7902            #[allow(unused_variables)]
7903            #[inline]
7904            fn new(
7905                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7906                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7907            ) -> Self {
7908                Self { implementation: data.0 }
7909            }
7910            #[inline]
7911            fn check_signature(
7912                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7913            ) -> alloy_sol_types::Result<()> {
7914                if topics.0 != Self::SIGNATURE_HASH {
7915                    return Err(
7916                        alloy_sol_types::Error::invalid_event_signature_hash(
7917                            Self::SIGNATURE,
7918                            topics.0,
7919                            Self::SIGNATURE_HASH,
7920                        ),
7921                    );
7922                }
7923                Ok(())
7924            }
7925            #[inline]
7926            fn tokenize_body(&self) -> Self::DataToken<'_> {
7927                (
7928                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7929                        &self.implementation,
7930                    ),
7931                )
7932            }
7933            #[inline]
7934            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7935                (Self::SIGNATURE_HASH.into(),)
7936            }
7937            #[inline]
7938            fn encode_topics_raw(
7939                &self,
7940                out: &mut [alloy_sol_types::abi::token::WordToken],
7941            ) -> alloy_sol_types::Result<()> {
7942                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7943                    return Err(alloy_sol_types::Error::Overrun);
7944                }
7945                out[0usize] = alloy_sol_types::abi::token::WordToken(
7946                    Self::SIGNATURE_HASH,
7947                );
7948                Ok(())
7949            }
7950        }
7951        #[automatically_derived]
7952        impl alloy_sol_types::private::IntoLogData for Upgrade {
7953            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7954                From::from(self)
7955            }
7956            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7957                From::from(&self)
7958            }
7959        }
7960        #[automatically_derived]
7961        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7962            #[inline]
7963            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7964                alloy_sol_types::SolEvent::encode_log_data(this)
7965            }
7966        }
7967    };
7968    #[derive(serde::Serialize, serde::Deserialize)]
7969    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7970    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7971```solidity
7972event Upgraded(address indexed implementation);
7973```*/
7974    #[allow(
7975        non_camel_case_types,
7976        non_snake_case,
7977        clippy::pub_underscore_fields,
7978        clippy::style
7979    )]
7980    #[derive(Clone)]
7981    pub struct Upgraded {
7982        #[allow(missing_docs)]
7983        pub implementation: alloy::sol_types::private::Address,
7984    }
7985    #[allow(
7986        non_camel_case_types,
7987        non_snake_case,
7988        clippy::pub_underscore_fields,
7989        clippy::style
7990    )]
7991    const _: () = {
7992        use alloy::sol_types as alloy_sol_types;
7993        #[automatically_derived]
7994        impl alloy_sol_types::SolEvent for Upgraded {
7995            type DataTuple<'a> = ();
7996            type DataToken<'a> = <Self::DataTuple<
7997                'a,
7998            > as alloy_sol_types::SolType>::Token<'a>;
7999            type TopicList = (
8000                alloy_sol_types::sol_data::FixedBytes<32>,
8001                alloy::sol_types::sol_data::Address,
8002            );
8003            const SIGNATURE: &'static str = "Upgraded(address)";
8004            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8005                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
8006                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
8007                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
8008            ]);
8009            const ANONYMOUS: bool = false;
8010            #[allow(unused_variables)]
8011            #[inline]
8012            fn new(
8013                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8014                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8015            ) -> Self {
8016                Self { implementation: topics.1 }
8017            }
8018            #[inline]
8019            fn check_signature(
8020                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8021            ) -> alloy_sol_types::Result<()> {
8022                if topics.0 != Self::SIGNATURE_HASH {
8023                    return Err(
8024                        alloy_sol_types::Error::invalid_event_signature_hash(
8025                            Self::SIGNATURE,
8026                            topics.0,
8027                            Self::SIGNATURE_HASH,
8028                        ),
8029                    );
8030                }
8031                Ok(())
8032            }
8033            #[inline]
8034            fn tokenize_body(&self) -> Self::DataToken<'_> {
8035                ()
8036            }
8037            #[inline]
8038            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8039                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8040            }
8041            #[inline]
8042            fn encode_topics_raw(
8043                &self,
8044                out: &mut [alloy_sol_types::abi::token::WordToken],
8045            ) -> alloy_sol_types::Result<()> {
8046                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8047                    return Err(alloy_sol_types::Error::Overrun);
8048                }
8049                out[0usize] = alloy_sol_types::abi::token::WordToken(
8050                    Self::SIGNATURE_HASH,
8051                );
8052                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8053                    &self.implementation,
8054                );
8055                Ok(())
8056            }
8057        }
8058        #[automatically_derived]
8059        impl alloy_sol_types::private::IntoLogData for Upgraded {
8060            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8061                From::from(self)
8062            }
8063            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8064                From::from(&self)
8065            }
8066        }
8067        #[automatically_derived]
8068        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8069            #[inline]
8070            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8071                alloy_sol_types::SolEvent::encode_log_data(this)
8072            }
8073        }
8074    };
8075    #[derive(serde::Serialize, serde::Deserialize)]
8076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8077    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8078```solidity
8079function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8080```*/
8081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8082    #[derive(Clone)]
8083    pub struct UPGRADE_INTERFACE_VERSIONCall;
8084    #[derive(serde::Serialize, serde::Deserialize)]
8085    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8086    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8088    #[derive(Clone)]
8089    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8090        #[allow(missing_docs)]
8091        pub _0: alloy::sol_types::private::String,
8092    }
8093    #[allow(
8094        non_camel_case_types,
8095        non_snake_case,
8096        clippy::pub_underscore_fields,
8097        clippy::style
8098    )]
8099    const _: () = {
8100        use alloy::sol_types as alloy_sol_types;
8101        {
8102            #[doc(hidden)]
8103            #[allow(dead_code)]
8104            type UnderlyingSolTuple<'a> = ();
8105            #[doc(hidden)]
8106            type UnderlyingRustTuple<'a> = ();
8107            #[cfg(test)]
8108            #[allow(dead_code, unreachable_patterns)]
8109            fn _type_assertion(
8110                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8111            ) {
8112                match _t {
8113                    alloy_sol_types::private::AssertTypeEq::<
8114                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8115                    >(_) => {}
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8121            for UnderlyingRustTuple<'_> {
8122                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8123                    ()
8124                }
8125            }
8126            #[automatically_derived]
8127            #[doc(hidden)]
8128            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8129            for UPGRADE_INTERFACE_VERSIONCall {
8130                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8131                    Self
8132                }
8133            }
8134        }
8135        {
8136            #[doc(hidden)]
8137            #[allow(dead_code)]
8138            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8139            #[doc(hidden)]
8140            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8141            #[cfg(test)]
8142            #[allow(dead_code, unreachable_patterns)]
8143            fn _type_assertion(
8144                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8145            ) {
8146                match _t {
8147                    alloy_sol_types::private::AssertTypeEq::<
8148                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8149                    >(_) => {}
8150                }
8151            }
8152            #[automatically_derived]
8153            #[doc(hidden)]
8154            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8155            for UnderlyingRustTuple<'_> {
8156                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8157                    (value._0,)
8158                }
8159            }
8160            #[automatically_derived]
8161            #[doc(hidden)]
8162            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8163            for UPGRADE_INTERFACE_VERSIONReturn {
8164                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8165                    Self { _0: tuple.0 }
8166                }
8167            }
8168        }
8169        #[automatically_derived]
8170        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8171            type Parameters<'a> = ();
8172            type Token<'a> = <Self::Parameters<
8173                'a,
8174            > as alloy_sol_types::SolType>::Token<'a>;
8175            type Return = alloy::sol_types::private::String;
8176            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8177            type ReturnToken<'a> = <Self::ReturnTuple<
8178                'a,
8179            > as alloy_sol_types::SolType>::Token<'a>;
8180            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8181            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8182            #[inline]
8183            fn new<'a>(
8184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8185            ) -> Self {
8186                tuple.into()
8187            }
8188            #[inline]
8189            fn tokenize(&self) -> Self::Token<'_> {
8190                ()
8191            }
8192            #[inline]
8193            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8194                (
8195                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8196                        ret,
8197                    ),
8198                )
8199            }
8200            #[inline]
8201            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8202                <Self::ReturnTuple<
8203                    '_,
8204                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8205                    .map(|r| {
8206                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8207                        r._0
8208                    })
8209            }
8210            #[inline]
8211            fn abi_decode_returns_validate(
8212                data: &[u8],
8213            ) -> alloy_sol_types::Result<Self::Return> {
8214                <Self::ReturnTuple<
8215                    '_,
8216                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8217                    .map(|r| {
8218                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8219                        r._0
8220                    })
8221            }
8222        }
8223    };
8224    #[derive(serde::Serialize, serde::Deserialize)]
8225    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8226    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8227```solidity
8228function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8229```*/
8230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8231    #[derive(Clone)]
8232    pub struct _getVkCall;
8233    #[derive(serde::Serialize, serde::Deserialize)]
8234    #[derive()]
8235    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8237    #[derive(Clone)]
8238    pub struct _getVkReturn {
8239        #[allow(missing_docs)]
8240        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8241    }
8242    #[allow(
8243        non_camel_case_types,
8244        non_snake_case,
8245        clippy::pub_underscore_fields,
8246        clippy::style
8247    )]
8248    const _: () = {
8249        use alloy::sol_types as alloy_sol_types;
8250        {
8251            #[doc(hidden)]
8252            #[allow(dead_code)]
8253            type UnderlyingSolTuple<'a> = ();
8254            #[doc(hidden)]
8255            type UnderlyingRustTuple<'a> = ();
8256            #[cfg(test)]
8257            #[allow(dead_code, unreachable_patterns)]
8258            fn _type_assertion(
8259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8260            ) {
8261                match _t {
8262                    alloy_sol_types::private::AssertTypeEq::<
8263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8264                    >(_) => {}
8265                }
8266            }
8267            #[automatically_derived]
8268            #[doc(hidden)]
8269            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8270                fn from(value: _getVkCall) -> Self {
8271                    ()
8272                }
8273            }
8274            #[automatically_derived]
8275            #[doc(hidden)]
8276            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8277                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8278                    Self
8279                }
8280            }
8281        }
8282        {
8283            #[doc(hidden)]
8284            #[allow(dead_code)]
8285            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8286            #[doc(hidden)]
8287            type UnderlyingRustTuple<'a> = (
8288                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8289            );
8290            #[cfg(test)]
8291            #[allow(dead_code, unreachable_patterns)]
8292            fn _type_assertion(
8293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8294            ) {
8295                match _t {
8296                    alloy_sol_types::private::AssertTypeEq::<
8297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8298                    >(_) => {}
8299                }
8300            }
8301            #[automatically_derived]
8302            #[doc(hidden)]
8303            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8304                fn from(value: _getVkReturn) -> Self {
8305                    (value.vk,)
8306                }
8307            }
8308            #[automatically_derived]
8309            #[doc(hidden)]
8310            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8311                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8312                    Self { vk: tuple.0 }
8313                }
8314            }
8315        }
8316        #[automatically_derived]
8317        impl alloy_sol_types::SolCall for _getVkCall {
8318            type Parameters<'a> = ();
8319            type Token<'a> = <Self::Parameters<
8320                'a,
8321            > as alloy_sol_types::SolType>::Token<'a>;
8322            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8323            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8324            type ReturnToken<'a> = <Self::ReturnTuple<
8325                'a,
8326            > as alloy_sol_types::SolType>::Token<'a>;
8327            const SIGNATURE: &'static str = "_getVk()";
8328            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8329            #[inline]
8330            fn new<'a>(
8331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8332            ) -> Self {
8333                tuple.into()
8334            }
8335            #[inline]
8336            fn tokenize(&self) -> Self::Token<'_> {
8337                ()
8338            }
8339            #[inline]
8340            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8341                (
8342                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8343                        ret,
8344                    ),
8345                )
8346            }
8347            #[inline]
8348            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8349                <Self::ReturnTuple<
8350                    '_,
8351                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8352                    .map(|r| {
8353                        let r: _getVkReturn = r.into();
8354                        r.vk
8355                    })
8356            }
8357            #[inline]
8358            fn abi_decode_returns_validate(
8359                data: &[u8],
8360            ) -> alloy_sol_types::Result<Self::Return> {
8361                <Self::ReturnTuple<
8362                    '_,
8363                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8364                    .map(|r| {
8365                        let r: _getVkReturn = r.into();
8366                        r.vk
8367                    })
8368            }
8369        }
8370    };
8371    #[derive(serde::Serialize, serde::Deserialize)]
8372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8373    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8374```solidity
8375function blocksPerEpoch() external view returns (uint64);
8376```*/
8377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8378    #[derive(Clone)]
8379    pub struct blocksPerEpochCall;
8380    #[derive(serde::Serialize, serde::Deserialize)]
8381    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8382    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8384    #[derive(Clone)]
8385    pub struct blocksPerEpochReturn {
8386        #[allow(missing_docs)]
8387        pub _0: u64,
8388    }
8389    #[allow(
8390        non_camel_case_types,
8391        non_snake_case,
8392        clippy::pub_underscore_fields,
8393        clippy::style
8394    )]
8395    const _: () = {
8396        use alloy::sol_types as alloy_sol_types;
8397        {
8398            #[doc(hidden)]
8399            #[allow(dead_code)]
8400            type UnderlyingSolTuple<'a> = ();
8401            #[doc(hidden)]
8402            type UnderlyingRustTuple<'a> = ();
8403            #[cfg(test)]
8404            #[allow(dead_code, unreachable_patterns)]
8405            fn _type_assertion(
8406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8407            ) {
8408                match _t {
8409                    alloy_sol_types::private::AssertTypeEq::<
8410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8411                    >(_) => {}
8412                }
8413            }
8414            #[automatically_derived]
8415            #[doc(hidden)]
8416            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8417                fn from(value: blocksPerEpochCall) -> Self {
8418                    ()
8419                }
8420            }
8421            #[automatically_derived]
8422            #[doc(hidden)]
8423            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8425                    Self
8426                }
8427            }
8428        }
8429        {
8430            #[doc(hidden)]
8431            #[allow(dead_code)]
8432            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8433            #[doc(hidden)]
8434            type UnderlyingRustTuple<'a> = (u64,);
8435            #[cfg(test)]
8436            #[allow(dead_code, unreachable_patterns)]
8437            fn _type_assertion(
8438                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8439            ) {
8440                match _t {
8441                    alloy_sol_types::private::AssertTypeEq::<
8442                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8443                    >(_) => {}
8444                }
8445            }
8446            #[automatically_derived]
8447            #[doc(hidden)]
8448            impl ::core::convert::From<blocksPerEpochReturn>
8449            for UnderlyingRustTuple<'_> {
8450                fn from(value: blocksPerEpochReturn) -> Self {
8451                    (value._0,)
8452                }
8453            }
8454            #[automatically_derived]
8455            #[doc(hidden)]
8456            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8457            for blocksPerEpochReturn {
8458                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8459                    Self { _0: tuple.0 }
8460                }
8461            }
8462        }
8463        #[automatically_derived]
8464        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8465            type Parameters<'a> = ();
8466            type Token<'a> = <Self::Parameters<
8467                'a,
8468            > as alloy_sol_types::SolType>::Token<'a>;
8469            type Return = u64;
8470            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8471            type ReturnToken<'a> = <Self::ReturnTuple<
8472                'a,
8473            > as alloy_sol_types::SolType>::Token<'a>;
8474            const SIGNATURE: &'static str = "blocksPerEpoch()";
8475            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8476            #[inline]
8477            fn new<'a>(
8478                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8479            ) -> Self {
8480                tuple.into()
8481            }
8482            #[inline]
8483            fn tokenize(&self) -> Self::Token<'_> {
8484                ()
8485            }
8486            #[inline]
8487            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8488                (
8489                    <alloy::sol_types::sol_data::Uint<
8490                        64,
8491                    > as alloy_sol_types::SolType>::tokenize(ret),
8492                )
8493            }
8494            #[inline]
8495            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8496                <Self::ReturnTuple<
8497                    '_,
8498                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8499                    .map(|r| {
8500                        let r: blocksPerEpochReturn = r.into();
8501                        r._0
8502                    })
8503            }
8504            #[inline]
8505            fn abi_decode_returns_validate(
8506                data: &[u8],
8507            ) -> alloy_sol_types::Result<Self::Return> {
8508                <Self::ReturnTuple<
8509                    '_,
8510                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8511                    .map(|r| {
8512                        let r: blocksPerEpochReturn = r.into();
8513                        r._0
8514                    })
8515            }
8516        }
8517    };
8518    #[derive(serde::Serialize, serde::Deserialize)]
8519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8520    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8521```solidity
8522function currentBlockNumber() external view returns (uint256);
8523```*/
8524    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8525    #[derive(Clone)]
8526    pub struct currentBlockNumberCall;
8527    #[derive(serde::Serialize, serde::Deserialize)]
8528    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8529    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8531    #[derive(Clone)]
8532    pub struct currentBlockNumberReturn {
8533        #[allow(missing_docs)]
8534        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8535    }
8536    #[allow(
8537        non_camel_case_types,
8538        non_snake_case,
8539        clippy::pub_underscore_fields,
8540        clippy::style
8541    )]
8542    const _: () = {
8543        use alloy::sol_types as alloy_sol_types;
8544        {
8545            #[doc(hidden)]
8546            #[allow(dead_code)]
8547            type UnderlyingSolTuple<'a> = ();
8548            #[doc(hidden)]
8549            type UnderlyingRustTuple<'a> = ();
8550            #[cfg(test)]
8551            #[allow(dead_code, unreachable_patterns)]
8552            fn _type_assertion(
8553                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8554            ) {
8555                match _t {
8556                    alloy_sol_types::private::AssertTypeEq::<
8557                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8558                    >(_) => {}
8559                }
8560            }
8561            #[automatically_derived]
8562            #[doc(hidden)]
8563            impl ::core::convert::From<currentBlockNumberCall>
8564            for UnderlyingRustTuple<'_> {
8565                fn from(value: currentBlockNumberCall) -> Self {
8566                    ()
8567                }
8568            }
8569            #[automatically_derived]
8570            #[doc(hidden)]
8571            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8572            for currentBlockNumberCall {
8573                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8574                    Self
8575                }
8576            }
8577        }
8578        {
8579            #[doc(hidden)]
8580            #[allow(dead_code)]
8581            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8582            #[doc(hidden)]
8583            type UnderlyingRustTuple<'a> = (
8584                alloy::sol_types::private::primitives::aliases::U256,
8585            );
8586            #[cfg(test)]
8587            #[allow(dead_code, unreachable_patterns)]
8588            fn _type_assertion(
8589                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8590            ) {
8591                match _t {
8592                    alloy_sol_types::private::AssertTypeEq::<
8593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8594                    >(_) => {}
8595                }
8596            }
8597            #[automatically_derived]
8598            #[doc(hidden)]
8599            impl ::core::convert::From<currentBlockNumberReturn>
8600            for UnderlyingRustTuple<'_> {
8601                fn from(value: currentBlockNumberReturn) -> Self {
8602                    (value._0,)
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8608            for currentBlockNumberReturn {
8609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8610                    Self { _0: tuple.0 }
8611                }
8612            }
8613        }
8614        #[automatically_derived]
8615        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8616            type Parameters<'a> = ();
8617            type Token<'a> = <Self::Parameters<
8618                'a,
8619            > as alloy_sol_types::SolType>::Token<'a>;
8620            type Return = alloy::sol_types::private::primitives::aliases::U256;
8621            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8622            type ReturnToken<'a> = <Self::ReturnTuple<
8623                'a,
8624            > as alloy_sol_types::SolType>::Token<'a>;
8625            const SIGNATURE: &'static str = "currentBlockNumber()";
8626            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8627            #[inline]
8628            fn new<'a>(
8629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8630            ) -> Self {
8631                tuple.into()
8632            }
8633            #[inline]
8634            fn tokenize(&self) -> Self::Token<'_> {
8635                ()
8636            }
8637            #[inline]
8638            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8639                (
8640                    <alloy::sol_types::sol_data::Uint<
8641                        256,
8642                    > as alloy_sol_types::SolType>::tokenize(ret),
8643                )
8644            }
8645            #[inline]
8646            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8647                <Self::ReturnTuple<
8648                    '_,
8649                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8650                    .map(|r| {
8651                        let r: currentBlockNumberReturn = r.into();
8652                        r._0
8653                    })
8654            }
8655            #[inline]
8656            fn abi_decode_returns_validate(
8657                data: &[u8],
8658            ) -> alloy_sol_types::Result<Self::Return> {
8659                <Self::ReturnTuple<
8660                    '_,
8661                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8662                    .map(|r| {
8663                        let r: currentBlockNumberReturn = r.into();
8664                        r._0
8665                    })
8666            }
8667        }
8668    };
8669    #[derive(serde::Serialize, serde::Deserialize)]
8670    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8671    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8672```solidity
8673function currentEpoch() external view returns (uint64);
8674```*/
8675    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8676    #[derive(Clone)]
8677    pub struct currentEpochCall;
8678    #[derive(serde::Serialize, serde::Deserialize)]
8679    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8680    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8682    #[derive(Clone)]
8683    pub struct currentEpochReturn {
8684        #[allow(missing_docs)]
8685        pub _0: u64,
8686    }
8687    #[allow(
8688        non_camel_case_types,
8689        non_snake_case,
8690        clippy::pub_underscore_fields,
8691        clippy::style
8692    )]
8693    const _: () = {
8694        use alloy::sol_types as alloy_sol_types;
8695        {
8696            #[doc(hidden)]
8697            #[allow(dead_code)]
8698            type UnderlyingSolTuple<'a> = ();
8699            #[doc(hidden)]
8700            type UnderlyingRustTuple<'a> = ();
8701            #[cfg(test)]
8702            #[allow(dead_code, unreachable_patterns)]
8703            fn _type_assertion(
8704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8705            ) {
8706                match _t {
8707                    alloy_sol_types::private::AssertTypeEq::<
8708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8709                    >(_) => {}
8710                }
8711            }
8712            #[automatically_derived]
8713            #[doc(hidden)]
8714            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8715                fn from(value: currentEpochCall) -> Self {
8716                    ()
8717                }
8718            }
8719            #[automatically_derived]
8720            #[doc(hidden)]
8721            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8722                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8723                    Self
8724                }
8725            }
8726        }
8727        {
8728            #[doc(hidden)]
8729            #[allow(dead_code)]
8730            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8731            #[doc(hidden)]
8732            type UnderlyingRustTuple<'a> = (u64,);
8733            #[cfg(test)]
8734            #[allow(dead_code, unreachable_patterns)]
8735            fn _type_assertion(
8736                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8737            ) {
8738                match _t {
8739                    alloy_sol_types::private::AssertTypeEq::<
8740                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8741                    >(_) => {}
8742                }
8743            }
8744            #[automatically_derived]
8745            #[doc(hidden)]
8746            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8747                fn from(value: currentEpochReturn) -> Self {
8748                    (value._0,)
8749                }
8750            }
8751            #[automatically_derived]
8752            #[doc(hidden)]
8753            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8755                    Self { _0: tuple.0 }
8756                }
8757            }
8758        }
8759        #[automatically_derived]
8760        impl alloy_sol_types::SolCall for currentEpochCall {
8761            type Parameters<'a> = ();
8762            type Token<'a> = <Self::Parameters<
8763                'a,
8764            > as alloy_sol_types::SolType>::Token<'a>;
8765            type Return = u64;
8766            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8767            type ReturnToken<'a> = <Self::ReturnTuple<
8768                'a,
8769            > as alloy_sol_types::SolType>::Token<'a>;
8770            const SIGNATURE: &'static str = "currentEpoch()";
8771            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8772            #[inline]
8773            fn new<'a>(
8774                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8775            ) -> Self {
8776                tuple.into()
8777            }
8778            #[inline]
8779            fn tokenize(&self) -> Self::Token<'_> {
8780                ()
8781            }
8782            #[inline]
8783            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8784                (
8785                    <alloy::sol_types::sol_data::Uint<
8786                        64,
8787                    > as alloy_sol_types::SolType>::tokenize(ret),
8788                )
8789            }
8790            #[inline]
8791            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8792                <Self::ReturnTuple<
8793                    '_,
8794                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8795                    .map(|r| {
8796                        let r: currentEpochReturn = r.into();
8797                        r._0
8798                    })
8799            }
8800            #[inline]
8801            fn abi_decode_returns_validate(
8802                data: &[u8],
8803            ) -> alloy_sol_types::Result<Self::Return> {
8804                <Self::ReturnTuple<
8805                    '_,
8806                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8807                    .map(|r| {
8808                        let r: currentEpochReturn = r.into();
8809                        r._0
8810                    })
8811            }
8812        }
8813    };
8814    #[derive(serde::Serialize, serde::Deserialize)]
8815    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8816    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8817```solidity
8818function disablePermissionedProverMode() external;
8819```*/
8820    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8821    #[derive(Clone)]
8822    pub struct disablePermissionedProverModeCall;
8823    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8825    #[derive(Clone)]
8826    pub struct disablePermissionedProverModeReturn {}
8827    #[allow(
8828        non_camel_case_types,
8829        non_snake_case,
8830        clippy::pub_underscore_fields,
8831        clippy::style
8832    )]
8833    const _: () = {
8834        use alloy::sol_types as alloy_sol_types;
8835        {
8836            #[doc(hidden)]
8837            #[allow(dead_code)]
8838            type UnderlyingSolTuple<'a> = ();
8839            #[doc(hidden)]
8840            type UnderlyingRustTuple<'a> = ();
8841            #[cfg(test)]
8842            #[allow(dead_code, unreachable_patterns)]
8843            fn _type_assertion(
8844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8845            ) {
8846                match _t {
8847                    alloy_sol_types::private::AssertTypeEq::<
8848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8849                    >(_) => {}
8850                }
8851            }
8852            #[automatically_derived]
8853            #[doc(hidden)]
8854            impl ::core::convert::From<disablePermissionedProverModeCall>
8855            for UnderlyingRustTuple<'_> {
8856                fn from(value: disablePermissionedProverModeCall) -> Self {
8857                    ()
8858                }
8859            }
8860            #[automatically_derived]
8861            #[doc(hidden)]
8862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8863            for disablePermissionedProverModeCall {
8864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8865                    Self
8866                }
8867            }
8868        }
8869        {
8870            #[doc(hidden)]
8871            #[allow(dead_code)]
8872            type UnderlyingSolTuple<'a> = ();
8873            #[doc(hidden)]
8874            type UnderlyingRustTuple<'a> = ();
8875            #[cfg(test)]
8876            #[allow(dead_code, unreachable_patterns)]
8877            fn _type_assertion(
8878                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8879            ) {
8880                match _t {
8881                    alloy_sol_types::private::AssertTypeEq::<
8882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8883                    >(_) => {}
8884                }
8885            }
8886            #[automatically_derived]
8887            #[doc(hidden)]
8888            impl ::core::convert::From<disablePermissionedProverModeReturn>
8889            for UnderlyingRustTuple<'_> {
8890                fn from(value: disablePermissionedProverModeReturn) -> Self {
8891                    ()
8892                }
8893            }
8894            #[automatically_derived]
8895            #[doc(hidden)]
8896            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8897            for disablePermissionedProverModeReturn {
8898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8899                    Self {}
8900                }
8901            }
8902        }
8903        impl disablePermissionedProverModeReturn {
8904            fn _tokenize(
8905                &self,
8906            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8907                '_,
8908            > {
8909                ()
8910            }
8911        }
8912        #[automatically_derived]
8913        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8914            type Parameters<'a> = ();
8915            type Token<'a> = <Self::Parameters<
8916                'a,
8917            > as alloy_sol_types::SolType>::Token<'a>;
8918            type Return = disablePermissionedProverModeReturn;
8919            type ReturnTuple<'a> = ();
8920            type ReturnToken<'a> = <Self::ReturnTuple<
8921                'a,
8922            > as alloy_sol_types::SolType>::Token<'a>;
8923            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8924            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8925            #[inline]
8926            fn new<'a>(
8927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8928            ) -> Self {
8929                tuple.into()
8930            }
8931            #[inline]
8932            fn tokenize(&self) -> Self::Token<'_> {
8933                ()
8934            }
8935            #[inline]
8936            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8937                disablePermissionedProverModeReturn::_tokenize(ret)
8938            }
8939            #[inline]
8940            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8941                <Self::ReturnTuple<
8942                    '_,
8943                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8944                    .map(Into::into)
8945            }
8946            #[inline]
8947            fn abi_decode_returns_validate(
8948                data: &[u8],
8949            ) -> alloy_sol_types::Result<Self::Return> {
8950                <Self::ReturnTuple<
8951                    '_,
8952                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8953                    .map(Into::into)
8954            }
8955        }
8956    };
8957    #[derive(serde::Serialize, serde::Deserialize)]
8958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8959    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8960```solidity
8961function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8962```*/
8963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8964    #[derive(Clone)]
8965    pub struct epochFromBlockNumberCall {
8966        #[allow(missing_docs)]
8967        pub _blockNum: u64,
8968        #[allow(missing_docs)]
8969        pub _blocksPerEpoch: u64,
8970    }
8971    #[derive(serde::Serialize, serde::Deserialize)]
8972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8973    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8974    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8975    #[derive(Clone)]
8976    pub struct epochFromBlockNumberReturn {
8977        #[allow(missing_docs)]
8978        pub _0: u64,
8979    }
8980    #[allow(
8981        non_camel_case_types,
8982        non_snake_case,
8983        clippy::pub_underscore_fields,
8984        clippy::style
8985    )]
8986    const _: () = {
8987        use alloy::sol_types as alloy_sol_types;
8988        {
8989            #[doc(hidden)]
8990            #[allow(dead_code)]
8991            type UnderlyingSolTuple<'a> = (
8992                alloy::sol_types::sol_data::Uint<64>,
8993                alloy::sol_types::sol_data::Uint<64>,
8994            );
8995            #[doc(hidden)]
8996            type UnderlyingRustTuple<'a> = (u64, u64);
8997            #[cfg(test)]
8998            #[allow(dead_code, unreachable_patterns)]
8999            fn _type_assertion(
9000                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9001            ) {
9002                match _t {
9003                    alloy_sol_types::private::AssertTypeEq::<
9004                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9005                    >(_) => {}
9006                }
9007            }
9008            #[automatically_derived]
9009            #[doc(hidden)]
9010            impl ::core::convert::From<epochFromBlockNumberCall>
9011            for UnderlyingRustTuple<'_> {
9012                fn from(value: epochFromBlockNumberCall) -> Self {
9013                    (value._blockNum, value._blocksPerEpoch)
9014                }
9015            }
9016            #[automatically_derived]
9017            #[doc(hidden)]
9018            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9019            for epochFromBlockNumberCall {
9020                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9021                    Self {
9022                        _blockNum: tuple.0,
9023                        _blocksPerEpoch: tuple.1,
9024                    }
9025                }
9026            }
9027        }
9028        {
9029            #[doc(hidden)]
9030            #[allow(dead_code)]
9031            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9032            #[doc(hidden)]
9033            type UnderlyingRustTuple<'a> = (u64,);
9034            #[cfg(test)]
9035            #[allow(dead_code, unreachable_patterns)]
9036            fn _type_assertion(
9037                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9038            ) {
9039                match _t {
9040                    alloy_sol_types::private::AssertTypeEq::<
9041                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9042                    >(_) => {}
9043                }
9044            }
9045            #[automatically_derived]
9046            #[doc(hidden)]
9047            impl ::core::convert::From<epochFromBlockNumberReturn>
9048            for UnderlyingRustTuple<'_> {
9049                fn from(value: epochFromBlockNumberReturn) -> Self {
9050                    (value._0,)
9051                }
9052            }
9053            #[automatically_derived]
9054            #[doc(hidden)]
9055            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9056            for epochFromBlockNumberReturn {
9057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9058                    Self { _0: tuple.0 }
9059                }
9060            }
9061        }
9062        #[automatically_derived]
9063        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9064            type Parameters<'a> = (
9065                alloy::sol_types::sol_data::Uint<64>,
9066                alloy::sol_types::sol_data::Uint<64>,
9067            );
9068            type Token<'a> = <Self::Parameters<
9069                'a,
9070            > as alloy_sol_types::SolType>::Token<'a>;
9071            type Return = u64;
9072            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9073            type ReturnToken<'a> = <Self::ReturnTuple<
9074                'a,
9075            > as alloy_sol_types::SolType>::Token<'a>;
9076            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9077            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9078            #[inline]
9079            fn new<'a>(
9080                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9081            ) -> Self {
9082                tuple.into()
9083            }
9084            #[inline]
9085            fn tokenize(&self) -> Self::Token<'_> {
9086                (
9087                    <alloy::sol_types::sol_data::Uint<
9088                        64,
9089                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9090                    <alloy::sol_types::sol_data::Uint<
9091                        64,
9092                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9093                )
9094            }
9095            #[inline]
9096            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9097                (
9098                    <alloy::sol_types::sol_data::Uint<
9099                        64,
9100                    > as alloy_sol_types::SolType>::tokenize(ret),
9101                )
9102            }
9103            #[inline]
9104            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9105                <Self::ReturnTuple<
9106                    '_,
9107                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9108                    .map(|r| {
9109                        let r: epochFromBlockNumberReturn = r.into();
9110                        r._0
9111                    })
9112            }
9113            #[inline]
9114            fn abi_decode_returns_validate(
9115                data: &[u8],
9116            ) -> alloy_sol_types::Result<Self::Return> {
9117                <Self::ReturnTuple<
9118                    '_,
9119                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9120                    .map(|r| {
9121                        let r: epochFromBlockNumberReturn = r.into();
9122                        r._0
9123                    })
9124            }
9125        }
9126    };
9127    #[derive(serde::Serialize, serde::Deserialize)]
9128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9129    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9130```solidity
9131function epochStartBlock() external view returns (uint64);
9132```*/
9133    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9134    #[derive(Clone)]
9135    pub struct epochStartBlockCall;
9136    #[derive(serde::Serialize, serde::Deserialize)]
9137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9138    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9140    #[derive(Clone)]
9141    pub struct epochStartBlockReturn {
9142        #[allow(missing_docs)]
9143        pub _0: u64,
9144    }
9145    #[allow(
9146        non_camel_case_types,
9147        non_snake_case,
9148        clippy::pub_underscore_fields,
9149        clippy::style
9150    )]
9151    const _: () = {
9152        use alloy::sol_types as alloy_sol_types;
9153        {
9154            #[doc(hidden)]
9155            #[allow(dead_code)]
9156            type UnderlyingSolTuple<'a> = ();
9157            #[doc(hidden)]
9158            type UnderlyingRustTuple<'a> = ();
9159            #[cfg(test)]
9160            #[allow(dead_code, unreachable_patterns)]
9161            fn _type_assertion(
9162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9163            ) {
9164                match _t {
9165                    alloy_sol_types::private::AssertTypeEq::<
9166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9167                    >(_) => {}
9168                }
9169            }
9170            #[automatically_derived]
9171            #[doc(hidden)]
9172            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9173                fn from(value: epochStartBlockCall) -> Self {
9174                    ()
9175                }
9176            }
9177            #[automatically_derived]
9178            #[doc(hidden)]
9179            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9181                    Self
9182                }
9183            }
9184        }
9185        {
9186            #[doc(hidden)]
9187            #[allow(dead_code)]
9188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9189            #[doc(hidden)]
9190            type UnderlyingRustTuple<'a> = (u64,);
9191            #[cfg(test)]
9192            #[allow(dead_code, unreachable_patterns)]
9193            fn _type_assertion(
9194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9195            ) {
9196                match _t {
9197                    alloy_sol_types::private::AssertTypeEq::<
9198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9199                    >(_) => {}
9200                }
9201            }
9202            #[automatically_derived]
9203            #[doc(hidden)]
9204            impl ::core::convert::From<epochStartBlockReturn>
9205            for UnderlyingRustTuple<'_> {
9206                fn from(value: epochStartBlockReturn) -> Self {
9207                    (value._0,)
9208                }
9209            }
9210            #[automatically_derived]
9211            #[doc(hidden)]
9212            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9213            for epochStartBlockReturn {
9214                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9215                    Self { _0: tuple.0 }
9216                }
9217            }
9218        }
9219        #[automatically_derived]
9220        impl alloy_sol_types::SolCall for epochStartBlockCall {
9221            type Parameters<'a> = ();
9222            type Token<'a> = <Self::Parameters<
9223                'a,
9224            > as alloy_sol_types::SolType>::Token<'a>;
9225            type Return = u64;
9226            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9227            type ReturnToken<'a> = <Self::ReturnTuple<
9228                'a,
9229            > as alloy_sol_types::SolType>::Token<'a>;
9230            const SIGNATURE: &'static str = "epochStartBlock()";
9231            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9232            #[inline]
9233            fn new<'a>(
9234                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9235            ) -> Self {
9236                tuple.into()
9237            }
9238            #[inline]
9239            fn tokenize(&self) -> Self::Token<'_> {
9240                ()
9241            }
9242            #[inline]
9243            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9244                (
9245                    <alloy::sol_types::sol_data::Uint<
9246                        64,
9247                    > as alloy_sol_types::SolType>::tokenize(ret),
9248                )
9249            }
9250            #[inline]
9251            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9252                <Self::ReturnTuple<
9253                    '_,
9254                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9255                    .map(|r| {
9256                        let r: epochStartBlockReturn = r.into();
9257                        r._0
9258                    })
9259            }
9260            #[inline]
9261            fn abi_decode_returns_validate(
9262                data: &[u8],
9263            ) -> alloy_sol_types::Result<Self::Return> {
9264                <Self::ReturnTuple<
9265                    '_,
9266                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9267                    .map(|r| {
9268                        let r: epochStartBlockReturn = r.into();
9269                        r._0
9270                    })
9271            }
9272        }
9273    };
9274    #[derive(serde::Serialize, serde::Deserialize)]
9275    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9276    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9277```solidity
9278function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9279```*/
9280    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9281    #[derive(Clone)]
9282    pub struct finalizedStateCall;
9283    #[derive(serde::Serialize, serde::Deserialize)]
9284    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9285    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9286    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9287    #[derive(Clone)]
9288    pub struct finalizedStateReturn {
9289        #[allow(missing_docs)]
9290        pub viewNum: u64,
9291        #[allow(missing_docs)]
9292        pub blockHeight: u64,
9293        #[allow(missing_docs)]
9294        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9295    }
9296    #[allow(
9297        non_camel_case_types,
9298        non_snake_case,
9299        clippy::pub_underscore_fields,
9300        clippy::style
9301    )]
9302    const _: () = {
9303        use alloy::sol_types as alloy_sol_types;
9304        {
9305            #[doc(hidden)]
9306            #[allow(dead_code)]
9307            type UnderlyingSolTuple<'a> = ();
9308            #[doc(hidden)]
9309            type UnderlyingRustTuple<'a> = ();
9310            #[cfg(test)]
9311            #[allow(dead_code, unreachable_patterns)]
9312            fn _type_assertion(
9313                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9314            ) {
9315                match _t {
9316                    alloy_sol_types::private::AssertTypeEq::<
9317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9318                    >(_) => {}
9319                }
9320            }
9321            #[automatically_derived]
9322            #[doc(hidden)]
9323            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9324                fn from(value: finalizedStateCall) -> Self {
9325                    ()
9326                }
9327            }
9328            #[automatically_derived]
9329            #[doc(hidden)]
9330            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9332                    Self
9333                }
9334            }
9335        }
9336        {
9337            #[doc(hidden)]
9338            #[allow(dead_code)]
9339            type UnderlyingSolTuple<'a> = (
9340                alloy::sol_types::sol_data::Uint<64>,
9341                alloy::sol_types::sol_data::Uint<64>,
9342                BN254::ScalarField,
9343            );
9344            #[doc(hidden)]
9345            type UnderlyingRustTuple<'a> = (
9346                u64,
9347                u64,
9348                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9349            );
9350            #[cfg(test)]
9351            #[allow(dead_code, unreachable_patterns)]
9352            fn _type_assertion(
9353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9354            ) {
9355                match _t {
9356                    alloy_sol_types::private::AssertTypeEq::<
9357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9358                    >(_) => {}
9359                }
9360            }
9361            #[automatically_derived]
9362            #[doc(hidden)]
9363            impl ::core::convert::From<finalizedStateReturn>
9364            for UnderlyingRustTuple<'_> {
9365                fn from(value: finalizedStateReturn) -> Self {
9366                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9367                }
9368            }
9369            #[automatically_derived]
9370            #[doc(hidden)]
9371            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9372            for finalizedStateReturn {
9373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9374                    Self {
9375                        viewNum: tuple.0,
9376                        blockHeight: tuple.1,
9377                        blockCommRoot: tuple.2,
9378                    }
9379                }
9380            }
9381        }
9382        impl finalizedStateReturn {
9383            fn _tokenize(
9384                &self,
9385            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9386                (
9387                    <alloy::sol_types::sol_data::Uint<
9388                        64,
9389                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9390                    <alloy::sol_types::sol_data::Uint<
9391                        64,
9392                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9393                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9394                        &self.blockCommRoot,
9395                    ),
9396                )
9397            }
9398        }
9399        #[automatically_derived]
9400        impl alloy_sol_types::SolCall for finalizedStateCall {
9401            type Parameters<'a> = ();
9402            type Token<'a> = <Self::Parameters<
9403                'a,
9404            > as alloy_sol_types::SolType>::Token<'a>;
9405            type Return = finalizedStateReturn;
9406            type ReturnTuple<'a> = (
9407                alloy::sol_types::sol_data::Uint<64>,
9408                alloy::sol_types::sol_data::Uint<64>,
9409                BN254::ScalarField,
9410            );
9411            type ReturnToken<'a> = <Self::ReturnTuple<
9412                'a,
9413            > as alloy_sol_types::SolType>::Token<'a>;
9414            const SIGNATURE: &'static str = "finalizedState()";
9415            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9416            #[inline]
9417            fn new<'a>(
9418                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9419            ) -> Self {
9420                tuple.into()
9421            }
9422            #[inline]
9423            fn tokenize(&self) -> Self::Token<'_> {
9424                ()
9425            }
9426            #[inline]
9427            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9428                finalizedStateReturn::_tokenize(ret)
9429            }
9430            #[inline]
9431            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9432                <Self::ReturnTuple<
9433                    '_,
9434                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9435                    .map(Into::into)
9436            }
9437            #[inline]
9438            fn abi_decode_returns_validate(
9439                data: &[u8],
9440            ) -> alloy_sol_types::Result<Self::Return> {
9441                <Self::ReturnTuple<
9442                    '_,
9443                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9444                    .map(Into::into)
9445            }
9446        }
9447    };
9448    #[derive(serde::Serialize, serde::Deserialize)]
9449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9450    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9451```solidity
9452function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9453```*/
9454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9455    #[derive(Clone)]
9456    pub struct genesisStakeTableStateCall;
9457    #[derive(serde::Serialize, serde::Deserialize)]
9458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9459    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9461    #[derive(Clone)]
9462    pub struct genesisStakeTableStateReturn {
9463        #[allow(missing_docs)]
9464        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9465        #[allow(missing_docs)]
9466        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9467        #[allow(missing_docs)]
9468        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9469        #[allow(missing_docs)]
9470        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9471    }
9472    #[allow(
9473        non_camel_case_types,
9474        non_snake_case,
9475        clippy::pub_underscore_fields,
9476        clippy::style
9477    )]
9478    const _: () = {
9479        use alloy::sol_types as alloy_sol_types;
9480        {
9481            #[doc(hidden)]
9482            #[allow(dead_code)]
9483            type UnderlyingSolTuple<'a> = ();
9484            #[doc(hidden)]
9485            type UnderlyingRustTuple<'a> = ();
9486            #[cfg(test)]
9487            #[allow(dead_code, unreachable_patterns)]
9488            fn _type_assertion(
9489                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9490            ) {
9491                match _t {
9492                    alloy_sol_types::private::AssertTypeEq::<
9493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9494                    >(_) => {}
9495                }
9496            }
9497            #[automatically_derived]
9498            #[doc(hidden)]
9499            impl ::core::convert::From<genesisStakeTableStateCall>
9500            for UnderlyingRustTuple<'_> {
9501                fn from(value: genesisStakeTableStateCall) -> Self {
9502                    ()
9503                }
9504            }
9505            #[automatically_derived]
9506            #[doc(hidden)]
9507            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9508            for genesisStakeTableStateCall {
9509                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9510                    Self
9511                }
9512            }
9513        }
9514        {
9515            #[doc(hidden)]
9516            #[allow(dead_code)]
9517            type UnderlyingSolTuple<'a> = (
9518                alloy::sol_types::sol_data::Uint<256>,
9519                BN254::ScalarField,
9520                BN254::ScalarField,
9521                BN254::ScalarField,
9522            );
9523            #[doc(hidden)]
9524            type UnderlyingRustTuple<'a> = (
9525                alloy::sol_types::private::primitives::aliases::U256,
9526                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9527                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9528                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9529            );
9530            #[cfg(test)]
9531            #[allow(dead_code, unreachable_patterns)]
9532            fn _type_assertion(
9533                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9534            ) {
9535                match _t {
9536                    alloy_sol_types::private::AssertTypeEq::<
9537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9538                    >(_) => {}
9539                }
9540            }
9541            #[automatically_derived]
9542            #[doc(hidden)]
9543            impl ::core::convert::From<genesisStakeTableStateReturn>
9544            for UnderlyingRustTuple<'_> {
9545                fn from(value: genesisStakeTableStateReturn) -> Self {
9546                    (
9547                        value.threshold,
9548                        value.blsKeyComm,
9549                        value.schnorrKeyComm,
9550                        value.amountComm,
9551                    )
9552                }
9553            }
9554            #[automatically_derived]
9555            #[doc(hidden)]
9556            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9557            for genesisStakeTableStateReturn {
9558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9559                    Self {
9560                        threshold: tuple.0,
9561                        blsKeyComm: tuple.1,
9562                        schnorrKeyComm: tuple.2,
9563                        amountComm: tuple.3,
9564                    }
9565                }
9566            }
9567        }
9568        impl genesisStakeTableStateReturn {
9569            fn _tokenize(
9570                &self,
9571            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9572                '_,
9573            > {
9574                (
9575                    <alloy::sol_types::sol_data::Uint<
9576                        256,
9577                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9578                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9579                        &self.blsKeyComm,
9580                    ),
9581                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9582                        &self.schnorrKeyComm,
9583                    ),
9584                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9585                        &self.amountComm,
9586                    ),
9587                )
9588            }
9589        }
9590        #[automatically_derived]
9591        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9592            type Parameters<'a> = ();
9593            type Token<'a> = <Self::Parameters<
9594                'a,
9595            > as alloy_sol_types::SolType>::Token<'a>;
9596            type Return = genesisStakeTableStateReturn;
9597            type ReturnTuple<'a> = (
9598                alloy::sol_types::sol_data::Uint<256>,
9599                BN254::ScalarField,
9600                BN254::ScalarField,
9601                BN254::ScalarField,
9602            );
9603            type ReturnToken<'a> = <Self::ReturnTuple<
9604                'a,
9605            > as alloy_sol_types::SolType>::Token<'a>;
9606            const SIGNATURE: &'static str = "genesisStakeTableState()";
9607            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9608            #[inline]
9609            fn new<'a>(
9610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9611            ) -> Self {
9612                tuple.into()
9613            }
9614            #[inline]
9615            fn tokenize(&self) -> Self::Token<'_> {
9616                ()
9617            }
9618            #[inline]
9619            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9620                genesisStakeTableStateReturn::_tokenize(ret)
9621            }
9622            #[inline]
9623            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9624                <Self::ReturnTuple<
9625                    '_,
9626                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9627                    .map(Into::into)
9628            }
9629            #[inline]
9630            fn abi_decode_returns_validate(
9631                data: &[u8],
9632            ) -> alloy_sol_types::Result<Self::Return> {
9633                <Self::ReturnTuple<
9634                    '_,
9635                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9636                    .map(Into::into)
9637            }
9638        }
9639    };
9640    #[derive(serde::Serialize, serde::Deserialize)]
9641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9642    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9643```solidity
9644function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9645```*/
9646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9647    #[derive(Clone)]
9648    pub struct genesisStateCall;
9649    #[derive(serde::Serialize, serde::Deserialize)]
9650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9651    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9653    #[derive(Clone)]
9654    pub struct genesisStateReturn {
9655        #[allow(missing_docs)]
9656        pub viewNum: u64,
9657        #[allow(missing_docs)]
9658        pub blockHeight: u64,
9659        #[allow(missing_docs)]
9660        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9661    }
9662    #[allow(
9663        non_camel_case_types,
9664        non_snake_case,
9665        clippy::pub_underscore_fields,
9666        clippy::style
9667    )]
9668    const _: () = {
9669        use alloy::sol_types as alloy_sol_types;
9670        {
9671            #[doc(hidden)]
9672            #[allow(dead_code)]
9673            type UnderlyingSolTuple<'a> = ();
9674            #[doc(hidden)]
9675            type UnderlyingRustTuple<'a> = ();
9676            #[cfg(test)]
9677            #[allow(dead_code, unreachable_patterns)]
9678            fn _type_assertion(
9679                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9680            ) {
9681                match _t {
9682                    alloy_sol_types::private::AssertTypeEq::<
9683                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9684                    >(_) => {}
9685                }
9686            }
9687            #[automatically_derived]
9688            #[doc(hidden)]
9689            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9690                fn from(value: genesisStateCall) -> Self {
9691                    ()
9692                }
9693            }
9694            #[automatically_derived]
9695            #[doc(hidden)]
9696            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9698                    Self
9699                }
9700            }
9701        }
9702        {
9703            #[doc(hidden)]
9704            #[allow(dead_code)]
9705            type UnderlyingSolTuple<'a> = (
9706                alloy::sol_types::sol_data::Uint<64>,
9707                alloy::sol_types::sol_data::Uint<64>,
9708                BN254::ScalarField,
9709            );
9710            #[doc(hidden)]
9711            type UnderlyingRustTuple<'a> = (
9712                u64,
9713                u64,
9714                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9715            );
9716            #[cfg(test)]
9717            #[allow(dead_code, unreachable_patterns)]
9718            fn _type_assertion(
9719                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9720            ) {
9721                match _t {
9722                    alloy_sol_types::private::AssertTypeEq::<
9723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9724                    >(_) => {}
9725                }
9726            }
9727            #[automatically_derived]
9728            #[doc(hidden)]
9729            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9730                fn from(value: genesisStateReturn) -> Self {
9731                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9732                }
9733            }
9734            #[automatically_derived]
9735            #[doc(hidden)]
9736            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9737                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9738                    Self {
9739                        viewNum: tuple.0,
9740                        blockHeight: tuple.1,
9741                        blockCommRoot: tuple.2,
9742                    }
9743                }
9744            }
9745        }
9746        impl genesisStateReturn {
9747            fn _tokenize(
9748                &self,
9749            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9750                (
9751                    <alloy::sol_types::sol_data::Uint<
9752                        64,
9753                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9754                    <alloy::sol_types::sol_data::Uint<
9755                        64,
9756                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9757                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9758                        &self.blockCommRoot,
9759                    ),
9760                )
9761            }
9762        }
9763        #[automatically_derived]
9764        impl alloy_sol_types::SolCall for genesisStateCall {
9765            type Parameters<'a> = ();
9766            type Token<'a> = <Self::Parameters<
9767                'a,
9768            > as alloy_sol_types::SolType>::Token<'a>;
9769            type Return = genesisStateReturn;
9770            type ReturnTuple<'a> = (
9771                alloy::sol_types::sol_data::Uint<64>,
9772                alloy::sol_types::sol_data::Uint<64>,
9773                BN254::ScalarField,
9774            );
9775            type ReturnToken<'a> = <Self::ReturnTuple<
9776                'a,
9777            > as alloy_sol_types::SolType>::Token<'a>;
9778            const SIGNATURE: &'static str = "genesisState()";
9779            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9780            #[inline]
9781            fn new<'a>(
9782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9783            ) -> Self {
9784                tuple.into()
9785            }
9786            #[inline]
9787            fn tokenize(&self) -> Self::Token<'_> {
9788                ()
9789            }
9790            #[inline]
9791            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9792                genesisStateReturn::_tokenize(ret)
9793            }
9794            #[inline]
9795            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9796                <Self::ReturnTuple<
9797                    '_,
9798                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9799                    .map(Into::into)
9800            }
9801            #[inline]
9802            fn abi_decode_returns_validate(
9803                data: &[u8],
9804            ) -> alloy_sol_types::Result<Self::Return> {
9805                <Self::ReturnTuple<
9806                    '_,
9807                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9808                    .map(Into::into)
9809            }
9810        }
9811    };
9812    #[derive(serde::Serialize, serde::Deserialize)]
9813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9814    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
9815```solidity
9816function getFirstEpoch() external view returns (uint64);
9817```*/
9818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9819    #[derive(Clone)]
9820    pub struct getFirstEpochCall;
9821    #[derive(serde::Serialize, serde::Deserialize)]
9822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9823    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
9824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9825    #[derive(Clone)]
9826    pub struct getFirstEpochReturn {
9827        #[allow(missing_docs)]
9828        pub _0: u64,
9829    }
9830    #[allow(
9831        non_camel_case_types,
9832        non_snake_case,
9833        clippy::pub_underscore_fields,
9834        clippy::style
9835    )]
9836    const _: () = {
9837        use alloy::sol_types as alloy_sol_types;
9838        {
9839            #[doc(hidden)]
9840            #[allow(dead_code)]
9841            type UnderlyingSolTuple<'a> = ();
9842            #[doc(hidden)]
9843            type UnderlyingRustTuple<'a> = ();
9844            #[cfg(test)]
9845            #[allow(dead_code, unreachable_patterns)]
9846            fn _type_assertion(
9847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9848            ) {
9849                match _t {
9850                    alloy_sol_types::private::AssertTypeEq::<
9851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9852                    >(_) => {}
9853                }
9854            }
9855            #[automatically_derived]
9856            #[doc(hidden)]
9857            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
9858                fn from(value: getFirstEpochCall) -> Self {
9859                    ()
9860                }
9861            }
9862            #[automatically_derived]
9863            #[doc(hidden)]
9864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
9865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9866                    Self
9867                }
9868            }
9869        }
9870        {
9871            #[doc(hidden)]
9872            #[allow(dead_code)]
9873            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9874            #[doc(hidden)]
9875            type UnderlyingRustTuple<'a> = (u64,);
9876            #[cfg(test)]
9877            #[allow(dead_code, unreachable_patterns)]
9878            fn _type_assertion(
9879                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9880            ) {
9881                match _t {
9882                    alloy_sol_types::private::AssertTypeEq::<
9883                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9884                    >(_) => {}
9885                }
9886            }
9887            #[automatically_derived]
9888            #[doc(hidden)]
9889            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
9890                fn from(value: getFirstEpochReturn) -> Self {
9891                    (value._0,)
9892                }
9893            }
9894            #[automatically_derived]
9895            #[doc(hidden)]
9896            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
9897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9898                    Self { _0: tuple.0 }
9899                }
9900            }
9901        }
9902        #[automatically_derived]
9903        impl alloy_sol_types::SolCall for getFirstEpochCall {
9904            type Parameters<'a> = ();
9905            type Token<'a> = <Self::Parameters<
9906                'a,
9907            > as alloy_sol_types::SolType>::Token<'a>;
9908            type Return = u64;
9909            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9910            type ReturnToken<'a> = <Self::ReturnTuple<
9911                'a,
9912            > as alloy_sol_types::SolType>::Token<'a>;
9913            const SIGNATURE: &'static str = "getFirstEpoch()";
9914            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
9915            #[inline]
9916            fn new<'a>(
9917                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9918            ) -> Self {
9919                tuple.into()
9920            }
9921            #[inline]
9922            fn tokenize(&self) -> Self::Token<'_> {
9923                ()
9924            }
9925            #[inline]
9926            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9927                (
9928                    <alloy::sol_types::sol_data::Uint<
9929                        64,
9930                    > as alloy_sol_types::SolType>::tokenize(ret),
9931                )
9932            }
9933            #[inline]
9934            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9935                <Self::ReturnTuple<
9936                    '_,
9937                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9938                    .map(|r| {
9939                        let r: getFirstEpochReturn = r.into();
9940                        r._0
9941                    })
9942            }
9943            #[inline]
9944            fn abi_decode_returns_validate(
9945                data: &[u8],
9946            ) -> alloy_sol_types::Result<Self::Return> {
9947                <Self::ReturnTuple<
9948                    '_,
9949                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9950                    .map(|r| {
9951                        let r: getFirstEpochReturn = r.into();
9952                        r._0
9953                    })
9954            }
9955        }
9956    };
9957    #[derive(serde::Serialize, serde::Deserialize)]
9958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9959    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9960```solidity
9961function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9962```*/
9963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9964    #[derive(Clone)]
9965    pub struct getHotShotCommitmentCall {
9966        #[allow(missing_docs)]
9967        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9968    }
9969    #[derive(serde::Serialize, serde::Deserialize)]
9970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9971    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9973    #[derive(Clone)]
9974    pub struct getHotShotCommitmentReturn {
9975        #[allow(missing_docs)]
9976        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9977        #[allow(missing_docs)]
9978        pub hotshotBlockHeight: u64,
9979    }
9980    #[allow(
9981        non_camel_case_types,
9982        non_snake_case,
9983        clippy::pub_underscore_fields,
9984        clippy::style
9985    )]
9986    const _: () = {
9987        use alloy::sol_types as alloy_sol_types;
9988        {
9989            #[doc(hidden)]
9990            #[allow(dead_code)]
9991            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9992            #[doc(hidden)]
9993            type UnderlyingRustTuple<'a> = (
9994                alloy::sol_types::private::primitives::aliases::U256,
9995            );
9996            #[cfg(test)]
9997            #[allow(dead_code, unreachable_patterns)]
9998            fn _type_assertion(
9999                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10000            ) {
10001                match _t {
10002                    alloy_sol_types::private::AssertTypeEq::<
10003                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10004                    >(_) => {}
10005                }
10006            }
10007            #[automatically_derived]
10008            #[doc(hidden)]
10009            impl ::core::convert::From<getHotShotCommitmentCall>
10010            for UnderlyingRustTuple<'_> {
10011                fn from(value: getHotShotCommitmentCall) -> Self {
10012                    (value.hotShotBlockHeight,)
10013                }
10014            }
10015            #[automatically_derived]
10016            #[doc(hidden)]
10017            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10018            for getHotShotCommitmentCall {
10019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10020                    Self {
10021                        hotShotBlockHeight: tuple.0,
10022                    }
10023                }
10024            }
10025        }
10026        {
10027            #[doc(hidden)]
10028            #[allow(dead_code)]
10029            type UnderlyingSolTuple<'a> = (
10030                BN254::ScalarField,
10031                alloy::sol_types::sol_data::Uint<64>,
10032            );
10033            #[doc(hidden)]
10034            type UnderlyingRustTuple<'a> = (
10035                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10036                u64,
10037            );
10038            #[cfg(test)]
10039            #[allow(dead_code, unreachable_patterns)]
10040            fn _type_assertion(
10041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10042            ) {
10043                match _t {
10044                    alloy_sol_types::private::AssertTypeEq::<
10045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10046                    >(_) => {}
10047                }
10048            }
10049            #[automatically_derived]
10050            #[doc(hidden)]
10051            impl ::core::convert::From<getHotShotCommitmentReturn>
10052            for UnderlyingRustTuple<'_> {
10053                fn from(value: getHotShotCommitmentReturn) -> Self {
10054                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10055                }
10056            }
10057            #[automatically_derived]
10058            #[doc(hidden)]
10059            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10060            for getHotShotCommitmentReturn {
10061                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10062                    Self {
10063                        hotShotBlockCommRoot: tuple.0,
10064                        hotshotBlockHeight: tuple.1,
10065                    }
10066                }
10067            }
10068        }
10069        impl getHotShotCommitmentReturn {
10070            fn _tokenize(
10071                &self,
10072            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10073                '_,
10074            > {
10075                (
10076                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10077                        &self.hotShotBlockCommRoot,
10078                    ),
10079                    <alloy::sol_types::sol_data::Uint<
10080                        64,
10081                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10082                )
10083            }
10084        }
10085        #[automatically_derived]
10086        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10087            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10088            type Token<'a> = <Self::Parameters<
10089                'a,
10090            > as alloy_sol_types::SolType>::Token<'a>;
10091            type Return = getHotShotCommitmentReturn;
10092            type ReturnTuple<'a> = (
10093                BN254::ScalarField,
10094                alloy::sol_types::sol_data::Uint<64>,
10095            );
10096            type ReturnToken<'a> = <Self::ReturnTuple<
10097                'a,
10098            > as alloy_sol_types::SolType>::Token<'a>;
10099            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10100            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10101            #[inline]
10102            fn new<'a>(
10103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10104            ) -> Self {
10105                tuple.into()
10106            }
10107            #[inline]
10108            fn tokenize(&self) -> Self::Token<'_> {
10109                (
10110                    <alloy::sol_types::sol_data::Uint<
10111                        256,
10112                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10113                )
10114            }
10115            #[inline]
10116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10117                getHotShotCommitmentReturn::_tokenize(ret)
10118            }
10119            #[inline]
10120            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10121                <Self::ReturnTuple<
10122                    '_,
10123                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10124                    .map(Into::into)
10125            }
10126            #[inline]
10127            fn abi_decode_returns_validate(
10128                data: &[u8],
10129            ) -> alloy_sol_types::Result<Self::Return> {
10130                <Self::ReturnTuple<
10131                    '_,
10132                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10133                    .map(Into::into)
10134            }
10135        }
10136    };
10137    #[derive(serde::Serialize, serde::Deserialize)]
10138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10139    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10140```solidity
10141function getStateHistoryCount() external view returns (uint256);
10142```*/
10143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10144    #[derive(Clone)]
10145    pub struct getStateHistoryCountCall;
10146    #[derive(serde::Serialize, serde::Deserialize)]
10147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10148    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10150    #[derive(Clone)]
10151    pub struct getStateHistoryCountReturn {
10152        #[allow(missing_docs)]
10153        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10154    }
10155    #[allow(
10156        non_camel_case_types,
10157        non_snake_case,
10158        clippy::pub_underscore_fields,
10159        clippy::style
10160    )]
10161    const _: () = {
10162        use alloy::sol_types as alloy_sol_types;
10163        {
10164            #[doc(hidden)]
10165            #[allow(dead_code)]
10166            type UnderlyingSolTuple<'a> = ();
10167            #[doc(hidden)]
10168            type UnderlyingRustTuple<'a> = ();
10169            #[cfg(test)]
10170            #[allow(dead_code, unreachable_patterns)]
10171            fn _type_assertion(
10172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10173            ) {
10174                match _t {
10175                    alloy_sol_types::private::AssertTypeEq::<
10176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10177                    >(_) => {}
10178                }
10179            }
10180            #[automatically_derived]
10181            #[doc(hidden)]
10182            impl ::core::convert::From<getStateHistoryCountCall>
10183            for UnderlyingRustTuple<'_> {
10184                fn from(value: getStateHistoryCountCall) -> Self {
10185                    ()
10186                }
10187            }
10188            #[automatically_derived]
10189            #[doc(hidden)]
10190            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10191            for getStateHistoryCountCall {
10192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10193                    Self
10194                }
10195            }
10196        }
10197        {
10198            #[doc(hidden)]
10199            #[allow(dead_code)]
10200            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10201            #[doc(hidden)]
10202            type UnderlyingRustTuple<'a> = (
10203                alloy::sol_types::private::primitives::aliases::U256,
10204            );
10205            #[cfg(test)]
10206            #[allow(dead_code, unreachable_patterns)]
10207            fn _type_assertion(
10208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10209            ) {
10210                match _t {
10211                    alloy_sol_types::private::AssertTypeEq::<
10212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10213                    >(_) => {}
10214                }
10215            }
10216            #[automatically_derived]
10217            #[doc(hidden)]
10218            impl ::core::convert::From<getStateHistoryCountReturn>
10219            for UnderlyingRustTuple<'_> {
10220                fn from(value: getStateHistoryCountReturn) -> Self {
10221                    (value._0,)
10222                }
10223            }
10224            #[automatically_derived]
10225            #[doc(hidden)]
10226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10227            for getStateHistoryCountReturn {
10228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10229                    Self { _0: tuple.0 }
10230                }
10231            }
10232        }
10233        #[automatically_derived]
10234        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10235            type Parameters<'a> = ();
10236            type Token<'a> = <Self::Parameters<
10237                'a,
10238            > as alloy_sol_types::SolType>::Token<'a>;
10239            type Return = alloy::sol_types::private::primitives::aliases::U256;
10240            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10241            type ReturnToken<'a> = <Self::ReturnTuple<
10242                'a,
10243            > as alloy_sol_types::SolType>::Token<'a>;
10244            const SIGNATURE: &'static str = "getStateHistoryCount()";
10245            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10246            #[inline]
10247            fn new<'a>(
10248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10249            ) -> Self {
10250                tuple.into()
10251            }
10252            #[inline]
10253            fn tokenize(&self) -> Self::Token<'_> {
10254                ()
10255            }
10256            #[inline]
10257            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10258                (
10259                    <alloy::sol_types::sol_data::Uint<
10260                        256,
10261                    > as alloy_sol_types::SolType>::tokenize(ret),
10262                )
10263            }
10264            #[inline]
10265            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10266                <Self::ReturnTuple<
10267                    '_,
10268                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10269                    .map(|r| {
10270                        let r: getStateHistoryCountReturn = r.into();
10271                        r._0
10272                    })
10273            }
10274            #[inline]
10275            fn abi_decode_returns_validate(
10276                data: &[u8],
10277            ) -> alloy_sol_types::Result<Self::Return> {
10278                <Self::ReturnTuple<
10279                    '_,
10280                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10281                    .map(|r| {
10282                        let r: getStateHistoryCountReturn = r.into();
10283                        r._0
10284                    })
10285            }
10286        }
10287    };
10288    #[derive(serde::Serialize, serde::Deserialize)]
10289    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10290    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10291```solidity
10292function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10293```*/
10294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10295    #[derive(Clone)]
10296    pub struct getVersionCall;
10297    #[derive(serde::Serialize, serde::Deserialize)]
10298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10299    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10300    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10301    #[derive(Clone)]
10302    pub struct getVersionReturn {
10303        #[allow(missing_docs)]
10304        pub majorVersion: u8,
10305        #[allow(missing_docs)]
10306        pub minorVersion: u8,
10307        #[allow(missing_docs)]
10308        pub patchVersion: u8,
10309    }
10310    #[allow(
10311        non_camel_case_types,
10312        non_snake_case,
10313        clippy::pub_underscore_fields,
10314        clippy::style
10315    )]
10316    const _: () = {
10317        use alloy::sol_types as alloy_sol_types;
10318        {
10319            #[doc(hidden)]
10320            #[allow(dead_code)]
10321            type UnderlyingSolTuple<'a> = ();
10322            #[doc(hidden)]
10323            type UnderlyingRustTuple<'a> = ();
10324            #[cfg(test)]
10325            #[allow(dead_code, unreachable_patterns)]
10326            fn _type_assertion(
10327                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10328            ) {
10329                match _t {
10330                    alloy_sol_types::private::AssertTypeEq::<
10331                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10332                    >(_) => {}
10333                }
10334            }
10335            #[automatically_derived]
10336            #[doc(hidden)]
10337            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10338                fn from(value: getVersionCall) -> Self {
10339                    ()
10340                }
10341            }
10342            #[automatically_derived]
10343            #[doc(hidden)]
10344            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10345                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10346                    Self
10347                }
10348            }
10349        }
10350        {
10351            #[doc(hidden)]
10352            #[allow(dead_code)]
10353            type UnderlyingSolTuple<'a> = (
10354                alloy::sol_types::sol_data::Uint<8>,
10355                alloy::sol_types::sol_data::Uint<8>,
10356                alloy::sol_types::sol_data::Uint<8>,
10357            );
10358            #[doc(hidden)]
10359            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10360            #[cfg(test)]
10361            #[allow(dead_code, unreachable_patterns)]
10362            fn _type_assertion(
10363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10364            ) {
10365                match _t {
10366                    alloy_sol_types::private::AssertTypeEq::<
10367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10368                    >(_) => {}
10369                }
10370            }
10371            #[automatically_derived]
10372            #[doc(hidden)]
10373            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10374                fn from(value: getVersionReturn) -> Self {
10375                    (value.majorVersion, value.minorVersion, value.patchVersion)
10376                }
10377            }
10378            #[automatically_derived]
10379            #[doc(hidden)]
10380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10382                    Self {
10383                        majorVersion: tuple.0,
10384                        minorVersion: tuple.1,
10385                        patchVersion: tuple.2,
10386                    }
10387                }
10388            }
10389        }
10390        impl getVersionReturn {
10391            fn _tokenize(
10392                &self,
10393            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10394                (
10395                    <alloy::sol_types::sol_data::Uint<
10396                        8,
10397                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10398                    <alloy::sol_types::sol_data::Uint<
10399                        8,
10400                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10401                    <alloy::sol_types::sol_data::Uint<
10402                        8,
10403                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10404                )
10405            }
10406        }
10407        #[automatically_derived]
10408        impl alloy_sol_types::SolCall for getVersionCall {
10409            type Parameters<'a> = ();
10410            type Token<'a> = <Self::Parameters<
10411                'a,
10412            > as alloy_sol_types::SolType>::Token<'a>;
10413            type Return = getVersionReturn;
10414            type ReturnTuple<'a> = (
10415                alloy::sol_types::sol_data::Uint<8>,
10416                alloy::sol_types::sol_data::Uint<8>,
10417                alloy::sol_types::sol_data::Uint<8>,
10418            );
10419            type ReturnToken<'a> = <Self::ReturnTuple<
10420                'a,
10421            > as alloy_sol_types::SolType>::Token<'a>;
10422            const SIGNATURE: &'static str = "getVersion()";
10423            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10424            #[inline]
10425            fn new<'a>(
10426                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10427            ) -> Self {
10428                tuple.into()
10429            }
10430            #[inline]
10431            fn tokenize(&self) -> Self::Token<'_> {
10432                ()
10433            }
10434            #[inline]
10435            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10436                getVersionReturn::_tokenize(ret)
10437            }
10438            #[inline]
10439            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10440                <Self::ReturnTuple<
10441                    '_,
10442                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10443                    .map(Into::into)
10444            }
10445            #[inline]
10446            fn abi_decode_returns_validate(
10447                data: &[u8],
10448            ) -> alloy_sol_types::Result<Self::Return> {
10449                <Self::ReturnTuple<
10450                    '_,
10451                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10452                    .map(Into::into)
10453            }
10454        }
10455    };
10456    #[derive(serde::Serialize, serde::Deserialize)]
10457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10458    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10459```solidity
10460function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10461```*/
10462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10463    #[derive(Clone)]
10464    pub struct initializeCall {
10465        #[allow(missing_docs)]
10466        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10467        #[allow(missing_docs)]
10468        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10469        #[allow(missing_docs)]
10470        pub _stateHistoryRetentionPeriod: u32,
10471        #[allow(missing_docs)]
10472        pub owner: alloy::sol_types::private::Address,
10473    }
10474    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10476    #[derive(Clone)]
10477    pub struct initializeReturn {}
10478    #[allow(
10479        non_camel_case_types,
10480        non_snake_case,
10481        clippy::pub_underscore_fields,
10482        clippy::style
10483    )]
10484    const _: () = {
10485        use alloy::sol_types as alloy_sol_types;
10486        {
10487            #[doc(hidden)]
10488            #[allow(dead_code)]
10489            type UnderlyingSolTuple<'a> = (
10490                LightClient::LightClientState,
10491                LightClient::StakeTableState,
10492                alloy::sol_types::sol_data::Uint<32>,
10493                alloy::sol_types::sol_data::Address,
10494            );
10495            #[doc(hidden)]
10496            type UnderlyingRustTuple<'a> = (
10497                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10498                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10499                u32,
10500                alloy::sol_types::private::Address,
10501            );
10502            #[cfg(test)]
10503            #[allow(dead_code, unreachable_patterns)]
10504            fn _type_assertion(
10505                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10506            ) {
10507                match _t {
10508                    alloy_sol_types::private::AssertTypeEq::<
10509                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10510                    >(_) => {}
10511                }
10512            }
10513            #[automatically_derived]
10514            #[doc(hidden)]
10515            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10516                fn from(value: initializeCall) -> Self {
10517                    (
10518                        value._genesis,
10519                        value._genesisStakeTableState,
10520                        value._stateHistoryRetentionPeriod,
10521                        value.owner,
10522                    )
10523                }
10524            }
10525            #[automatically_derived]
10526            #[doc(hidden)]
10527            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10529                    Self {
10530                        _genesis: tuple.0,
10531                        _genesisStakeTableState: tuple.1,
10532                        _stateHistoryRetentionPeriod: tuple.2,
10533                        owner: tuple.3,
10534                    }
10535                }
10536            }
10537        }
10538        {
10539            #[doc(hidden)]
10540            #[allow(dead_code)]
10541            type UnderlyingSolTuple<'a> = ();
10542            #[doc(hidden)]
10543            type UnderlyingRustTuple<'a> = ();
10544            #[cfg(test)]
10545            #[allow(dead_code, unreachable_patterns)]
10546            fn _type_assertion(
10547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10548            ) {
10549                match _t {
10550                    alloy_sol_types::private::AssertTypeEq::<
10551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10552                    >(_) => {}
10553                }
10554            }
10555            #[automatically_derived]
10556            #[doc(hidden)]
10557            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10558                fn from(value: initializeReturn) -> Self {
10559                    ()
10560                }
10561            }
10562            #[automatically_derived]
10563            #[doc(hidden)]
10564            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10566                    Self {}
10567                }
10568            }
10569        }
10570        impl initializeReturn {
10571            fn _tokenize(
10572                &self,
10573            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10574                ()
10575            }
10576        }
10577        #[automatically_derived]
10578        impl alloy_sol_types::SolCall for initializeCall {
10579            type Parameters<'a> = (
10580                LightClient::LightClientState,
10581                LightClient::StakeTableState,
10582                alloy::sol_types::sol_data::Uint<32>,
10583                alloy::sol_types::sol_data::Address,
10584            );
10585            type Token<'a> = <Self::Parameters<
10586                'a,
10587            > as alloy_sol_types::SolType>::Token<'a>;
10588            type Return = initializeReturn;
10589            type ReturnTuple<'a> = ();
10590            type ReturnToken<'a> = <Self::ReturnTuple<
10591                'a,
10592            > as alloy_sol_types::SolType>::Token<'a>;
10593            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10594            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10595            #[inline]
10596            fn new<'a>(
10597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10598            ) -> Self {
10599                tuple.into()
10600            }
10601            #[inline]
10602            fn tokenize(&self) -> Self::Token<'_> {
10603                (
10604                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10605                        &self._genesis,
10606                    ),
10607                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10608                        &self._genesisStakeTableState,
10609                    ),
10610                    <alloy::sol_types::sol_data::Uint<
10611                        32,
10612                    > as alloy_sol_types::SolType>::tokenize(
10613                        &self._stateHistoryRetentionPeriod,
10614                    ),
10615                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10616                        &self.owner,
10617                    ),
10618                )
10619            }
10620            #[inline]
10621            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10622                initializeReturn::_tokenize(ret)
10623            }
10624            #[inline]
10625            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10626                <Self::ReturnTuple<
10627                    '_,
10628                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10629                    .map(Into::into)
10630            }
10631            #[inline]
10632            fn abi_decode_returns_validate(
10633                data: &[u8],
10634            ) -> alloy_sol_types::Result<Self::Return> {
10635                <Self::ReturnTuple<
10636                    '_,
10637                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10638                    .map(Into::into)
10639            }
10640        }
10641    };
10642    #[derive(serde::Serialize, serde::Deserialize)]
10643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10644    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10645```solidity
10646function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10647```*/
10648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10649    #[derive(Clone)]
10650    pub struct initializeV2Call {
10651        #[allow(missing_docs)]
10652        pub _blocksPerEpoch: u64,
10653        #[allow(missing_docs)]
10654        pub _epochStartBlock: u64,
10655    }
10656    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10657    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10658    #[derive(Clone)]
10659    pub struct initializeV2Return {}
10660    #[allow(
10661        non_camel_case_types,
10662        non_snake_case,
10663        clippy::pub_underscore_fields,
10664        clippy::style
10665    )]
10666    const _: () = {
10667        use alloy::sol_types as alloy_sol_types;
10668        {
10669            #[doc(hidden)]
10670            #[allow(dead_code)]
10671            type UnderlyingSolTuple<'a> = (
10672                alloy::sol_types::sol_data::Uint<64>,
10673                alloy::sol_types::sol_data::Uint<64>,
10674            );
10675            #[doc(hidden)]
10676            type UnderlyingRustTuple<'a> = (u64, u64);
10677            #[cfg(test)]
10678            #[allow(dead_code, unreachable_patterns)]
10679            fn _type_assertion(
10680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10681            ) {
10682                match _t {
10683                    alloy_sol_types::private::AssertTypeEq::<
10684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10685                    >(_) => {}
10686                }
10687            }
10688            #[automatically_derived]
10689            #[doc(hidden)]
10690            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10691                fn from(value: initializeV2Call) -> Self {
10692                    (value._blocksPerEpoch, value._epochStartBlock)
10693                }
10694            }
10695            #[automatically_derived]
10696            #[doc(hidden)]
10697            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10699                    Self {
10700                        _blocksPerEpoch: tuple.0,
10701                        _epochStartBlock: tuple.1,
10702                    }
10703                }
10704            }
10705        }
10706        {
10707            #[doc(hidden)]
10708            #[allow(dead_code)]
10709            type UnderlyingSolTuple<'a> = ();
10710            #[doc(hidden)]
10711            type UnderlyingRustTuple<'a> = ();
10712            #[cfg(test)]
10713            #[allow(dead_code, unreachable_patterns)]
10714            fn _type_assertion(
10715                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10716            ) {
10717                match _t {
10718                    alloy_sol_types::private::AssertTypeEq::<
10719                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10720                    >(_) => {}
10721                }
10722            }
10723            #[automatically_derived]
10724            #[doc(hidden)]
10725            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10726                fn from(value: initializeV2Return) -> Self {
10727                    ()
10728                }
10729            }
10730            #[automatically_derived]
10731            #[doc(hidden)]
10732            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10733                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10734                    Self {}
10735                }
10736            }
10737        }
10738        impl initializeV2Return {
10739            fn _tokenize(
10740                &self,
10741            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10742                ()
10743            }
10744        }
10745        #[automatically_derived]
10746        impl alloy_sol_types::SolCall for initializeV2Call {
10747            type Parameters<'a> = (
10748                alloy::sol_types::sol_data::Uint<64>,
10749                alloy::sol_types::sol_data::Uint<64>,
10750            );
10751            type Token<'a> = <Self::Parameters<
10752                'a,
10753            > as alloy_sol_types::SolType>::Token<'a>;
10754            type Return = initializeV2Return;
10755            type ReturnTuple<'a> = ();
10756            type ReturnToken<'a> = <Self::ReturnTuple<
10757                'a,
10758            > as alloy_sol_types::SolType>::Token<'a>;
10759            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10760            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10761            #[inline]
10762            fn new<'a>(
10763                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10764            ) -> Self {
10765                tuple.into()
10766            }
10767            #[inline]
10768            fn tokenize(&self) -> Self::Token<'_> {
10769                (
10770                    <alloy::sol_types::sol_data::Uint<
10771                        64,
10772                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10773                    <alloy::sol_types::sol_data::Uint<
10774                        64,
10775                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10776                )
10777            }
10778            #[inline]
10779            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10780                initializeV2Return::_tokenize(ret)
10781            }
10782            #[inline]
10783            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10784                <Self::ReturnTuple<
10785                    '_,
10786                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10787                    .map(Into::into)
10788            }
10789            #[inline]
10790            fn abi_decode_returns_validate(
10791                data: &[u8],
10792            ) -> alloy_sol_types::Result<Self::Return> {
10793                <Self::ReturnTuple<
10794                    '_,
10795                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10796                    .map(Into::into)
10797            }
10798        }
10799    };
10800    #[derive(serde::Serialize, serde::Deserialize)]
10801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10802    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10803```solidity
10804function isEpochRoot(uint64 blockHeight) external view returns (bool);
10805```*/
10806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10807    #[derive(Clone)]
10808    pub struct isEpochRootCall {
10809        #[allow(missing_docs)]
10810        pub blockHeight: u64,
10811    }
10812    #[derive(serde::Serialize, serde::Deserialize)]
10813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10814    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10816    #[derive(Clone)]
10817    pub struct isEpochRootReturn {
10818        #[allow(missing_docs)]
10819        pub _0: bool,
10820    }
10821    #[allow(
10822        non_camel_case_types,
10823        non_snake_case,
10824        clippy::pub_underscore_fields,
10825        clippy::style
10826    )]
10827    const _: () = {
10828        use alloy::sol_types as alloy_sol_types;
10829        {
10830            #[doc(hidden)]
10831            #[allow(dead_code)]
10832            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10833            #[doc(hidden)]
10834            type UnderlyingRustTuple<'a> = (u64,);
10835            #[cfg(test)]
10836            #[allow(dead_code, unreachable_patterns)]
10837            fn _type_assertion(
10838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10839            ) {
10840                match _t {
10841                    alloy_sol_types::private::AssertTypeEq::<
10842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10843                    >(_) => {}
10844                }
10845            }
10846            #[automatically_derived]
10847            #[doc(hidden)]
10848            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10849                fn from(value: isEpochRootCall) -> Self {
10850                    (value.blockHeight,)
10851                }
10852            }
10853            #[automatically_derived]
10854            #[doc(hidden)]
10855            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10857                    Self { blockHeight: tuple.0 }
10858                }
10859            }
10860        }
10861        {
10862            #[doc(hidden)]
10863            #[allow(dead_code)]
10864            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10865            #[doc(hidden)]
10866            type UnderlyingRustTuple<'a> = (bool,);
10867            #[cfg(test)]
10868            #[allow(dead_code, unreachable_patterns)]
10869            fn _type_assertion(
10870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10871            ) {
10872                match _t {
10873                    alloy_sol_types::private::AssertTypeEq::<
10874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10875                    >(_) => {}
10876                }
10877            }
10878            #[automatically_derived]
10879            #[doc(hidden)]
10880            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10881                fn from(value: isEpochRootReturn) -> Self {
10882                    (value._0,)
10883                }
10884            }
10885            #[automatically_derived]
10886            #[doc(hidden)]
10887            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10889                    Self { _0: tuple.0 }
10890                }
10891            }
10892        }
10893        #[automatically_derived]
10894        impl alloy_sol_types::SolCall for isEpochRootCall {
10895            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10896            type Token<'a> = <Self::Parameters<
10897                'a,
10898            > as alloy_sol_types::SolType>::Token<'a>;
10899            type Return = bool;
10900            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10901            type ReturnToken<'a> = <Self::ReturnTuple<
10902                'a,
10903            > as alloy_sol_types::SolType>::Token<'a>;
10904            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10905            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10906            #[inline]
10907            fn new<'a>(
10908                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10909            ) -> Self {
10910                tuple.into()
10911            }
10912            #[inline]
10913            fn tokenize(&self) -> Self::Token<'_> {
10914                (
10915                    <alloy::sol_types::sol_data::Uint<
10916                        64,
10917                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10918                )
10919            }
10920            #[inline]
10921            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10922                (
10923                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10924                        ret,
10925                    ),
10926                )
10927            }
10928            #[inline]
10929            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10930                <Self::ReturnTuple<
10931                    '_,
10932                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10933                    .map(|r| {
10934                        let r: isEpochRootReturn = r.into();
10935                        r._0
10936                    })
10937            }
10938            #[inline]
10939            fn abi_decode_returns_validate(
10940                data: &[u8],
10941            ) -> alloy_sol_types::Result<Self::Return> {
10942                <Self::ReturnTuple<
10943                    '_,
10944                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10945                    .map(|r| {
10946                        let r: isEpochRootReturn = r.into();
10947                        r._0
10948                    })
10949            }
10950        }
10951    };
10952    #[derive(serde::Serialize, serde::Deserialize)]
10953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10954    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10955```solidity
10956function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10957```*/
10958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10959    #[derive(Clone)]
10960    pub struct isGtEpochRootCall {
10961        #[allow(missing_docs)]
10962        pub blockHeight: u64,
10963    }
10964    #[derive(serde::Serialize, serde::Deserialize)]
10965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10966    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10968    #[derive(Clone)]
10969    pub struct isGtEpochRootReturn {
10970        #[allow(missing_docs)]
10971        pub _0: bool,
10972    }
10973    #[allow(
10974        non_camel_case_types,
10975        non_snake_case,
10976        clippy::pub_underscore_fields,
10977        clippy::style
10978    )]
10979    const _: () = {
10980        use alloy::sol_types as alloy_sol_types;
10981        {
10982            #[doc(hidden)]
10983            #[allow(dead_code)]
10984            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10985            #[doc(hidden)]
10986            type UnderlyingRustTuple<'a> = (u64,);
10987            #[cfg(test)]
10988            #[allow(dead_code, unreachable_patterns)]
10989            fn _type_assertion(
10990                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10991            ) {
10992                match _t {
10993                    alloy_sol_types::private::AssertTypeEq::<
10994                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10995                    >(_) => {}
10996                }
10997            }
10998            #[automatically_derived]
10999            #[doc(hidden)]
11000            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11001                fn from(value: isGtEpochRootCall) -> Self {
11002                    (value.blockHeight,)
11003                }
11004            }
11005            #[automatically_derived]
11006            #[doc(hidden)]
11007            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11008                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11009                    Self { blockHeight: tuple.0 }
11010                }
11011            }
11012        }
11013        {
11014            #[doc(hidden)]
11015            #[allow(dead_code)]
11016            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11017            #[doc(hidden)]
11018            type UnderlyingRustTuple<'a> = (bool,);
11019            #[cfg(test)]
11020            #[allow(dead_code, unreachable_patterns)]
11021            fn _type_assertion(
11022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11023            ) {
11024                match _t {
11025                    alloy_sol_types::private::AssertTypeEq::<
11026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11027                    >(_) => {}
11028                }
11029            }
11030            #[automatically_derived]
11031            #[doc(hidden)]
11032            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11033                fn from(value: isGtEpochRootReturn) -> Self {
11034                    (value._0,)
11035                }
11036            }
11037            #[automatically_derived]
11038            #[doc(hidden)]
11039            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11040                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11041                    Self { _0: tuple.0 }
11042                }
11043            }
11044        }
11045        #[automatically_derived]
11046        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11047            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11048            type Token<'a> = <Self::Parameters<
11049                'a,
11050            > as alloy_sol_types::SolType>::Token<'a>;
11051            type Return = bool;
11052            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11053            type ReturnToken<'a> = <Self::ReturnTuple<
11054                'a,
11055            > as alloy_sol_types::SolType>::Token<'a>;
11056            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11057            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11058            #[inline]
11059            fn new<'a>(
11060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11061            ) -> Self {
11062                tuple.into()
11063            }
11064            #[inline]
11065            fn tokenize(&self) -> Self::Token<'_> {
11066                (
11067                    <alloy::sol_types::sol_data::Uint<
11068                        64,
11069                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11070                )
11071            }
11072            #[inline]
11073            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11074                (
11075                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11076                        ret,
11077                    ),
11078                )
11079            }
11080            #[inline]
11081            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11082                <Self::ReturnTuple<
11083                    '_,
11084                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11085                    .map(|r| {
11086                        let r: isGtEpochRootReturn = r.into();
11087                        r._0
11088                    })
11089            }
11090            #[inline]
11091            fn abi_decode_returns_validate(
11092                data: &[u8],
11093            ) -> alloy_sol_types::Result<Self::Return> {
11094                <Self::ReturnTuple<
11095                    '_,
11096                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11097                    .map(|r| {
11098                        let r: isGtEpochRootReturn = r.into();
11099                        r._0
11100                    })
11101            }
11102        }
11103    };
11104    #[derive(serde::Serialize, serde::Deserialize)]
11105    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11106    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11107```solidity
11108function isPermissionedProverEnabled() external view returns (bool);
11109```*/
11110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11111    #[derive(Clone)]
11112    pub struct isPermissionedProverEnabledCall;
11113    #[derive(serde::Serialize, serde::Deserialize)]
11114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11115    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11117    #[derive(Clone)]
11118    pub struct isPermissionedProverEnabledReturn {
11119        #[allow(missing_docs)]
11120        pub _0: bool,
11121    }
11122    #[allow(
11123        non_camel_case_types,
11124        non_snake_case,
11125        clippy::pub_underscore_fields,
11126        clippy::style
11127    )]
11128    const _: () = {
11129        use alloy::sol_types as alloy_sol_types;
11130        {
11131            #[doc(hidden)]
11132            #[allow(dead_code)]
11133            type UnderlyingSolTuple<'a> = ();
11134            #[doc(hidden)]
11135            type UnderlyingRustTuple<'a> = ();
11136            #[cfg(test)]
11137            #[allow(dead_code, unreachable_patterns)]
11138            fn _type_assertion(
11139                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11140            ) {
11141                match _t {
11142                    alloy_sol_types::private::AssertTypeEq::<
11143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11144                    >(_) => {}
11145                }
11146            }
11147            #[automatically_derived]
11148            #[doc(hidden)]
11149            impl ::core::convert::From<isPermissionedProverEnabledCall>
11150            for UnderlyingRustTuple<'_> {
11151                fn from(value: isPermissionedProverEnabledCall) -> Self {
11152                    ()
11153                }
11154            }
11155            #[automatically_derived]
11156            #[doc(hidden)]
11157            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11158            for isPermissionedProverEnabledCall {
11159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11160                    Self
11161                }
11162            }
11163        }
11164        {
11165            #[doc(hidden)]
11166            #[allow(dead_code)]
11167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11168            #[doc(hidden)]
11169            type UnderlyingRustTuple<'a> = (bool,);
11170            #[cfg(test)]
11171            #[allow(dead_code, unreachable_patterns)]
11172            fn _type_assertion(
11173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11174            ) {
11175                match _t {
11176                    alloy_sol_types::private::AssertTypeEq::<
11177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11178                    >(_) => {}
11179                }
11180            }
11181            #[automatically_derived]
11182            #[doc(hidden)]
11183            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11184            for UnderlyingRustTuple<'_> {
11185                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11186                    (value._0,)
11187                }
11188            }
11189            #[automatically_derived]
11190            #[doc(hidden)]
11191            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11192            for isPermissionedProverEnabledReturn {
11193                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11194                    Self { _0: tuple.0 }
11195                }
11196            }
11197        }
11198        #[automatically_derived]
11199        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11200            type Parameters<'a> = ();
11201            type Token<'a> = <Self::Parameters<
11202                'a,
11203            > as alloy_sol_types::SolType>::Token<'a>;
11204            type Return = bool;
11205            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11206            type ReturnToken<'a> = <Self::ReturnTuple<
11207                'a,
11208            > as alloy_sol_types::SolType>::Token<'a>;
11209            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11210            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11211            #[inline]
11212            fn new<'a>(
11213                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11214            ) -> Self {
11215                tuple.into()
11216            }
11217            #[inline]
11218            fn tokenize(&self) -> Self::Token<'_> {
11219                ()
11220            }
11221            #[inline]
11222            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11223                (
11224                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11225                        ret,
11226                    ),
11227                )
11228            }
11229            #[inline]
11230            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11231                <Self::ReturnTuple<
11232                    '_,
11233                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11234                    .map(|r| {
11235                        let r: isPermissionedProverEnabledReturn = r.into();
11236                        r._0
11237                    })
11238            }
11239            #[inline]
11240            fn abi_decode_returns_validate(
11241                data: &[u8],
11242            ) -> alloy_sol_types::Result<Self::Return> {
11243                <Self::ReturnTuple<
11244                    '_,
11245                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11246                    .map(|r| {
11247                        let r: isPermissionedProverEnabledReturn = r.into();
11248                        r._0
11249                    })
11250            }
11251        }
11252    };
11253    #[derive(serde::Serialize, serde::Deserialize)]
11254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11255    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11256```solidity
11257function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11258```*/
11259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11260    #[derive(Clone)]
11261    pub struct lagOverEscapeHatchThresholdCall {
11262        #[allow(missing_docs)]
11263        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11264        #[allow(missing_docs)]
11265        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11266    }
11267    #[derive(serde::Serialize, serde::Deserialize)]
11268    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11269    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11271    #[derive(Clone)]
11272    pub struct lagOverEscapeHatchThresholdReturn {
11273        #[allow(missing_docs)]
11274        pub _0: bool,
11275    }
11276    #[allow(
11277        non_camel_case_types,
11278        non_snake_case,
11279        clippy::pub_underscore_fields,
11280        clippy::style
11281    )]
11282    const _: () = {
11283        use alloy::sol_types as alloy_sol_types;
11284        {
11285            #[doc(hidden)]
11286            #[allow(dead_code)]
11287            type UnderlyingSolTuple<'a> = (
11288                alloy::sol_types::sol_data::Uint<256>,
11289                alloy::sol_types::sol_data::Uint<256>,
11290            );
11291            #[doc(hidden)]
11292            type UnderlyingRustTuple<'a> = (
11293                alloy::sol_types::private::primitives::aliases::U256,
11294                alloy::sol_types::private::primitives::aliases::U256,
11295            );
11296            #[cfg(test)]
11297            #[allow(dead_code, unreachable_patterns)]
11298            fn _type_assertion(
11299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11300            ) {
11301                match _t {
11302                    alloy_sol_types::private::AssertTypeEq::<
11303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11304                    >(_) => {}
11305                }
11306            }
11307            #[automatically_derived]
11308            #[doc(hidden)]
11309            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11310            for UnderlyingRustTuple<'_> {
11311                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11312                    (value.blockNumber, value.threshold)
11313                }
11314            }
11315            #[automatically_derived]
11316            #[doc(hidden)]
11317            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11318            for lagOverEscapeHatchThresholdCall {
11319                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11320                    Self {
11321                        blockNumber: tuple.0,
11322                        threshold: tuple.1,
11323                    }
11324                }
11325            }
11326        }
11327        {
11328            #[doc(hidden)]
11329            #[allow(dead_code)]
11330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11331            #[doc(hidden)]
11332            type UnderlyingRustTuple<'a> = (bool,);
11333            #[cfg(test)]
11334            #[allow(dead_code, unreachable_patterns)]
11335            fn _type_assertion(
11336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11337            ) {
11338                match _t {
11339                    alloy_sol_types::private::AssertTypeEq::<
11340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11341                    >(_) => {}
11342                }
11343            }
11344            #[automatically_derived]
11345            #[doc(hidden)]
11346            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11347            for UnderlyingRustTuple<'_> {
11348                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11349                    (value._0,)
11350                }
11351            }
11352            #[automatically_derived]
11353            #[doc(hidden)]
11354            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11355            for lagOverEscapeHatchThresholdReturn {
11356                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11357                    Self { _0: tuple.0 }
11358                }
11359            }
11360        }
11361        #[automatically_derived]
11362        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11363            type Parameters<'a> = (
11364                alloy::sol_types::sol_data::Uint<256>,
11365                alloy::sol_types::sol_data::Uint<256>,
11366            );
11367            type Token<'a> = <Self::Parameters<
11368                'a,
11369            > as alloy_sol_types::SolType>::Token<'a>;
11370            type Return = bool;
11371            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11372            type ReturnToken<'a> = <Self::ReturnTuple<
11373                'a,
11374            > as alloy_sol_types::SolType>::Token<'a>;
11375            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11376            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11377            #[inline]
11378            fn new<'a>(
11379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11380            ) -> Self {
11381                tuple.into()
11382            }
11383            #[inline]
11384            fn tokenize(&self) -> Self::Token<'_> {
11385                (
11386                    <alloy::sol_types::sol_data::Uint<
11387                        256,
11388                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11389                    <alloy::sol_types::sol_data::Uint<
11390                        256,
11391                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11392                )
11393            }
11394            #[inline]
11395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11396                (
11397                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11398                        ret,
11399                    ),
11400                )
11401            }
11402            #[inline]
11403            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11404                <Self::ReturnTuple<
11405                    '_,
11406                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11407                    .map(|r| {
11408                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11409                        r._0
11410                    })
11411            }
11412            #[inline]
11413            fn abi_decode_returns_validate(
11414                data: &[u8],
11415            ) -> alloy_sol_types::Result<Self::Return> {
11416                <Self::ReturnTuple<
11417                    '_,
11418                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11419                    .map(|r| {
11420                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11421                        r._0
11422                    })
11423            }
11424        }
11425    };
11426    #[derive(serde::Serialize, serde::Deserialize)]
11427    #[derive()]
11428    /**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`.
11429```solidity
11430function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11431```*/
11432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11433    #[derive(Clone)]
11434    pub struct newFinalizedState_0Call {
11435        #[allow(missing_docs)]
11436        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11437        #[allow(missing_docs)]
11438        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11439    }
11440    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
11441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11442    #[derive(Clone)]
11443    pub struct newFinalizedState_0Return {}
11444    #[allow(
11445        non_camel_case_types,
11446        non_snake_case,
11447        clippy::pub_underscore_fields,
11448        clippy::style
11449    )]
11450    const _: () = {
11451        use alloy::sol_types as alloy_sol_types;
11452        {
11453            #[doc(hidden)]
11454            #[allow(dead_code)]
11455            type UnderlyingSolTuple<'a> = (
11456                LightClient::LightClientState,
11457                IPlonkVerifier::PlonkProof,
11458            );
11459            #[doc(hidden)]
11460            type UnderlyingRustTuple<'a> = (
11461                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11462                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11463            );
11464            #[cfg(test)]
11465            #[allow(dead_code, unreachable_patterns)]
11466            fn _type_assertion(
11467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11468            ) {
11469                match _t {
11470                    alloy_sol_types::private::AssertTypeEq::<
11471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11472                    >(_) => {}
11473                }
11474            }
11475            #[automatically_derived]
11476            #[doc(hidden)]
11477            impl ::core::convert::From<newFinalizedState_0Call>
11478            for UnderlyingRustTuple<'_> {
11479                fn from(value: newFinalizedState_0Call) -> Self {
11480                    (value._0, value._1)
11481                }
11482            }
11483            #[automatically_derived]
11484            #[doc(hidden)]
11485            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11486            for newFinalizedState_0Call {
11487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11488                    Self { _0: tuple.0, _1: tuple.1 }
11489                }
11490            }
11491        }
11492        {
11493            #[doc(hidden)]
11494            #[allow(dead_code)]
11495            type UnderlyingSolTuple<'a> = ();
11496            #[doc(hidden)]
11497            type UnderlyingRustTuple<'a> = ();
11498            #[cfg(test)]
11499            #[allow(dead_code, unreachable_patterns)]
11500            fn _type_assertion(
11501                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11502            ) {
11503                match _t {
11504                    alloy_sol_types::private::AssertTypeEq::<
11505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11506                    >(_) => {}
11507                }
11508            }
11509            #[automatically_derived]
11510            #[doc(hidden)]
11511            impl ::core::convert::From<newFinalizedState_0Return>
11512            for UnderlyingRustTuple<'_> {
11513                fn from(value: newFinalizedState_0Return) -> Self {
11514                    ()
11515                }
11516            }
11517            #[automatically_derived]
11518            #[doc(hidden)]
11519            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11520            for newFinalizedState_0Return {
11521                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11522                    Self {}
11523                }
11524            }
11525        }
11526        impl newFinalizedState_0Return {
11527            fn _tokenize(
11528                &self,
11529            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11530                ()
11531            }
11532        }
11533        #[automatically_derived]
11534        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11535            type Parameters<'a> = (
11536                LightClient::LightClientState,
11537                IPlonkVerifier::PlonkProof,
11538            );
11539            type Token<'a> = <Self::Parameters<
11540                'a,
11541            > as alloy_sol_types::SolType>::Token<'a>;
11542            type Return = newFinalizedState_0Return;
11543            type ReturnTuple<'a> = ();
11544            type ReturnToken<'a> = <Self::ReturnTuple<
11545                'a,
11546            > as alloy_sol_types::SolType>::Token<'a>;
11547            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))";
11548            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11549            #[inline]
11550            fn new<'a>(
11551                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11552            ) -> Self {
11553                tuple.into()
11554            }
11555            #[inline]
11556            fn tokenize(&self) -> Self::Token<'_> {
11557                (
11558                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11559                        &self._0,
11560                    ),
11561                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11562                        &self._1,
11563                    ),
11564                )
11565            }
11566            #[inline]
11567            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11568                newFinalizedState_0Return::_tokenize(ret)
11569            }
11570            #[inline]
11571            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11572                <Self::ReturnTuple<
11573                    '_,
11574                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11575                    .map(Into::into)
11576            }
11577            #[inline]
11578            fn abi_decode_returns_validate(
11579                data: &[u8],
11580            ) -> alloy_sol_types::Result<Self::Return> {
11581                <Self::ReturnTuple<
11582                    '_,
11583                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11584                    .map(Into::into)
11585            }
11586        }
11587    };
11588    #[derive(serde::Serialize, serde::Deserialize)]
11589    #[derive()]
11590    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11591```solidity
11592function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11593```*/
11594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11595    #[derive(Clone)]
11596    pub struct newFinalizedState_1Call {
11597        #[allow(missing_docs)]
11598        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11599        #[allow(missing_docs)]
11600        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11601        #[allow(missing_docs)]
11602        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11603    }
11604    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11606    #[derive(Clone)]
11607    pub struct newFinalizedState_1Return {}
11608    #[allow(
11609        non_camel_case_types,
11610        non_snake_case,
11611        clippy::pub_underscore_fields,
11612        clippy::style
11613    )]
11614    const _: () = {
11615        use alloy::sol_types as alloy_sol_types;
11616        {
11617            #[doc(hidden)]
11618            #[allow(dead_code)]
11619            type UnderlyingSolTuple<'a> = (
11620                LightClient::LightClientState,
11621                LightClient::StakeTableState,
11622                IPlonkVerifier::PlonkProof,
11623            );
11624            #[doc(hidden)]
11625            type UnderlyingRustTuple<'a> = (
11626                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11627                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11628                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11629            );
11630            #[cfg(test)]
11631            #[allow(dead_code, unreachable_patterns)]
11632            fn _type_assertion(
11633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11634            ) {
11635                match _t {
11636                    alloy_sol_types::private::AssertTypeEq::<
11637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11638                    >(_) => {}
11639                }
11640            }
11641            #[automatically_derived]
11642            #[doc(hidden)]
11643            impl ::core::convert::From<newFinalizedState_1Call>
11644            for UnderlyingRustTuple<'_> {
11645                fn from(value: newFinalizedState_1Call) -> Self {
11646                    (value.newState, value.nextStakeTable, value.proof)
11647                }
11648            }
11649            #[automatically_derived]
11650            #[doc(hidden)]
11651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11652            for newFinalizedState_1Call {
11653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11654                    Self {
11655                        newState: tuple.0,
11656                        nextStakeTable: tuple.1,
11657                        proof: tuple.2,
11658                    }
11659                }
11660            }
11661        }
11662        {
11663            #[doc(hidden)]
11664            #[allow(dead_code)]
11665            type UnderlyingSolTuple<'a> = ();
11666            #[doc(hidden)]
11667            type UnderlyingRustTuple<'a> = ();
11668            #[cfg(test)]
11669            #[allow(dead_code, unreachable_patterns)]
11670            fn _type_assertion(
11671                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11672            ) {
11673                match _t {
11674                    alloy_sol_types::private::AssertTypeEq::<
11675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11676                    >(_) => {}
11677                }
11678            }
11679            #[automatically_derived]
11680            #[doc(hidden)]
11681            impl ::core::convert::From<newFinalizedState_1Return>
11682            for UnderlyingRustTuple<'_> {
11683                fn from(value: newFinalizedState_1Return) -> Self {
11684                    ()
11685                }
11686            }
11687            #[automatically_derived]
11688            #[doc(hidden)]
11689            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11690            for newFinalizedState_1Return {
11691                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11692                    Self {}
11693                }
11694            }
11695        }
11696        impl newFinalizedState_1Return {
11697            fn _tokenize(
11698                &self,
11699            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11700                ()
11701            }
11702        }
11703        #[automatically_derived]
11704        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11705            type Parameters<'a> = (
11706                LightClient::LightClientState,
11707                LightClient::StakeTableState,
11708                IPlonkVerifier::PlonkProof,
11709            );
11710            type Token<'a> = <Self::Parameters<
11711                'a,
11712            > as alloy_sol_types::SolType>::Token<'a>;
11713            type Return = newFinalizedState_1Return;
11714            type ReturnTuple<'a> = ();
11715            type ReturnToken<'a> = <Self::ReturnTuple<
11716                'a,
11717            > as alloy_sol_types::SolType>::Token<'a>;
11718            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11719            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11720            #[inline]
11721            fn new<'a>(
11722                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11723            ) -> Self {
11724                tuple.into()
11725            }
11726            #[inline]
11727            fn tokenize(&self) -> Self::Token<'_> {
11728                (
11729                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11730                        &self.newState,
11731                    ),
11732                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11733                        &self.nextStakeTable,
11734                    ),
11735                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11736                        &self.proof,
11737                    ),
11738                )
11739            }
11740            #[inline]
11741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11742                newFinalizedState_1Return::_tokenize(ret)
11743            }
11744            #[inline]
11745            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11746                <Self::ReturnTuple<
11747                    '_,
11748                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11749                    .map(Into::into)
11750            }
11751            #[inline]
11752            fn abi_decode_returns_validate(
11753                data: &[u8],
11754            ) -> alloy_sol_types::Result<Self::Return> {
11755                <Self::ReturnTuple<
11756                    '_,
11757                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11758                    .map(Into::into)
11759            }
11760        }
11761    };
11762    #[derive(serde::Serialize, serde::Deserialize)]
11763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11764    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11765```solidity
11766function owner() external view returns (address);
11767```*/
11768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11769    #[derive(Clone)]
11770    pub struct ownerCall;
11771    #[derive(serde::Serialize, serde::Deserialize)]
11772    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11773    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11775    #[derive(Clone)]
11776    pub struct ownerReturn {
11777        #[allow(missing_docs)]
11778        pub _0: alloy::sol_types::private::Address,
11779    }
11780    #[allow(
11781        non_camel_case_types,
11782        non_snake_case,
11783        clippy::pub_underscore_fields,
11784        clippy::style
11785    )]
11786    const _: () = {
11787        use alloy::sol_types as alloy_sol_types;
11788        {
11789            #[doc(hidden)]
11790            #[allow(dead_code)]
11791            type UnderlyingSolTuple<'a> = ();
11792            #[doc(hidden)]
11793            type UnderlyingRustTuple<'a> = ();
11794            #[cfg(test)]
11795            #[allow(dead_code, unreachable_patterns)]
11796            fn _type_assertion(
11797                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11798            ) {
11799                match _t {
11800                    alloy_sol_types::private::AssertTypeEq::<
11801                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11802                    >(_) => {}
11803                }
11804            }
11805            #[automatically_derived]
11806            #[doc(hidden)]
11807            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11808                fn from(value: ownerCall) -> Self {
11809                    ()
11810                }
11811            }
11812            #[automatically_derived]
11813            #[doc(hidden)]
11814            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11815                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11816                    Self
11817                }
11818            }
11819        }
11820        {
11821            #[doc(hidden)]
11822            #[allow(dead_code)]
11823            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11824            #[doc(hidden)]
11825            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11826            #[cfg(test)]
11827            #[allow(dead_code, unreachable_patterns)]
11828            fn _type_assertion(
11829                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11830            ) {
11831                match _t {
11832                    alloy_sol_types::private::AssertTypeEq::<
11833                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11834                    >(_) => {}
11835                }
11836            }
11837            #[automatically_derived]
11838            #[doc(hidden)]
11839            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11840                fn from(value: ownerReturn) -> Self {
11841                    (value._0,)
11842                }
11843            }
11844            #[automatically_derived]
11845            #[doc(hidden)]
11846            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11847                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11848                    Self { _0: tuple.0 }
11849                }
11850            }
11851        }
11852        #[automatically_derived]
11853        impl alloy_sol_types::SolCall for ownerCall {
11854            type Parameters<'a> = ();
11855            type Token<'a> = <Self::Parameters<
11856                'a,
11857            > as alloy_sol_types::SolType>::Token<'a>;
11858            type Return = alloy::sol_types::private::Address;
11859            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11860            type ReturnToken<'a> = <Self::ReturnTuple<
11861                'a,
11862            > as alloy_sol_types::SolType>::Token<'a>;
11863            const SIGNATURE: &'static str = "owner()";
11864            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11865            #[inline]
11866            fn new<'a>(
11867                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11868            ) -> Self {
11869                tuple.into()
11870            }
11871            #[inline]
11872            fn tokenize(&self) -> Self::Token<'_> {
11873                ()
11874            }
11875            #[inline]
11876            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11877                (
11878                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11879                        ret,
11880                    ),
11881                )
11882            }
11883            #[inline]
11884            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11885                <Self::ReturnTuple<
11886                    '_,
11887                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11888                    .map(|r| {
11889                        let r: ownerReturn = r.into();
11890                        r._0
11891                    })
11892            }
11893            #[inline]
11894            fn abi_decode_returns_validate(
11895                data: &[u8],
11896            ) -> alloy_sol_types::Result<Self::Return> {
11897                <Self::ReturnTuple<
11898                    '_,
11899                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11900                    .map(|r| {
11901                        let r: ownerReturn = r.into();
11902                        r._0
11903                    })
11904            }
11905        }
11906    };
11907    #[derive(serde::Serialize, serde::Deserialize)]
11908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11909    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11910```solidity
11911function permissionedProver() external view returns (address);
11912```*/
11913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11914    #[derive(Clone)]
11915    pub struct permissionedProverCall;
11916    #[derive(serde::Serialize, serde::Deserialize)]
11917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11918    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11919    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11920    #[derive(Clone)]
11921    pub struct permissionedProverReturn {
11922        #[allow(missing_docs)]
11923        pub _0: alloy::sol_types::private::Address,
11924    }
11925    #[allow(
11926        non_camel_case_types,
11927        non_snake_case,
11928        clippy::pub_underscore_fields,
11929        clippy::style
11930    )]
11931    const _: () = {
11932        use alloy::sol_types as alloy_sol_types;
11933        {
11934            #[doc(hidden)]
11935            #[allow(dead_code)]
11936            type UnderlyingSolTuple<'a> = ();
11937            #[doc(hidden)]
11938            type UnderlyingRustTuple<'a> = ();
11939            #[cfg(test)]
11940            #[allow(dead_code, unreachable_patterns)]
11941            fn _type_assertion(
11942                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11943            ) {
11944                match _t {
11945                    alloy_sol_types::private::AssertTypeEq::<
11946                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11947                    >(_) => {}
11948                }
11949            }
11950            #[automatically_derived]
11951            #[doc(hidden)]
11952            impl ::core::convert::From<permissionedProverCall>
11953            for UnderlyingRustTuple<'_> {
11954                fn from(value: permissionedProverCall) -> Self {
11955                    ()
11956                }
11957            }
11958            #[automatically_derived]
11959            #[doc(hidden)]
11960            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11961            for permissionedProverCall {
11962                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11963                    Self
11964                }
11965            }
11966        }
11967        {
11968            #[doc(hidden)]
11969            #[allow(dead_code)]
11970            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11971            #[doc(hidden)]
11972            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11973            #[cfg(test)]
11974            #[allow(dead_code, unreachable_patterns)]
11975            fn _type_assertion(
11976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11977            ) {
11978                match _t {
11979                    alloy_sol_types::private::AssertTypeEq::<
11980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11981                    >(_) => {}
11982                }
11983            }
11984            #[automatically_derived]
11985            #[doc(hidden)]
11986            impl ::core::convert::From<permissionedProverReturn>
11987            for UnderlyingRustTuple<'_> {
11988                fn from(value: permissionedProverReturn) -> Self {
11989                    (value._0,)
11990                }
11991            }
11992            #[automatically_derived]
11993            #[doc(hidden)]
11994            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11995            for permissionedProverReturn {
11996                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11997                    Self { _0: tuple.0 }
11998                }
11999            }
12000        }
12001        #[automatically_derived]
12002        impl alloy_sol_types::SolCall for permissionedProverCall {
12003            type Parameters<'a> = ();
12004            type Token<'a> = <Self::Parameters<
12005                'a,
12006            > as alloy_sol_types::SolType>::Token<'a>;
12007            type Return = alloy::sol_types::private::Address;
12008            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12009            type ReturnToken<'a> = <Self::ReturnTuple<
12010                'a,
12011            > as alloy_sol_types::SolType>::Token<'a>;
12012            const SIGNATURE: &'static str = "permissionedProver()";
12013            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12014            #[inline]
12015            fn new<'a>(
12016                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12017            ) -> Self {
12018                tuple.into()
12019            }
12020            #[inline]
12021            fn tokenize(&self) -> Self::Token<'_> {
12022                ()
12023            }
12024            #[inline]
12025            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12026                (
12027                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12028                        ret,
12029                    ),
12030                )
12031            }
12032            #[inline]
12033            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12034                <Self::ReturnTuple<
12035                    '_,
12036                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12037                    .map(|r| {
12038                        let r: permissionedProverReturn = r.into();
12039                        r._0
12040                    })
12041            }
12042            #[inline]
12043            fn abi_decode_returns_validate(
12044                data: &[u8],
12045            ) -> alloy_sol_types::Result<Self::Return> {
12046                <Self::ReturnTuple<
12047                    '_,
12048                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12049                    .map(|r| {
12050                        let r: permissionedProverReturn = r.into();
12051                        r._0
12052                    })
12053            }
12054        }
12055    };
12056    #[derive(serde::Serialize, serde::Deserialize)]
12057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12058    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12059```solidity
12060function proxiableUUID() external view returns (bytes32);
12061```*/
12062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12063    #[derive(Clone)]
12064    pub struct proxiableUUIDCall;
12065    #[derive(serde::Serialize, serde::Deserialize)]
12066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12067    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12069    #[derive(Clone)]
12070    pub struct proxiableUUIDReturn {
12071        #[allow(missing_docs)]
12072        pub _0: alloy::sol_types::private::FixedBytes<32>,
12073    }
12074    #[allow(
12075        non_camel_case_types,
12076        non_snake_case,
12077        clippy::pub_underscore_fields,
12078        clippy::style
12079    )]
12080    const _: () = {
12081        use alloy::sol_types as alloy_sol_types;
12082        {
12083            #[doc(hidden)]
12084            #[allow(dead_code)]
12085            type UnderlyingSolTuple<'a> = ();
12086            #[doc(hidden)]
12087            type UnderlyingRustTuple<'a> = ();
12088            #[cfg(test)]
12089            #[allow(dead_code, unreachable_patterns)]
12090            fn _type_assertion(
12091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12092            ) {
12093                match _t {
12094                    alloy_sol_types::private::AssertTypeEq::<
12095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12096                    >(_) => {}
12097                }
12098            }
12099            #[automatically_derived]
12100            #[doc(hidden)]
12101            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12102                fn from(value: proxiableUUIDCall) -> Self {
12103                    ()
12104                }
12105            }
12106            #[automatically_derived]
12107            #[doc(hidden)]
12108            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12110                    Self
12111                }
12112            }
12113        }
12114        {
12115            #[doc(hidden)]
12116            #[allow(dead_code)]
12117            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12118            #[doc(hidden)]
12119            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12120            #[cfg(test)]
12121            #[allow(dead_code, unreachable_patterns)]
12122            fn _type_assertion(
12123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12124            ) {
12125                match _t {
12126                    alloy_sol_types::private::AssertTypeEq::<
12127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12128                    >(_) => {}
12129                }
12130            }
12131            #[automatically_derived]
12132            #[doc(hidden)]
12133            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12134                fn from(value: proxiableUUIDReturn) -> Self {
12135                    (value._0,)
12136                }
12137            }
12138            #[automatically_derived]
12139            #[doc(hidden)]
12140            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12141                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12142                    Self { _0: tuple.0 }
12143                }
12144            }
12145        }
12146        #[automatically_derived]
12147        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12148            type Parameters<'a> = ();
12149            type Token<'a> = <Self::Parameters<
12150                'a,
12151            > as alloy_sol_types::SolType>::Token<'a>;
12152            type Return = alloy::sol_types::private::FixedBytes<32>;
12153            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12154            type ReturnToken<'a> = <Self::ReturnTuple<
12155                'a,
12156            > as alloy_sol_types::SolType>::Token<'a>;
12157            const SIGNATURE: &'static str = "proxiableUUID()";
12158            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12159            #[inline]
12160            fn new<'a>(
12161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12162            ) -> Self {
12163                tuple.into()
12164            }
12165            #[inline]
12166            fn tokenize(&self) -> Self::Token<'_> {
12167                ()
12168            }
12169            #[inline]
12170            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12171                (
12172                    <alloy::sol_types::sol_data::FixedBytes<
12173                        32,
12174                    > as alloy_sol_types::SolType>::tokenize(ret),
12175                )
12176            }
12177            #[inline]
12178            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12179                <Self::ReturnTuple<
12180                    '_,
12181                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12182                    .map(|r| {
12183                        let r: proxiableUUIDReturn = r.into();
12184                        r._0
12185                    })
12186            }
12187            #[inline]
12188            fn abi_decode_returns_validate(
12189                data: &[u8],
12190            ) -> alloy_sol_types::Result<Self::Return> {
12191                <Self::ReturnTuple<
12192                    '_,
12193                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12194                    .map(|r| {
12195                        let r: proxiableUUIDReturn = r.into();
12196                        r._0
12197                    })
12198            }
12199        }
12200    };
12201    #[derive(serde::Serialize, serde::Deserialize)]
12202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12203    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12204```solidity
12205function renounceOwnership() external;
12206```*/
12207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12208    #[derive(Clone)]
12209    pub struct renounceOwnershipCall;
12210    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12212    #[derive(Clone)]
12213    pub struct renounceOwnershipReturn {}
12214    #[allow(
12215        non_camel_case_types,
12216        non_snake_case,
12217        clippy::pub_underscore_fields,
12218        clippy::style
12219    )]
12220    const _: () = {
12221        use alloy::sol_types as alloy_sol_types;
12222        {
12223            #[doc(hidden)]
12224            #[allow(dead_code)]
12225            type UnderlyingSolTuple<'a> = ();
12226            #[doc(hidden)]
12227            type UnderlyingRustTuple<'a> = ();
12228            #[cfg(test)]
12229            #[allow(dead_code, unreachable_patterns)]
12230            fn _type_assertion(
12231                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12232            ) {
12233                match _t {
12234                    alloy_sol_types::private::AssertTypeEq::<
12235                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12236                    >(_) => {}
12237                }
12238            }
12239            #[automatically_derived]
12240            #[doc(hidden)]
12241            impl ::core::convert::From<renounceOwnershipCall>
12242            for UnderlyingRustTuple<'_> {
12243                fn from(value: renounceOwnershipCall) -> Self {
12244                    ()
12245                }
12246            }
12247            #[automatically_derived]
12248            #[doc(hidden)]
12249            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12250            for renounceOwnershipCall {
12251                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12252                    Self
12253                }
12254            }
12255        }
12256        {
12257            #[doc(hidden)]
12258            #[allow(dead_code)]
12259            type UnderlyingSolTuple<'a> = ();
12260            #[doc(hidden)]
12261            type UnderlyingRustTuple<'a> = ();
12262            #[cfg(test)]
12263            #[allow(dead_code, unreachable_patterns)]
12264            fn _type_assertion(
12265                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12266            ) {
12267                match _t {
12268                    alloy_sol_types::private::AssertTypeEq::<
12269                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12270                    >(_) => {}
12271                }
12272            }
12273            #[automatically_derived]
12274            #[doc(hidden)]
12275            impl ::core::convert::From<renounceOwnershipReturn>
12276            for UnderlyingRustTuple<'_> {
12277                fn from(value: renounceOwnershipReturn) -> Self {
12278                    ()
12279                }
12280            }
12281            #[automatically_derived]
12282            #[doc(hidden)]
12283            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12284            for renounceOwnershipReturn {
12285                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12286                    Self {}
12287                }
12288            }
12289        }
12290        impl renounceOwnershipReturn {
12291            fn _tokenize(
12292                &self,
12293            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12294                ()
12295            }
12296        }
12297        #[automatically_derived]
12298        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12299            type Parameters<'a> = ();
12300            type Token<'a> = <Self::Parameters<
12301                'a,
12302            > as alloy_sol_types::SolType>::Token<'a>;
12303            type Return = renounceOwnershipReturn;
12304            type ReturnTuple<'a> = ();
12305            type ReturnToken<'a> = <Self::ReturnTuple<
12306                'a,
12307            > as alloy_sol_types::SolType>::Token<'a>;
12308            const SIGNATURE: &'static str = "renounceOwnership()";
12309            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12310            #[inline]
12311            fn new<'a>(
12312                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12313            ) -> Self {
12314                tuple.into()
12315            }
12316            #[inline]
12317            fn tokenize(&self) -> Self::Token<'_> {
12318                ()
12319            }
12320            #[inline]
12321            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12322                renounceOwnershipReturn::_tokenize(ret)
12323            }
12324            #[inline]
12325            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12326                <Self::ReturnTuple<
12327                    '_,
12328                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12329                    .map(Into::into)
12330            }
12331            #[inline]
12332            fn abi_decode_returns_validate(
12333                data: &[u8],
12334            ) -> alloy_sol_types::Result<Self::Return> {
12335                <Self::ReturnTuple<
12336                    '_,
12337                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12338                    .map(Into::into)
12339            }
12340        }
12341    };
12342    #[derive(serde::Serialize, serde::Deserialize)]
12343    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12344    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
12345```solidity
12346function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
12347```*/
12348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12349    #[derive(Clone)]
12350    pub struct setBlocksPerEpochCall {
12351        #[allow(missing_docs)]
12352        pub newBlocksPerEpoch: u64,
12353    }
12354    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
12355    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12356    #[derive(Clone)]
12357    pub struct setBlocksPerEpochReturn {}
12358    #[allow(
12359        non_camel_case_types,
12360        non_snake_case,
12361        clippy::pub_underscore_fields,
12362        clippy::style
12363    )]
12364    const _: () = {
12365        use alloy::sol_types as alloy_sol_types;
12366        {
12367            #[doc(hidden)]
12368            #[allow(dead_code)]
12369            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12370            #[doc(hidden)]
12371            type UnderlyingRustTuple<'a> = (u64,);
12372            #[cfg(test)]
12373            #[allow(dead_code, unreachable_patterns)]
12374            fn _type_assertion(
12375                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12376            ) {
12377                match _t {
12378                    alloy_sol_types::private::AssertTypeEq::<
12379                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12380                    >(_) => {}
12381                }
12382            }
12383            #[automatically_derived]
12384            #[doc(hidden)]
12385            impl ::core::convert::From<setBlocksPerEpochCall>
12386            for UnderlyingRustTuple<'_> {
12387                fn from(value: setBlocksPerEpochCall) -> Self {
12388                    (value.newBlocksPerEpoch,)
12389                }
12390            }
12391            #[automatically_derived]
12392            #[doc(hidden)]
12393            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12394            for setBlocksPerEpochCall {
12395                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12396                    Self { newBlocksPerEpoch: tuple.0 }
12397                }
12398            }
12399        }
12400        {
12401            #[doc(hidden)]
12402            #[allow(dead_code)]
12403            type UnderlyingSolTuple<'a> = ();
12404            #[doc(hidden)]
12405            type UnderlyingRustTuple<'a> = ();
12406            #[cfg(test)]
12407            #[allow(dead_code, unreachable_patterns)]
12408            fn _type_assertion(
12409                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12410            ) {
12411                match _t {
12412                    alloy_sol_types::private::AssertTypeEq::<
12413                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12414                    >(_) => {}
12415                }
12416            }
12417            #[automatically_derived]
12418            #[doc(hidden)]
12419            impl ::core::convert::From<setBlocksPerEpochReturn>
12420            for UnderlyingRustTuple<'_> {
12421                fn from(value: setBlocksPerEpochReturn) -> Self {
12422                    ()
12423                }
12424            }
12425            #[automatically_derived]
12426            #[doc(hidden)]
12427            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12428            for setBlocksPerEpochReturn {
12429                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12430                    Self {}
12431                }
12432            }
12433        }
12434        impl setBlocksPerEpochReturn {
12435            fn _tokenize(
12436                &self,
12437            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12438                ()
12439            }
12440        }
12441        #[automatically_derived]
12442        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
12443            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12444            type Token<'a> = <Self::Parameters<
12445                'a,
12446            > as alloy_sol_types::SolType>::Token<'a>;
12447            type Return = setBlocksPerEpochReturn;
12448            type ReturnTuple<'a> = ();
12449            type ReturnToken<'a> = <Self::ReturnTuple<
12450                'a,
12451            > as alloy_sol_types::SolType>::Token<'a>;
12452            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
12453            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
12454            #[inline]
12455            fn new<'a>(
12456                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12457            ) -> Self {
12458                tuple.into()
12459            }
12460            #[inline]
12461            fn tokenize(&self) -> Self::Token<'_> {
12462                (
12463                    <alloy::sol_types::sol_data::Uint<
12464                        64,
12465                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
12466                )
12467            }
12468            #[inline]
12469            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12470                setBlocksPerEpochReturn::_tokenize(ret)
12471            }
12472            #[inline]
12473            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12474                <Self::ReturnTuple<
12475                    '_,
12476                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12477                    .map(Into::into)
12478            }
12479            #[inline]
12480            fn abi_decode_returns_validate(
12481                data: &[u8],
12482            ) -> alloy_sol_types::Result<Self::Return> {
12483                <Self::ReturnTuple<
12484                    '_,
12485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12486                    .map(Into::into)
12487            }
12488        }
12489    };
12490    #[derive(serde::Serialize, serde::Deserialize)]
12491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12492    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
12493```solidity
12494function setFinalizedState(LightClient.LightClientState memory state) external;
12495```*/
12496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12497    #[derive(Clone)]
12498    pub struct setFinalizedStateCall {
12499        #[allow(missing_docs)]
12500        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12501    }
12502    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
12503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12504    #[derive(Clone)]
12505    pub struct setFinalizedStateReturn {}
12506    #[allow(
12507        non_camel_case_types,
12508        non_snake_case,
12509        clippy::pub_underscore_fields,
12510        clippy::style
12511    )]
12512    const _: () = {
12513        use alloy::sol_types as alloy_sol_types;
12514        {
12515            #[doc(hidden)]
12516            #[allow(dead_code)]
12517            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
12518            #[doc(hidden)]
12519            type UnderlyingRustTuple<'a> = (
12520                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12521            );
12522            #[cfg(test)]
12523            #[allow(dead_code, unreachable_patterns)]
12524            fn _type_assertion(
12525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12526            ) {
12527                match _t {
12528                    alloy_sol_types::private::AssertTypeEq::<
12529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12530                    >(_) => {}
12531                }
12532            }
12533            #[automatically_derived]
12534            #[doc(hidden)]
12535            impl ::core::convert::From<setFinalizedStateCall>
12536            for UnderlyingRustTuple<'_> {
12537                fn from(value: setFinalizedStateCall) -> Self {
12538                    (value.state,)
12539                }
12540            }
12541            #[automatically_derived]
12542            #[doc(hidden)]
12543            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12544            for setFinalizedStateCall {
12545                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12546                    Self { state: tuple.0 }
12547                }
12548            }
12549        }
12550        {
12551            #[doc(hidden)]
12552            #[allow(dead_code)]
12553            type UnderlyingSolTuple<'a> = ();
12554            #[doc(hidden)]
12555            type UnderlyingRustTuple<'a> = ();
12556            #[cfg(test)]
12557            #[allow(dead_code, unreachable_patterns)]
12558            fn _type_assertion(
12559                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12560            ) {
12561                match _t {
12562                    alloy_sol_types::private::AssertTypeEq::<
12563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12564                    >(_) => {}
12565                }
12566            }
12567            #[automatically_derived]
12568            #[doc(hidden)]
12569            impl ::core::convert::From<setFinalizedStateReturn>
12570            for UnderlyingRustTuple<'_> {
12571                fn from(value: setFinalizedStateReturn) -> Self {
12572                    ()
12573                }
12574            }
12575            #[automatically_derived]
12576            #[doc(hidden)]
12577            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12578            for setFinalizedStateReturn {
12579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12580                    Self {}
12581                }
12582            }
12583        }
12584        impl setFinalizedStateReturn {
12585            fn _tokenize(
12586                &self,
12587            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12588                ()
12589            }
12590        }
12591        #[automatically_derived]
12592        impl alloy_sol_types::SolCall for setFinalizedStateCall {
12593            type Parameters<'a> = (LightClient::LightClientState,);
12594            type Token<'a> = <Self::Parameters<
12595                'a,
12596            > as alloy_sol_types::SolType>::Token<'a>;
12597            type Return = setFinalizedStateReturn;
12598            type ReturnTuple<'a> = ();
12599            type ReturnToken<'a> = <Self::ReturnTuple<
12600                'a,
12601            > as alloy_sol_types::SolType>::Token<'a>;
12602            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
12603            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
12604            #[inline]
12605            fn new<'a>(
12606                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12607            ) -> Self {
12608                tuple.into()
12609            }
12610            #[inline]
12611            fn tokenize(&self) -> Self::Token<'_> {
12612                (
12613                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12614                        &self.state,
12615                    ),
12616                )
12617            }
12618            #[inline]
12619            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12620                setFinalizedStateReturn::_tokenize(ret)
12621            }
12622            #[inline]
12623            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12624                <Self::ReturnTuple<
12625                    '_,
12626                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12627                    .map(Into::into)
12628            }
12629            #[inline]
12630            fn abi_decode_returns_validate(
12631                data: &[u8],
12632            ) -> alloy_sol_types::Result<Self::Return> {
12633                <Self::ReturnTuple<
12634                    '_,
12635                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12636                    .map(Into::into)
12637            }
12638        }
12639    };
12640    #[derive(serde::Serialize, serde::Deserialize)]
12641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12642    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
12643```solidity
12644function setHotShotDownSince(uint256 l1Height) external;
12645```*/
12646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12647    #[derive(Clone)]
12648    pub struct setHotShotDownSinceCall {
12649        #[allow(missing_docs)]
12650        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
12651    }
12652    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
12653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12654    #[derive(Clone)]
12655    pub struct setHotShotDownSinceReturn {}
12656    #[allow(
12657        non_camel_case_types,
12658        non_snake_case,
12659        clippy::pub_underscore_fields,
12660        clippy::style
12661    )]
12662    const _: () = {
12663        use alloy::sol_types as alloy_sol_types;
12664        {
12665            #[doc(hidden)]
12666            #[allow(dead_code)]
12667            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12668            #[doc(hidden)]
12669            type UnderlyingRustTuple<'a> = (
12670                alloy::sol_types::private::primitives::aliases::U256,
12671            );
12672            #[cfg(test)]
12673            #[allow(dead_code, unreachable_patterns)]
12674            fn _type_assertion(
12675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12676            ) {
12677                match _t {
12678                    alloy_sol_types::private::AssertTypeEq::<
12679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12680                    >(_) => {}
12681                }
12682            }
12683            #[automatically_derived]
12684            #[doc(hidden)]
12685            impl ::core::convert::From<setHotShotDownSinceCall>
12686            for UnderlyingRustTuple<'_> {
12687                fn from(value: setHotShotDownSinceCall) -> Self {
12688                    (value.l1Height,)
12689                }
12690            }
12691            #[automatically_derived]
12692            #[doc(hidden)]
12693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12694            for setHotShotDownSinceCall {
12695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12696                    Self { l1Height: tuple.0 }
12697                }
12698            }
12699        }
12700        {
12701            #[doc(hidden)]
12702            #[allow(dead_code)]
12703            type UnderlyingSolTuple<'a> = ();
12704            #[doc(hidden)]
12705            type UnderlyingRustTuple<'a> = ();
12706            #[cfg(test)]
12707            #[allow(dead_code, unreachable_patterns)]
12708            fn _type_assertion(
12709                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12710            ) {
12711                match _t {
12712                    alloy_sol_types::private::AssertTypeEq::<
12713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12714                    >(_) => {}
12715                }
12716            }
12717            #[automatically_derived]
12718            #[doc(hidden)]
12719            impl ::core::convert::From<setHotShotDownSinceReturn>
12720            for UnderlyingRustTuple<'_> {
12721                fn from(value: setHotShotDownSinceReturn) -> Self {
12722                    ()
12723                }
12724            }
12725            #[automatically_derived]
12726            #[doc(hidden)]
12727            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12728            for setHotShotDownSinceReturn {
12729                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12730                    Self {}
12731                }
12732            }
12733        }
12734        impl setHotShotDownSinceReturn {
12735            fn _tokenize(
12736                &self,
12737            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12738                ()
12739            }
12740        }
12741        #[automatically_derived]
12742        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
12743            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12744            type Token<'a> = <Self::Parameters<
12745                'a,
12746            > as alloy_sol_types::SolType>::Token<'a>;
12747            type Return = setHotShotDownSinceReturn;
12748            type ReturnTuple<'a> = ();
12749            type ReturnToken<'a> = <Self::ReturnTuple<
12750                'a,
12751            > as alloy_sol_types::SolType>::Token<'a>;
12752            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
12753            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
12754            #[inline]
12755            fn new<'a>(
12756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12757            ) -> Self {
12758                tuple.into()
12759            }
12760            #[inline]
12761            fn tokenize(&self) -> Self::Token<'_> {
12762                (
12763                    <alloy::sol_types::sol_data::Uint<
12764                        256,
12765                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
12766                )
12767            }
12768            #[inline]
12769            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12770                setHotShotDownSinceReturn::_tokenize(ret)
12771            }
12772            #[inline]
12773            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12774                <Self::ReturnTuple<
12775                    '_,
12776                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12777                    .map(Into::into)
12778            }
12779            #[inline]
12780            fn abi_decode_returns_validate(
12781                data: &[u8],
12782            ) -> alloy_sol_types::Result<Self::Return> {
12783                <Self::ReturnTuple<
12784                    '_,
12785                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12786                    .map(Into::into)
12787            }
12788        }
12789    };
12790    #[derive(serde::Serialize, serde::Deserialize)]
12791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12792    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
12793```solidity
12794function setHotShotUp() external;
12795```*/
12796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12797    #[derive(Clone)]
12798    pub struct setHotShotUpCall;
12799    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
12800    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12801    #[derive(Clone)]
12802    pub struct setHotShotUpReturn {}
12803    #[allow(
12804        non_camel_case_types,
12805        non_snake_case,
12806        clippy::pub_underscore_fields,
12807        clippy::style
12808    )]
12809    const _: () = {
12810        use alloy::sol_types as alloy_sol_types;
12811        {
12812            #[doc(hidden)]
12813            #[allow(dead_code)]
12814            type UnderlyingSolTuple<'a> = ();
12815            #[doc(hidden)]
12816            type UnderlyingRustTuple<'a> = ();
12817            #[cfg(test)]
12818            #[allow(dead_code, unreachable_patterns)]
12819            fn _type_assertion(
12820                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12821            ) {
12822                match _t {
12823                    alloy_sol_types::private::AssertTypeEq::<
12824                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12825                    >(_) => {}
12826                }
12827            }
12828            #[automatically_derived]
12829            #[doc(hidden)]
12830            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
12831                fn from(value: setHotShotUpCall) -> Self {
12832                    ()
12833                }
12834            }
12835            #[automatically_derived]
12836            #[doc(hidden)]
12837            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
12838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12839                    Self
12840                }
12841            }
12842        }
12843        {
12844            #[doc(hidden)]
12845            #[allow(dead_code)]
12846            type UnderlyingSolTuple<'a> = ();
12847            #[doc(hidden)]
12848            type UnderlyingRustTuple<'a> = ();
12849            #[cfg(test)]
12850            #[allow(dead_code, unreachable_patterns)]
12851            fn _type_assertion(
12852                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12853            ) {
12854                match _t {
12855                    alloy_sol_types::private::AssertTypeEq::<
12856                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12857                    >(_) => {}
12858                }
12859            }
12860            #[automatically_derived]
12861            #[doc(hidden)]
12862            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
12863                fn from(value: setHotShotUpReturn) -> Self {
12864                    ()
12865                }
12866            }
12867            #[automatically_derived]
12868            #[doc(hidden)]
12869            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
12870                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12871                    Self {}
12872                }
12873            }
12874        }
12875        impl setHotShotUpReturn {
12876            fn _tokenize(
12877                &self,
12878            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12879                ()
12880            }
12881        }
12882        #[automatically_derived]
12883        impl alloy_sol_types::SolCall for setHotShotUpCall {
12884            type Parameters<'a> = ();
12885            type Token<'a> = <Self::Parameters<
12886                'a,
12887            > as alloy_sol_types::SolType>::Token<'a>;
12888            type Return = setHotShotUpReturn;
12889            type ReturnTuple<'a> = ();
12890            type ReturnToken<'a> = <Self::ReturnTuple<
12891                'a,
12892            > as alloy_sol_types::SolType>::Token<'a>;
12893            const SIGNATURE: &'static str = "setHotShotUp()";
12894            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
12895            #[inline]
12896            fn new<'a>(
12897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12898            ) -> Self {
12899                tuple.into()
12900            }
12901            #[inline]
12902            fn tokenize(&self) -> Self::Token<'_> {
12903                ()
12904            }
12905            #[inline]
12906            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12907                setHotShotUpReturn::_tokenize(ret)
12908            }
12909            #[inline]
12910            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12911                <Self::ReturnTuple<
12912                    '_,
12913                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12914                    .map(Into::into)
12915            }
12916            #[inline]
12917            fn abi_decode_returns_validate(
12918                data: &[u8],
12919            ) -> alloy_sol_types::Result<Self::Return> {
12920                <Self::ReturnTuple<
12921                    '_,
12922                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12923                    .map(Into::into)
12924            }
12925        }
12926    };
12927    #[derive(serde::Serialize, serde::Deserialize)]
12928    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12929    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12930```solidity
12931function setPermissionedProver(address prover) external;
12932```*/
12933    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12934    #[derive(Clone)]
12935    pub struct setPermissionedProverCall {
12936        #[allow(missing_docs)]
12937        pub prover: alloy::sol_types::private::Address,
12938    }
12939    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12941    #[derive(Clone)]
12942    pub struct setPermissionedProverReturn {}
12943    #[allow(
12944        non_camel_case_types,
12945        non_snake_case,
12946        clippy::pub_underscore_fields,
12947        clippy::style
12948    )]
12949    const _: () = {
12950        use alloy::sol_types as alloy_sol_types;
12951        {
12952            #[doc(hidden)]
12953            #[allow(dead_code)]
12954            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12955            #[doc(hidden)]
12956            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12957            #[cfg(test)]
12958            #[allow(dead_code, unreachable_patterns)]
12959            fn _type_assertion(
12960                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12961            ) {
12962                match _t {
12963                    alloy_sol_types::private::AssertTypeEq::<
12964                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12965                    >(_) => {}
12966                }
12967            }
12968            #[automatically_derived]
12969            #[doc(hidden)]
12970            impl ::core::convert::From<setPermissionedProverCall>
12971            for UnderlyingRustTuple<'_> {
12972                fn from(value: setPermissionedProverCall) -> Self {
12973                    (value.prover,)
12974                }
12975            }
12976            #[automatically_derived]
12977            #[doc(hidden)]
12978            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12979            for setPermissionedProverCall {
12980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12981                    Self { prover: tuple.0 }
12982                }
12983            }
12984        }
12985        {
12986            #[doc(hidden)]
12987            #[allow(dead_code)]
12988            type UnderlyingSolTuple<'a> = ();
12989            #[doc(hidden)]
12990            type UnderlyingRustTuple<'a> = ();
12991            #[cfg(test)]
12992            #[allow(dead_code, unreachable_patterns)]
12993            fn _type_assertion(
12994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12995            ) {
12996                match _t {
12997                    alloy_sol_types::private::AssertTypeEq::<
12998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12999                    >(_) => {}
13000                }
13001            }
13002            #[automatically_derived]
13003            #[doc(hidden)]
13004            impl ::core::convert::From<setPermissionedProverReturn>
13005            for UnderlyingRustTuple<'_> {
13006                fn from(value: setPermissionedProverReturn) -> Self {
13007                    ()
13008                }
13009            }
13010            #[automatically_derived]
13011            #[doc(hidden)]
13012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13013            for setPermissionedProverReturn {
13014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13015                    Self {}
13016                }
13017            }
13018        }
13019        impl setPermissionedProverReturn {
13020            fn _tokenize(
13021                &self,
13022            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
13023                '_,
13024            > {
13025                ()
13026            }
13027        }
13028        #[automatically_derived]
13029        impl alloy_sol_types::SolCall for setPermissionedProverCall {
13030            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13031            type Token<'a> = <Self::Parameters<
13032                'a,
13033            > as alloy_sol_types::SolType>::Token<'a>;
13034            type Return = setPermissionedProverReturn;
13035            type ReturnTuple<'a> = ();
13036            type ReturnToken<'a> = <Self::ReturnTuple<
13037                'a,
13038            > as alloy_sol_types::SolType>::Token<'a>;
13039            const SIGNATURE: &'static str = "setPermissionedProver(address)";
13040            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
13041            #[inline]
13042            fn new<'a>(
13043                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13044            ) -> Self {
13045                tuple.into()
13046            }
13047            #[inline]
13048            fn tokenize(&self) -> Self::Token<'_> {
13049                (
13050                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13051                        &self.prover,
13052                    ),
13053                )
13054            }
13055            #[inline]
13056            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13057                setPermissionedProverReturn::_tokenize(ret)
13058            }
13059            #[inline]
13060            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13061                <Self::ReturnTuple<
13062                    '_,
13063                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13064                    .map(Into::into)
13065            }
13066            #[inline]
13067            fn abi_decode_returns_validate(
13068                data: &[u8],
13069            ) -> alloy_sol_types::Result<Self::Return> {
13070                <Self::ReturnTuple<
13071                    '_,
13072                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13073                    .map(Into::into)
13074            }
13075        }
13076    };
13077    #[derive(serde::Serialize, serde::Deserialize)]
13078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13079    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
13080```solidity
13081function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
13082```*/
13083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13084    #[derive(Clone)]
13085    pub struct setStateHistoryCall {
13086        #[allow(missing_docs)]
13087        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13088            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13089        >,
13090    }
13091    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13092    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13093    #[derive(Clone)]
13094    pub struct setStateHistoryReturn {}
13095    #[allow(
13096        non_camel_case_types,
13097        non_snake_case,
13098        clippy::pub_underscore_fields,
13099        clippy::style
13100    )]
13101    const _: () = {
13102        use alloy::sol_types as alloy_sol_types;
13103        {
13104            #[doc(hidden)]
13105            #[allow(dead_code)]
13106            type UnderlyingSolTuple<'a> = (
13107                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13108            );
13109            #[doc(hidden)]
13110            type UnderlyingRustTuple<'a> = (
13111                alloy::sol_types::private::Vec<
13112                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13113                >,
13114            );
13115            #[cfg(test)]
13116            #[allow(dead_code, unreachable_patterns)]
13117            fn _type_assertion(
13118                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13119            ) {
13120                match _t {
13121                    alloy_sol_types::private::AssertTypeEq::<
13122                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13123                    >(_) => {}
13124                }
13125            }
13126            #[automatically_derived]
13127            #[doc(hidden)]
13128            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
13129                fn from(value: setStateHistoryCall) -> Self {
13130                    (value._stateHistoryCommitments,)
13131                }
13132            }
13133            #[automatically_derived]
13134            #[doc(hidden)]
13135            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
13136                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13137                    Self {
13138                        _stateHistoryCommitments: tuple.0,
13139                    }
13140                }
13141            }
13142        }
13143        {
13144            #[doc(hidden)]
13145            #[allow(dead_code)]
13146            type UnderlyingSolTuple<'a> = ();
13147            #[doc(hidden)]
13148            type UnderlyingRustTuple<'a> = ();
13149            #[cfg(test)]
13150            #[allow(dead_code, unreachable_patterns)]
13151            fn _type_assertion(
13152                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13153            ) {
13154                match _t {
13155                    alloy_sol_types::private::AssertTypeEq::<
13156                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13157                    >(_) => {}
13158                }
13159            }
13160            #[automatically_derived]
13161            #[doc(hidden)]
13162            impl ::core::convert::From<setStateHistoryReturn>
13163            for UnderlyingRustTuple<'_> {
13164                fn from(value: setStateHistoryReturn) -> Self {
13165                    ()
13166                }
13167            }
13168            #[automatically_derived]
13169            #[doc(hidden)]
13170            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13171            for setStateHistoryReturn {
13172                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13173                    Self {}
13174                }
13175            }
13176        }
13177        impl setStateHistoryReturn {
13178            fn _tokenize(
13179                &self,
13180            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13181                ()
13182            }
13183        }
13184        #[automatically_derived]
13185        impl alloy_sol_types::SolCall for setStateHistoryCall {
13186            type Parameters<'a> = (
13187                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13188            );
13189            type Token<'a> = <Self::Parameters<
13190                'a,
13191            > as alloy_sol_types::SolType>::Token<'a>;
13192            type Return = setStateHistoryReturn;
13193            type ReturnTuple<'a> = ();
13194            type ReturnToken<'a> = <Self::ReturnTuple<
13195                'a,
13196            > as alloy_sol_types::SolType>::Token<'a>;
13197            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
13198            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
13199            #[inline]
13200            fn new<'a>(
13201                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13202            ) -> Self {
13203                tuple.into()
13204            }
13205            #[inline]
13206            fn tokenize(&self) -> Self::Token<'_> {
13207                (
13208                    <alloy::sol_types::sol_data::Array<
13209                        LightClient::StateHistoryCommitment,
13210                    > as alloy_sol_types::SolType>::tokenize(
13211                        &self._stateHistoryCommitments,
13212                    ),
13213                )
13214            }
13215            #[inline]
13216            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13217                setStateHistoryReturn::_tokenize(ret)
13218            }
13219            #[inline]
13220            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13221                <Self::ReturnTuple<
13222                    '_,
13223                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13224                    .map(Into::into)
13225            }
13226            #[inline]
13227            fn abi_decode_returns_validate(
13228                data: &[u8],
13229            ) -> alloy_sol_types::Result<Self::Return> {
13230                <Self::ReturnTuple<
13231                    '_,
13232                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13233                    .map(Into::into)
13234            }
13235        }
13236    };
13237    #[derive(serde::Serialize, serde::Deserialize)]
13238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13239    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
13240```solidity
13241function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
13242```*/
13243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13244    #[derive(Clone)]
13245    pub struct setStateHistoryRetentionPeriodCall {
13246        #[allow(missing_docs)]
13247        pub historySeconds: u32,
13248    }
13249    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
13250    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13251    #[derive(Clone)]
13252    pub struct setStateHistoryRetentionPeriodReturn {}
13253    #[allow(
13254        non_camel_case_types,
13255        non_snake_case,
13256        clippy::pub_underscore_fields,
13257        clippy::style
13258    )]
13259    const _: () = {
13260        use alloy::sol_types as alloy_sol_types;
13261        {
13262            #[doc(hidden)]
13263            #[allow(dead_code)]
13264            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13265            #[doc(hidden)]
13266            type UnderlyingRustTuple<'a> = (u32,);
13267            #[cfg(test)]
13268            #[allow(dead_code, unreachable_patterns)]
13269            fn _type_assertion(
13270                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13271            ) {
13272                match _t {
13273                    alloy_sol_types::private::AssertTypeEq::<
13274                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13275                    >(_) => {}
13276                }
13277            }
13278            #[automatically_derived]
13279            #[doc(hidden)]
13280            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
13281            for UnderlyingRustTuple<'_> {
13282                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
13283                    (value.historySeconds,)
13284                }
13285            }
13286            #[automatically_derived]
13287            #[doc(hidden)]
13288            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13289            for setStateHistoryRetentionPeriodCall {
13290                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13291                    Self { historySeconds: tuple.0 }
13292                }
13293            }
13294        }
13295        {
13296            #[doc(hidden)]
13297            #[allow(dead_code)]
13298            type UnderlyingSolTuple<'a> = ();
13299            #[doc(hidden)]
13300            type UnderlyingRustTuple<'a> = ();
13301            #[cfg(test)]
13302            #[allow(dead_code, unreachable_patterns)]
13303            fn _type_assertion(
13304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13305            ) {
13306                match _t {
13307                    alloy_sol_types::private::AssertTypeEq::<
13308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13309                    >(_) => {}
13310                }
13311            }
13312            #[automatically_derived]
13313            #[doc(hidden)]
13314            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
13315            for UnderlyingRustTuple<'_> {
13316                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
13317                    ()
13318                }
13319            }
13320            #[automatically_derived]
13321            #[doc(hidden)]
13322            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13323            for setStateHistoryRetentionPeriodReturn {
13324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13325                    Self {}
13326                }
13327            }
13328        }
13329        impl setStateHistoryRetentionPeriodReturn {
13330            fn _tokenize(
13331                &self,
13332            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13333                '_,
13334            > {
13335                ()
13336            }
13337        }
13338        #[automatically_derived]
13339        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
13340            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13341            type Token<'a> = <Self::Parameters<
13342                'a,
13343            > as alloy_sol_types::SolType>::Token<'a>;
13344            type Return = setStateHistoryRetentionPeriodReturn;
13345            type ReturnTuple<'a> = ();
13346            type ReturnToken<'a> = <Self::ReturnTuple<
13347                'a,
13348            > as alloy_sol_types::SolType>::Token<'a>;
13349            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
13350            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
13351            #[inline]
13352            fn new<'a>(
13353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13354            ) -> Self {
13355                tuple.into()
13356            }
13357            #[inline]
13358            fn tokenize(&self) -> Self::Token<'_> {
13359                (
13360                    <alloy::sol_types::sol_data::Uint<
13361                        32,
13362                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13363                )
13364            }
13365            #[inline]
13366            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13367                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
13368            }
13369            #[inline]
13370            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13371                <Self::ReturnTuple<
13372                    '_,
13373                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13374                    .map(Into::into)
13375            }
13376            #[inline]
13377            fn abi_decode_returns_validate(
13378                data: &[u8],
13379            ) -> alloy_sol_types::Result<Self::Return> {
13380                <Self::ReturnTuple<
13381                    '_,
13382                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13383                    .map(Into::into)
13384            }
13385        }
13386    };
13387    #[derive(serde::Serialize, serde::Deserialize)]
13388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13389    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
13390```solidity
13391function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
13392```*/
13393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13394    #[derive(Clone)]
13395    pub struct setVotingStakeTableStateCall {
13396        #[allow(missing_docs)]
13397        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13398    }
13399    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
13400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13401    #[derive(Clone)]
13402    pub struct setVotingStakeTableStateReturn {}
13403    #[allow(
13404        non_camel_case_types,
13405        non_snake_case,
13406        clippy::pub_underscore_fields,
13407        clippy::style
13408    )]
13409    const _: () = {
13410        use alloy::sol_types as alloy_sol_types;
13411        {
13412            #[doc(hidden)]
13413            #[allow(dead_code)]
13414            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
13415            #[doc(hidden)]
13416            type UnderlyingRustTuple<'a> = (
13417                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13418            );
13419            #[cfg(test)]
13420            #[allow(dead_code, unreachable_patterns)]
13421            fn _type_assertion(
13422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13423            ) {
13424                match _t {
13425                    alloy_sol_types::private::AssertTypeEq::<
13426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13427                    >(_) => {}
13428                }
13429            }
13430            #[automatically_derived]
13431            #[doc(hidden)]
13432            impl ::core::convert::From<setVotingStakeTableStateCall>
13433            for UnderlyingRustTuple<'_> {
13434                fn from(value: setVotingStakeTableStateCall) -> Self {
13435                    (value.stake,)
13436                }
13437            }
13438            #[automatically_derived]
13439            #[doc(hidden)]
13440            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13441            for setVotingStakeTableStateCall {
13442                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13443                    Self { stake: tuple.0 }
13444                }
13445            }
13446        }
13447        {
13448            #[doc(hidden)]
13449            #[allow(dead_code)]
13450            type UnderlyingSolTuple<'a> = ();
13451            #[doc(hidden)]
13452            type UnderlyingRustTuple<'a> = ();
13453            #[cfg(test)]
13454            #[allow(dead_code, unreachable_patterns)]
13455            fn _type_assertion(
13456                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13457            ) {
13458                match _t {
13459                    alloy_sol_types::private::AssertTypeEq::<
13460                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13461                    >(_) => {}
13462                }
13463            }
13464            #[automatically_derived]
13465            #[doc(hidden)]
13466            impl ::core::convert::From<setVotingStakeTableStateReturn>
13467            for UnderlyingRustTuple<'_> {
13468                fn from(value: setVotingStakeTableStateReturn) -> Self {
13469                    ()
13470                }
13471            }
13472            #[automatically_derived]
13473            #[doc(hidden)]
13474            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13475            for setVotingStakeTableStateReturn {
13476                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13477                    Self {}
13478                }
13479            }
13480        }
13481        impl setVotingStakeTableStateReturn {
13482            fn _tokenize(
13483                &self,
13484            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13485                '_,
13486            > {
13487                ()
13488            }
13489        }
13490        #[automatically_derived]
13491        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
13492            type Parameters<'a> = (LightClient::StakeTableState,);
13493            type Token<'a> = <Self::Parameters<
13494                'a,
13495            > as alloy_sol_types::SolType>::Token<'a>;
13496            type Return = setVotingStakeTableStateReturn;
13497            type ReturnTuple<'a> = ();
13498            type ReturnToken<'a> = <Self::ReturnTuple<
13499                'a,
13500            > as alloy_sol_types::SolType>::Token<'a>;
13501            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
13502            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
13503            #[inline]
13504            fn new<'a>(
13505                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13506            ) -> Self {
13507                tuple.into()
13508            }
13509            #[inline]
13510            fn tokenize(&self) -> Self::Token<'_> {
13511                (
13512                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
13513                        &self.stake,
13514                    ),
13515                )
13516            }
13517            #[inline]
13518            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13519                setVotingStakeTableStateReturn::_tokenize(ret)
13520            }
13521            #[inline]
13522            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13523                <Self::ReturnTuple<
13524                    '_,
13525                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13526                    .map(Into::into)
13527            }
13528            #[inline]
13529            fn abi_decode_returns_validate(
13530                data: &[u8],
13531            ) -> alloy_sol_types::Result<Self::Return> {
13532                <Self::ReturnTuple<
13533                    '_,
13534                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13535                    .map(Into::into)
13536            }
13537        }
13538    };
13539    #[derive(serde::Serialize, serde::Deserialize)]
13540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13541    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13542```solidity
13543function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13544```*/
13545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13546    #[derive(Clone)]
13547    pub struct setstateHistoryRetentionPeriodCall {
13548        #[allow(missing_docs)]
13549        pub historySeconds: u32,
13550    }
13551    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
13552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13553    #[derive(Clone)]
13554    pub struct setstateHistoryRetentionPeriodReturn {}
13555    #[allow(
13556        non_camel_case_types,
13557        non_snake_case,
13558        clippy::pub_underscore_fields,
13559        clippy::style
13560    )]
13561    const _: () = {
13562        use alloy::sol_types as alloy_sol_types;
13563        {
13564            #[doc(hidden)]
13565            #[allow(dead_code)]
13566            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13567            #[doc(hidden)]
13568            type UnderlyingRustTuple<'a> = (u32,);
13569            #[cfg(test)]
13570            #[allow(dead_code, unreachable_patterns)]
13571            fn _type_assertion(
13572                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13573            ) {
13574                match _t {
13575                    alloy_sol_types::private::AssertTypeEq::<
13576                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13577                    >(_) => {}
13578                }
13579            }
13580            #[automatically_derived]
13581            #[doc(hidden)]
13582            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
13583            for UnderlyingRustTuple<'_> {
13584                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
13585                    (value.historySeconds,)
13586                }
13587            }
13588            #[automatically_derived]
13589            #[doc(hidden)]
13590            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13591            for setstateHistoryRetentionPeriodCall {
13592                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13593                    Self { historySeconds: tuple.0 }
13594                }
13595            }
13596        }
13597        {
13598            #[doc(hidden)]
13599            #[allow(dead_code)]
13600            type UnderlyingSolTuple<'a> = ();
13601            #[doc(hidden)]
13602            type UnderlyingRustTuple<'a> = ();
13603            #[cfg(test)]
13604            #[allow(dead_code, unreachable_patterns)]
13605            fn _type_assertion(
13606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13607            ) {
13608                match _t {
13609                    alloy_sol_types::private::AssertTypeEq::<
13610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13611                    >(_) => {}
13612                }
13613            }
13614            #[automatically_derived]
13615            #[doc(hidden)]
13616            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
13617            for UnderlyingRustTuple<'_> {
13618                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
13619                    ()
13620                }
13621            }
13622            #[automatically_derived]
13623            #[doc(hidden)]
13624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13625            for setstateHistoryRetentionPeriodReturn {
13626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13627                    Self {}
13628                }
13629            }
13630        }
13631        impl setstateHistoryRetentionPeriodReturn {
13632            fn _tokenize(
13633                &self,
13634            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13635                '_,
13636            > {
13637                ()
13638            }
13639        }
13640        #[automatically_derived]
13641        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
13642            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13643            type Token<'a> = <Self::Parameters<
13644                'a,
13645            > as alloy_sol_types::SolType>::Token<'a>;
13646            type Return = setstateHistoryRetentionPeriodReturn;
13647            type ReturnTuple<'a> = ();
13648            type ReturnToken<'a> = <Self::ReturnTuple<
13649                'a,
13650            > as alloy_sol_types::SolType>::Token<'a>;
13651            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13652            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13653            #[inline]
13654            fn new<'a>(
13655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13656            ) -> Self {
13657                tuple.into()
13658            }
13659            #[inline]
13660            fn tokenize(&self) -> Self::Token<'_> {
13661                (
13662                    <alloy::sol_types::sol_data::Uint<
13663                        32,
13664                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13665                )
13666            }
13667            #[inline]
13668            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13669                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
13670            }
13671            #[inline]
13672            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13673                <Self::ReturnTuple<
13674                    '_,
13675                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13676                    .map(Into::into)
13677            }
13678            #[inline]
13679            fn abi_decode_returns_validate(
13680                data: &[u8],
13681            ) -> alloy_sol_types::Result<Self::Return> {
13682                <Self::ReturnTuple<
13683                    '_,
13684                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13685                    .map(Into::into)
13686            }
13687        }
13688    };
13689    #[derive(serde::Serialize, serde::Deserialize)]
13690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13691    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13692```solidity
13693function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13694```*/
13695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13696    #[derive(Clone)]
13697    pub struct stateHistoryCommitmentsCall(
13698        pub alloy::sol_types::private::primitives::aliases::U256,
13699    );
13700    #[derive(serde::Serialize, serde::Deserialize)]
13701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13702    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13704    #[derive(Clone)]
13705    pub struct stateHistoryCommitmentsReturn {
13706        #[allow(missing_docs)]
13707        pub l1BlockHeight: u64,
13708        #[allow(missing_docs)]
13709        pub l1BlockTimestamp: u64,
13710        #[allow(missing_docs)]
13711        pub hotShotBlockHeight: u64,
13712        #[allow(missing_docs)]
13713        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13714    }
13715    #[allow(
13716        non_camel_case_types,
13717        non_snake_case,
13718        clippy::pub_underscore_fields,
13719        clippy::style
13720    )]
13721    const _: () = {
13722        use alloy::sol_types as alloy_sol_types;
13723        {
13724            #[doc(hidden)]
13725            #[allow(dead_code)]
13726            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13727            #[doc(hidden)]
13728            type UnderlyingRustTuple<'a> = (
13729                alloy::sol_types::private::primitives::aliases::U256,
13730            );
13731            #[cfg(test)]
13732            #[allow(dead_code, unreachable_patterns)]
13733            fn _type_assertion(
13734                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13735            ) {
13736                match _t {
13737                    alloy_sol_types::private::AssertTypeEq::<
13738                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13739                    >(_) => {}
13740                }
13741            }
13742            #[automatically_derived]
13743            #[doc(hidden)]
13744            impl ::core::convert::From<stateHistoryCommitmentsCall>
13745            for UnderlyingRustTuple<'_> {
13746                fn from(value: stateHistoryCommitmentsCall) -> Self {
13747                    (value.0,)
13748                }
13749            }
13750            #[automatically_derived]
13751            #[doc(hidden)]
13752            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13753            for stateHistoryCommitmentsCall {
13754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13755                    Self(tuple.0)
13756                }
13757            }
13758        }
13759        {
13760            #[doc(hidden)]
13761            #[allow(dead_code)]
13762            type UnderlyingSolTuple<'a> = (
13763                alloy::sol_types::sol_data::Uint<64>,
13764                alloy::sol_types::sol_data::Uint<64>,
13765                alloy::sol_types::sol_data::Uint<64>,
13766                BN254::ScalarField,
13767            );
13768            #[doc(hidden)]
13769            type UnderlyingRustTuple<'a> = (
13770                u64,
13771                u64,
13772                u64,
13773                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13774            );
13775            #[cfg(test)]
13776            #[allow(dead_code, unreachable_patterns)]
13777            fn _type_assertion(
13778                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13779            ) {
13780                match _t {
13781                    alloy_sol_types::private::AssertTypeEq::<
13782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13783                    >(_) => {}
13784                }
13785            }
13786            #[automatically_derived]
13787            #[doc(hidden)]
13788            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13789            for UnderlyingRustTuple<'_> {
13790                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13791                    (
13792                        value.l1BlockHeight,
13793                        value.l1BlockTimestamp,
13794                        value.hotShotBlockHeight,
13795                        value.hotShotBlockCommRoot,
13796                    )
13797                }
13798            }
13799            #[automatically_derived]
13800            #[doc(hidden)]
13801            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13802            for stateHistoryCommitmentsReturn {
13803                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13804                    Self {
13805                        l1BlockHeight: tuple.0,
13806                        l1BlockTimestamp: tuple.1,
13807                        hotShotBlockHeight: tuple.2,
13808                        hotShotBlockCommRoot: tuple.3,
13809                    }
13810                }
13811            }
13812        }
13813        impl stateHistoryCommitmentsReturn {
13814            fn _tokenize(
13815                &self,
13816            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13817                '_,
13818            > {
13819                (
13820                    <alloy::sol_types::sol_data::Uint<
13821                        64,
13822                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13823                    <alloy::sol_types::sol_data::Uint<
13824                        64,
13825                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13826                    <alloy::sol_types::sol_data::Uint<
13827                        64,
13828                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13829                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13830                        &self.hotShotBlockCommRoot,
13831                    ),
13832                )
13833            }
13834        }
13835        #[automatically_derived]
13836        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13837            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13838            type Token<'a> = <Self::Parameters<
13839                'a,
13840            > as alloy_sol_types::SolType>::Token<'a>;
13841            type Return = stateHistoryCommitmentsReturn;
13842            type ReturnTuple<'a> = (
13843                alloy::sol_types::sol_data::Uint<64>,
13844                alloy::sol_types::sol_data::Uint<64>,
13845                alloy::sol_types::sol_data::Uint<64>,
13846                BN254::ScalarField,
13847            );
13848            type ReturnToken<'a> = <Self::ReturnTuple<
13849                'a,
13850            > as alloy_sol_types::SolType>::Token<'a>;
13851            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13852            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13853            #[inline]
13854            fn new<'a>(
13855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13856            ) -> Self {
13857                tuple.into()
13858            }
13859            #[inline]
13860            fn tokenize(&self) -> Self::Token<'_> {
13861                (
13862                    <alloy::sol_types::sol_data::Uint<
13863                        256,
13864                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13865                )
13866            }
13867            #[inline]
13868            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13869                stateHistoryCommitmentsReturn::_tokenize(ret)
13870            }
13871            #[inline]
13872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13873                <Self::ReturnTuple<
13874                    '_,
13875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13876                    .map(Into::into)
13877            }
13878            #[inline]
13879            fn abi_decode_returns_validate(
13880                data: &[u8],
13881            ) -> alloy_sol_types::Result<Self::Return> {
13882                <Self::ReturnTuple<
13883                    '_,
13884                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13885                    .map(Into::into)
13886            }
13887        }
13888    };
13889    #[derive(serde::Serialize, serde::Deserialize)]
13890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13891    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13892```solidity
13893function stateHistoryFirstIndex() external view returns (uint64);
13894```*/
13895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13896    #[derive(Clone)]
13897    pub struct stateHistoryFirstIndexCall;
13898    #[derive(serde::Serialize, serde::Deserialize)]
13899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13900    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13902    #[derive(Clone)]
13903    pub struct stateHistoryFirstIndexReturn {
13904        #[allow(missing_docs)]
13905        pub _0: u64,
13906    }
13907    #[allow(
13908        non_camel_case_types,
13909        non_snake_case,
13910        clippy::pub_underscore_fields,
13911        clippy::style
13912    )]
13913    const _: () = {
13914        use alloy::sol_types as alloy_sol_types;
13915        {
13916            #[doc(hidden)]
13917            #[allow(dead_code)]
13918            type UnderlyingSolTuple<'a> = ();
13919            #[doc(hidden)]
13920            type UnderlyingRustTuple<'a> = ();
13921            #[cfg(test)]
13922            #[allow(dead_code, unreachable_patterns)]
13923            fn _type_assertion(
13924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13925            ) {
13926                match _t {
13927                    alloy_sol_types::private::AssertTypeEq::<
13928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13929                    >(_) => {}
13930                }
13931            }
13932            #[automatically_derived]
13933            #[doc(hidden)]
13934            impl ::core::convert::From<stateHistoryFirstIndexCall>
13935            for UnderlyingRustTuple<'_> {
13936                fn from(value: stateHistoryFirstIndexCall) -> Self {
13937                    ()
13938                }
13939            }
13940            #[automatically_derived]
13941            #[doc(hidden)]
13942            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13943            for stateHistoryFirstIndexCall {
13944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13945                    Self
13946                }
13947            }
13948        }
13949        {
13950            #[doc(hidden)]
13951            #[allow(dead_code)]
13952            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13953            #[doc(hidden)]
13954            type UnderlyingRustTuple<'a> = (u64,);
13955            #[cfg(test)]
13956            #[allow(dead_code, unreachable_patterns)]
13957            fn _type_assertion(
13958                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13959            ) {
13960                match _t {
13961                    alloy_sol_types::private::AssertTypeEq::<
13962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13963                    >(_) => {}
13964                }
13965            }
13966            #[automatically_derived]
13967            #[doc(hidden)]
13968            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13969            for UnderlyingRustTuple<'_> {
13970                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13971                    (value._0,)
13972                }
13973            }
13974            #[automatically_derived]
13975            #[doc(hidden)]
13976            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13977            for stateHistoryFirstIndexReturn {
13978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13979                    Self { _0: tuple.0 }
13980                }
13981            }
13982        }
13983        #[automatically_derived]
13984        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13985            type Parameters<'a> = ();
13986            type Token<'a> = <Self::Parameters<
13987                'a,
13988            > as alloy_sol_types::SolType>::Token<'a>;
13989            type Return = u64;
13990            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13991            type ReturnToken<'a> = <Self::ReturnTuple<
13992                'a,
13993            > as alloy_sol_types::SolType>::Token<'a>;
13994            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13995            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13996            #[inline]
13997            fn new<'a>(
13998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13999            ) -> Self {
14000                tuple.into()
14001            }
14002            #[inline]
14003            fn tokenize(&self) -> Self::Token<'_> {
14004                ()
14005            }
14006            #[inline]
14007            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14008                (
14009                    <alloy::sol_types::sol_data::Uint<
14010                        64,
14011                    > as alloy_sol_types::SolType>::tokenize(ret),
14012                )
14013            }
14014            #[inline]
14015            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14016                <Self::ReturnTuple<
14017                    '_,
14018                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14019                    .map(|r| {
14020                        let r: stateHistoryFirstIndexReturn = r.into();
14021                        r._0
14022                    })
14023            }
14024            #[inline]
14025            fn abi_decode_returns_validate(
14026                data: &[u8],
14027            ) -> alloy_sol_types::Result<Self::Return> {
14028                <Self::ReturnTuple<
14029                    '_,
14030                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14031                    .map(|r| {
14032                        let r: stateHistoryFirstIndexReturn = r.into();
14033                        r._0
14034                    })
14035            }
14036        }
14037    };
14038    #[derive(serde::Serialize, serde::Deserialize)]
14039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14040    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
14041```solidity
14042function stateHistoryRetentionPeriod() external view returns (uint32);
14043```*/
14044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14045    #[derive(Clone)]
14046    pub struct stateHistoryRetentionPeriodCall;
14047    #[derive(serde::Serialize, serde::Deserialize)]
14048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14049    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
14050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14051    #[derive(Clone)]
14052    pub struct stateHistoryRetentionPeriodReturn {
14053        #[allow(missing_docs)]
14054        pub _0: u32,
14055    }
14056    #[allow(
14057        non_camel_case_types,
14058        non_snake_case,
14059        clippy::pub_underscore_fields,
14060        clippy::style
14061    )]
14062    const _: () = {
14063        use alloy::sol_types as alloy_sol_types;
14064        {
14065            #[doc(hidden)]
14066            #[allow(dead_code)]
14067            type UnderlyingSolTuple<'a> = ();
14068            #[doc(hidden)]
14069            type UnderlyingRustTuple<'a> = ();
14070            #[cfg(test)]
14071            #[allow(dead_code, unreachable_patterns)]
14072            fn _type_assertion(
14073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14074            ) {
14075                match _t {
14076                    alloy_sol_types::private::AssertTypeEq::<
14077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14078                    >(_) => {}
14079                }
14080            }
14081            #[automatically_derived]
14082            #[doc(hidden)]
14083            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
14084            for UnderlyingRustTuple<'_> {
14085                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
14086                    ()
14087                }
14088            }
14089            #[automatically_derived]
14090            #[doc(hidden)]
14091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14092            for stateHistoryRetentionPeriodCall {
14093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14094                    Self
14095                }
14096            }
14097        }
14098        {
14099            #[doc(hidden)]
14100            #[allow(dead_code)]
14101            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14102            #[doc(hidden)]
14103            type UnderlyingRustTuple<'a> = (u32,);
14104            #[cfg(test)]
14105            #[allow(dead_code, unreachable_patterns)]
14106            fn _type_assertion(
14107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14108            ) {
14109                match _t {
14110                    alloy_sol_types::private::AssertTypeEq::<
14111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14112                    >(_) => {}
14113                }
14114            }
14115            #[automatically_derived]
14116            #[doc(hidden)]
14117            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
14118            for UnderlyingRustTuple<'_> {
14119                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
14120                    (value._0,)
14121                }
14122            }
14123            #[automatically_derived]
14124            #[doc(hidden)]
14125            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14126            for stateHistoryRetentionPeriodReturn {
14127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14128                    Self { _0: tuple.0 }
14129                }
14130            }
14131        }
14132        #[automatically_derived]
14133        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
14134            type Parameters<'a> = ();
14135            type Token<'a> = <Self::Parameters<
14136                'a,
14137            > as alloy_sol_types::SolType>::Token<'a>;
14138            type Return = u32;
14139            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14140            type ReturnToken<'a> = <Self::ReturnTuple<
14141                'a,
14142            > as alloy_sol_types::SolType>::Token<'a>;
14143            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
14144            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
14145            #[inline]
14146            fn new<'a>(
14147                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14148            ) -> Self {
14149                tuple.into()
14150            }
14151            #[inline]
14152            fn tokenize(&self) -> Self::Token<'_> {
14153                ()
14154            }
14155            #[inline]
14156            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14157                (
14158                    <alloy::sol_types::sol_data::Uint<
14159                        32,
14160                    > as alloy_sol_types::SolType>::tokenize(ret),
14161                )
14162            }
14163            #[inline]
14164            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14165                <Self::ReturnTuple<
14166                    '_,
14167                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14168                    .map(|r| {
14169                        let r: stateHistoryRetentionPeriodReturn = r.into();
14170                        r._0
14171                    })
14172            }
14173            #[inline]
14174            fn abi_decode_returns_validate(
14175                data: &[u8],
14176            ) -> alloy_sol_types::Result<Self::Return> {
14177                <Self::ReturnTuple<
14178                    '_,
14179                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14180                    .map(|r| {
14181                        let r: stateHistoryRetentionPeriodReturn = r.into();
14182                        r._0
14183                    })
14184            }
14185        }
14186    };
14187    #[derive(serde::Serialize, serde::Deserialize)]
14188    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14189    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14190```solidity
14191function transferOwnership(address newOwner) external;
14192```*/
14193    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14194    #[derive(Clone)]
14195    pub struct transferOwnershipCall {
14196        #[allow(missing_docs)]
14197        pub newOwner: alloy::sol_types::private::Address,
14198    }
14199    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14201    #[derive(Clone)]
14202    pub struct transferOwnershipReturn {}
14203    #[allow(
14204        non_camel_case_types,
14205        non_snake_case,
14206        clippy::pub_underscore_fields,
14207        clippy::style
14208    )]
14209    const _: () = {
14210        use alloy::sol_types as alloy_sol_types;
14211        {
14212            #[doc(hidden)]
14213            #[allow(dead_code)]
14214            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14215            #[doc(hidden)]
14216            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14217            #[cfg(test)]
14218            #[allow(dead_code, unreachable_patterns)]
14219            fn _type_assertion(
14220                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14221            ) {
14222                match _t {
14223                    alloy_sol_types::private::AssertTypeEq::<
14224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14225                    >(_) => {}
14226                }
14227            }
14228            #[automatically_derived]
14229            #[doc(hidden)]
14230            impl ::core::convert::From<transferOwnershipCall>
14231            for UnderlyingRustTuple<'_> {
14232                fn from(value: transferOwnershipCall) -> Self {
14233                    (value.newOwner,)
14234                }
14235            }
14236            #[automatically_derived]
14237            #[doc(hidden)]
14238            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14239            for transferOwnershipCall {
14240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14241                    Self { newOwner: tuple.0 }
14242                }
14243            }
14244        }
14245        {
14246            #[doc(hidden)]
14247            #[allow(dead_code)]
14248            type UnderlyingSolTuple<'a> = ();
14249            #[doc(hidden)]
14250            type UnderlyingRustTuple<'a> = ();
14251            #[cfg(test)]
14252            #[allow(dead_code, unreachable_patterns)]
14253            fn _type_assertion(
14254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14255            ) {
14256                match _t {
14257                    alloy_sol_types::private::AssertTypeEq::<
14258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14259                    >(_) => {}
14260                }
14261            }
14262            #[automatically_derived]
14263            #[doc(hidden)]
14264            impl ::core::convert::From<transferOwnershipReturn>
14265            for UnderlyingRustTuple<'_> {
14266                fn from(value: transferOwnershipReturn) -> Self {
14267                    ()
14268                }
14269            }
14270            #[automatically_derived]
14271            #[doc(hidden)]
14272            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14273            for transferOwnershipReturn {
14274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14275                    Self {}
14276                }
14277            }
14278        }
14279        impl transferOwnershipReturn {
14280            fn _tokenize(
14281                &self,
14282            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14283                ()
14284            }
14285        }
14286        #[automatically_derived]
14287        impl alloy_sol_types::SolCall for transferOwnershipCall {
14288            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14289            type Token<'a> = <Self::Parameters<
14290                'a,
14291            > as alloy_sol_types::SolType>::Token<'a>;
14292            type Return = transferOwnershipReturn;
14293            type ReturnTuple<'a> = ();
14294            type ReturnToken<'a> = <Self::ReturnTuple<
14295                'a,
14296            > as alloy_sol_types::SolType>::Token<'a>;
14297            const SIGNATURE: &'static str = "transferOwnership(address)";
14298            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14299            #[inline]
14300            fn new<'a>(
14301                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14302            ) -> Self {
14303                tuple.into()
14304            }
14305            #[inline]
14306            fn tokenize(&self) -> Self::Token<'_> {
14307                (
14308                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14309                        &self.newOwner,
14310                    ),
14311                )
14312            }
14313            #[inline]
14314            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14315                transferOwnershipReturn::_tokenize(ret)
14316            }
14317            #[inline]
14318            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14319                <Self::ReturnTuple<
14320                    '_,
14321                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14322                    .map(Into::into)
14323            }
14324            #[inline]
14325            fn abi_decode_returns_validate(
14326                data: &[u8],
14327            ) -> alloy_sol_types::Result<Self::Return> {
14328                <Self::ReturnTuple<
14329                    '_,
14330                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14331                    .map(Into::into)
14332            }
14333        }
14334    };
14335    #[derive(serde::Serialize, serde::Deserialize)]
14336    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14337    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
14338```solidity
14339function updateEpochStartBlock(uint64 newEpochStartBlock) external;
14340```*/
14341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14342    #[derive(Clone)]
14343    pub struct updateEpochStartBlockCall {
14344        #[allow(missing_docs)]
14345        pub newEpochStartBlock: u64,
14346    }
14347    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
14348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14349    #[derive(Clone)]
14350    pub struct updateEpochStartBlockReturn {}
14351    #[allow(
14352        non_camel_case_types,
14353        non_snake_case,
14354        clippy::pub_underscore_fields,
14355        clippy::style
14356    )]
14357    const _: () = {
14358        use alloy::sol_types as alloy_sol_types;
14359        {
14360            #[doc(hidden)]
14361            #[allow(dead_code)]
14362            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14363            #[doc(hidden)]
14364            type UnderlyingRustTuple<'a> = (u64,);
14365            #[cfg(test)]
14366            #[allow(dead_code, unreachable_patterns)]
14367            fn _type_assertion(
14368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14369            ) {
14370                match _t {
14371                    alloy_sol_types::private::AssertTypeEq::<
14372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14373                    >(_) => {}
14374                }
14375            }
14376            #[automatically_derived]
14377            #[doc(hidden)]
14378            impl ::core::convert::From<updateEpochStartBlockCall>
14379            for UnderlyingRustTuple<'_> {
14380                fn from(value: updateEpochStartBlockCall) -> Self {
14381                    (value.newEpochStartBlock,)
14382                }
14383            }
14384            #[automatically_derived]
14385            #[doc(hidden)]
14386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14387            for updateEpochStartBlockCall {
14388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14389                    Self {
14390                        newEpochStartBlock: tuple.0,
14391                    }
14392                }
14393            }
14394        }
14395        {
14396            #[doc(hidden)]
14397            #[allow(dead_code)]
14398            type UnderlyingSolTuple<'a> = ();
14399            #[doc(hidden)]
14400            type UnderlyingRustTuple<'a> = ();
14401            #[cfg(test)]
14402            #[allow(dead_code, unreachable_patterns)]
14403            fn _type_assertion(
14404                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14405            ) {
14406                match _t {
14407                    alloy_sol_types::private::AssertTypeEq::<
14408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14409                    >(_) => {}
14410                }
14411            }
14412            #[automatically_derived]
14413            #[doc(hidden)]
14414            impl ::core::convert::From<updateEpochStartBlockReturn>
14415            for UnderlyingRustTuple<'_> {
14416                fn from(value: updateEpochStartBlockReturn) -> Self {
14417                    ()
14418                }
14419            }
14420            #[automatically_derived]
14421            #[doc(hidden)]
14422            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14423            for updateEpochStartBlockReturn {
14424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14425                    Self {}
14426                }
14427            }
14428        }
14429        impl updateEpochStartBlockReturn {
14430            fn _tokenize(
14431                &self,
14432            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
14433                '_,
14434            > {
14435                ()
14436            }
14437        }
14438        #[automatically_derived]
14439        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
14440            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14441            type Token<'a> = <Self::Parameters<
14442                'a,
14443            > as alloy_sol_types::SolType>::Token<'a>;
14444            type Return = updateEpochStartBlockReturn;
14445            type ReturnTuple<'a> = ();
14446            type ReturnToken<'a> = <Self::ReturnTuple<
14447                'a,
14448            > as alloy_sol_types::SolType>::Token<'a>;
14449            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
14450            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
14451            #[inline]
14452            fn new<'a>(
14453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14454            ) -> Self {
14455                tuple.into()
14456            }
14457            #[inline]
14458            fn tokenize(&self) -> Self::Token<'_> {
14459                (
14460                    <alloy::sol_types::sol_data::Uint<
14461                        64,
14462                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
14463                )
14464            }
14465            #[inline]
14466            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14467                updateEpochStartBlockReturn::_tokenize(ret)
14468            }
14469            #[inline]
14470            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14471                <Self::ReturnTuple<
14472                    '_,
14473                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14474                    .map(Into::into)
14475            }
14476            #[inline]
14477            fn abi_decode_returns_validate(
14478                data: &[u8],
14479            ) -> alloy_sol_types::Result<Self::Return> {
14480                <Self::ReturnTuple<
14481                    '_,
14482                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14483                    .map(Into::into)
14484            }
14485        }
14486    };
14487    #[derive(serde::Serialize, serde::Deserialize)]
14488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14489    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
14490```solidity
14491function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
14492```*/
14493    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14494    #[derive(Clone)]
14495    pub struct upgradeToAndCallCall {
14496        #[allow(missing_docs)]
14497        pub newImplementation: alloy::sol_types::private::Address,
14498        #[allow(missing_docs)]
14499        pub data: alloy::sol_types::private::Bytes,
14500    }
14501    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
14502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14503    #[derive(Clone)]
14504    pub struct upgradeToAndCallReturn {}
14505    #[allow(
14506        non_camel_case_types,
14507        non_snake_case,
14508        clippy::pub_underscore_fields,
14509        clippy::style
14510    )]
14511    const _: () = {
14512        use alloy::sol_types as alloy_sol_types;
14513        {
14514            #[doc(hidden)]
14515            #[allow(dead_code)]
14516            type UnderlyingSolTuple<'a> = (
14517                alloy::sol_types::sol_data::Address,
14518                alloy::sol_types::sol_data::Bytes,
14519            );
14520            #[doc(hidden)]
14521            type UnderlyingRustTuple<'a> = (
14522                alloy::sol_types::private::Address,
14523                alloy::sol_types::private::Bytes,
14524            );
14525            #[cfg(test)]
14526            #[allow(dead_code, unreachable_patterns)]
14527            fn _type_assertion(
14528                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14529            ) {
14530                match _t {
14531                    alloy_sol_types::private::AssertTypeEq::<
14532                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14533                    >(_) => {}
14534                }
14535            }
14536            #[automatically_derived]
14537            #[doc(hidden)]
14538            impl ::core::convert::From<upgradeToAndCallCall>
14539            for UnderlyingRustTuple<'_> {
14540                fn from(value: upgradeToAndCallCall) -> Self {
14541                    (value.newImplementation, value.data)
14542                }
14543            }
14544            #[automatically_derived]
14545            #[doc(hidden)]
14546            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14547            for upgradeToAndCallCall {
14548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14549                    Self {
14550                        newImplementation: tuple.0,
14551                        data: tuple.1,
14552                    }
14553                }
14554            }
14555        }
14556        {
14557            #[doc(hidden)]
14558            #[allow(dead_code)]
14559            type UnderlyingSolTuple<'a> = ();
14560            #[doc(hidden)]
14561            type UnderlyingRustTuple<'a> = ();
14562            #[cfg(test)]
14563            #[allow(dead_code, unreachable_patterns)]
14564            fn _type_assertion(
14565                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14566            ) {
14567                match _t {
14568                    alloy_sol_types::private::AssertTypeEq::<
14569                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14570                    >(_) => {}
14571                }
14572            }
14573            #[automatically_derived]
14574            #[doc(hidden)]
14575            impl ::core::convert::From<upgradeToAndCallReturn>
14576            for UnderlyingRustTuple<'_> {
14577                fn from(value: upgradeToAndCallReturn) -> Self {
14578                    ()
14579                }
14580            }
14581            #[automatically_derived]
14582            #[doc(hidden)]
14583            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14584            for upgradeToAndCallReturn {
14585                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14586                    Self {}
14587                }
14588            }
14589        }
14590        impl upgradeToAndCallReturn {
14591            fn _tokenize(
14592                &self,
14593            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14594                ()
14595            }
14596        }
14597        #[automatically_derived]
14598        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
14599            type Parameters<'a> = (
14600                alloy::sol_types::sol_data::Address,
14601                alloy::sol_types::sol_data::Bytes,
14602            );
14603            type Token<'a> = <Self::Parameters<
14604                'a,
14605            > as alloy_sol_types::SolType>::Token<'a>;
14606            type Return = upgradeToAndCallReturn;
14607            type ReturnTuple<'a> = ();
14608            type ReturnToken<'a> = <Self::ReturnTuple<
14609                'a,
14610            > as alloy_sol_types::SolType>::Token<'a>;
14611            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
14612            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
14613            #[inline]
14614            fn new<'a>(
14615                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14616            ) -> Self {
14617                tuple.into()
14618            }
14619            #[inline]
14620            fn tokenize(&self) -> Self::Token<'_> {
14621                (
14622                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14623                        &self.newImplementation,
14624                    ),
14625                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
14626                        &self.data,
14627                    ),
14628                )
14629            }
14630            #[inline]
14631            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14632                upgradeToAndCallReturn::_tokenize(ret)
14633            }
14634            #[inline]
14635            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14636                <Self::ReturnTuple<
14637                    '_,
14638                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14639                    .map(Into::into)
14640            }
14641            #[inline]
14642            fn abi_decode_returns_validate(
14643                data: &[u8],
14644            ) -> alloy_sol_types::Result<Self::Return> {
14645                <Self::ReturnTuple<
14646                    '_,
14647                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14648                    .map(Into::into)
14649            }
14650        }
14651    };
14652    #[derive(serde::Serialize, serde::Deserialize)]
14653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14654    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14655```solidity
14656function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14657```*/
14658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14659    #[derive(Clone)]
14660    pub struct votingStakeTableStateCall;
14661    #[derive(serde::Serialize, serde::Deserialize)]
14662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14663    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14664    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14665    #[derive(Clone)]
14666    pub struct votingStakeTableStateReturn {
14667        #[allow(missing_docs)]
14668        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14669        #[allow(missing_docs)]
14670        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14671        #[allow(missing_docs)]
14672        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14673        #[allow(missing_docs)]
14674        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14675    }
14676    #[allow(
14677        non_camel_case_types,
14678        non_snake_case,
14679        clippy::pub_underscore_fields,
14680        clippy::style
14681    )]
14682    const _: () = {
14683        use alloy::sol_types as alloy_sol_types;
14684        {
14685            #[doc(hidden)]
14686            #[allow(dead_code)]
14687            type UnderlyingSolTuple<'a> = ();
14688            #[doc(hidden)]
14689            type UnderlyingRustTuple<'a> = ();
14690            #[cfg(test)]
14691            #[allow(dead_code, unreachable_patterns)]
14692            fn _type_assertion(
14693                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14694            ) {
14695                match _t {
14696                    alloy_sol_types::private::AssertTypeEq::<
14697                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14698                    >(_) => {}
14699                }
14700            }
14701            #[automatically_derived]
14702            #[doc(hidden)]
14703            impl ::core::convert::From<votingStakeTableStateCall>
14704            for UnderlyingRustTuple<'_> {
14705                fn from(value: votingStakeTableStateCall) -> Self {
14706                    ()
14707                }
14708            }
14709            #[automatically_derived]
14710            #[doc(hidden)]
14711            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14712            for votingStakeTableStateCall {
14713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14714                    Self
14715                }
14716            }
14717        }
14718        {
14719            #[doc(hidden)]
14720            #[allow(dead_code)]
14721            type UnderlyingSolTuple<'a> = (
14722                alloy::sol_types::sol_data::Uint<256>,
14723                BN254::ScalarField,
14724                BN254::ScalarField,
14725                BN254::ScalarField,
14726            );
14727            #[doc(hidden)]
14728            type UnderlyingRustTuple<'a> = (
14729                alloy::sol_types::private::primitives::aliases::U256,
14730                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14731                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14732                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14733            );
14734            #[cfg(test)]
14735            #[allow(dead_code, unreachable_patterns)]
14736            fn _type_assertion(
14737                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14738            ) {
14739                match _t {
14740                    alloy_sol_types::private::AssertTypeEq::<
14741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14742                    >(_) => {}
14743                }
14744            }
14745            #[automatically_derived]
14746            #[doc(hidden)]
14747            impl ::core::convert::From<votingStakeTableStateReturn>
14748            for UnderlyingRustTuple<'_> {
14749                fn from(value: votingStakeTableStateReturn) -> Self {
14750                    (
14751                        value.threshold,
14752                        value.blsKeyComm,
14753                        value.schnorrKeyComm,
14754                        value.amountComm,
14755                    )
14756                }
14757            }
14758            #[automatically_derived]
14759            #[doc(hidden)]
14760            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14761            for votingStakeTableStateReturn {
14762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14763                    Self {
14764                        threshold: tuple.0,
14765                        blsKeyComm: tuple.1,
14766                        schnorrKeyComm: tuple.2,
14767                        amountComm: tuple.3,
14768                    }
14769                }
14770            }
14771        }
14772        impl votingStakeTableStateReturn {
14773            fn _tokenize(
14774                &self,
14775            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14776                '_,
14777            > {
14778                (
14779                    <alloy::sol_types::sol_data::Uint<
14780                        256,
14781                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14783                        &self.blsKeyComm,
14784                    ),
14785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14786                        &self.schnorrKeyComm,
14787                    ),
14788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14789                        &self.amountComm,
14790                    ),
14791                )
14792            }
14793        }
14794        #[automatically_derived]
14795        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14796            type Parameters<'a> = ();
14797            type Token<'a> = <Self::Parameters<
14798                'a,
14799            > as alloy_sol_types::SolType>::Token<'a>;
14800            type Return = votingStakeTableStateReturn;
14801            type ReturnTuple<'a> = (
14802                alloy::sol_types::sol_data::Uint<256>,
14803                BN254::ScalarField,
14804                BN254::ScalarField,
14805                BN254::ScalarField,
14806            );
14807            type ReturnToken<'a> = <Self::ReturnTuple<
14808                'a,
14809            > as alloy_sol_types::SolType>::Token<'a>;
14810            const SIGNATURE: &'static str = "votingStakeTableState()";
14811            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14812            #[inline]
14813            fn new<'a>(
14814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14815            ) -> Self {
14816                tuple.into()
14817            }
14818            #[inline]
14819            fn tokenize(&self) -> Self::Token<'_> {
14820                ()
14821            }
14822            #[inline]
14823            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14824                votingStakeTableStateReturn::_tokenize(ret)
14825            }
14826            #[inline]
14827            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14828                <Self::ReturnTuple<
14829                    '_,
14830                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14831                    .map(Into::into)
14832            }
14833            #[inline]
14834            fn abi_decode_returns_validate(
14835                data: &[u8],
14836            ) -> alloy_sol_types::Result<Self::Return> {
14837                <Self::ReturnTuple<
14838                    '_,
14839                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14840                    .map(Into::into)
14841            }
14842        }
14843    };
14844    ///Container for all the [`LightClientV2Mock`](self) function calls.
14845    #[derive(Clone)]
14846    #[derive(serde::Serialize, serde::Deserialize)]
14847    #[derive()]
14848    pub enum LightClientV2MockCalls {
14849        #[allow(missing_docs)]
14850        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14851        #[allow(missing_docs)]
14852        _getVk(_getVkCall),
14853        #[allow(missing_docs)]
14854        blocksPerEpoch(blocksPerEpochCall),
14855        #[allow(missing_docs)]
14856        currentBlockNumber(currentBlockNumberCall),
14857        #[allow(missing_docs)]
14858        currentEpoch(currentEpochCall),
14859        #[allow(missing_docs)]
14860        disablePermissionedProverMode(disablePermissionedProverModeCall),
14861        #[allow(missing_docs)]
14862        epochFromBlockNumber(epochFromBlockNumberCall),
14863        #[allow(missing_docs)]
14864        epochStartBlock(epochStartBlockCall),
14865        #[allow(missing_docs)]
14866        finalizedState(finalizedStateCall),
14867        #[allow(missing_docs)]
14868        genesisStakeTableState(genesisStakeTableStateCall),
14869        #[allow(missing_docs)]
14870        genesisState(genesisStateCall),
14871        #[allow(missing_docs)]
14872        getFirstEpoch(getFirstEpochCall),
14873        #[allow(missing_docs)]
14874        getHotShotCommitment(getHotShotCommitmentCall),
14875        #[allow(missing_docs)]
14876        getStateHistoryCount(getStateHistoryCountCall),
14877        #[allow(missing_docs)]
14878        getVersion(getVersionCall),
14879        #[allow(missing_docs)]
14880        initialize(initializeCall),
14881        #[allow(missing_docs)]
14882        initializeV2(initializeV2Call),
14883        #[allow(missing_docs)]
14884        isEpochRoot(isEpochRootCall),
14885        #[allow(missing_docs)]
14886        isGtEpochRoot(isGtEpochRootCall),
14887        #[allow(missing_docs)]
14888        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14889        #[allow(missing_docs)]
14890        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14891        #[allow(missing_docs)]
14892        newFinalizedState_0(newFinalizedState_0Call),
14893        #[allow(missing_docs)]
14894        newFinalizedState_1(newFinalizedState_1Call),
14895        #[allow(missing_docs)]
14896        owner(ownerCall),
14897        #[allow(missing_docs)]
14898        permissionedProver(permissionedProverCall),
14899        #[allow(missing_docs)]
14900        proxiableUUID(proxiableUUIDCall),
14901        #[allow(missing_docs)]
14902        renounceOwnership(renounceOwnershipCall),
14903        #[allow(missing_docs)]
14904        setBlocksPerEpoch(setBlocksPerEpochCall),
14905        #[allow(missing_docs)]
14906        setFinalizedState(setFinalizedStateCall),
14907        #[allow(missing_docs)]
14908        setHotShotDownSince(setHotShotDownSinceCall),
14909        #[allow(missing_docs)]
14910        setHotShotUp(setHotShotUpCall),
14911        #[allow(missing_docs)]
14912        setPermissionedProver(setPermissionedProverCall),
14913        #[allow(missing_docs)]
14914        setStateHistory(setStateHistoryCall),
14915        #[allow(missing_docs)]
14916        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14917        #[allow(missing_docs)]
14918        setVotingStakeTableState(setVotingStakeTableStateCall),
14919        #[allow(missing_docs)]
14920        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14921        #[allow(missing_docs)]
14922        stateHistoryCommitments(stateHistoryCommitmentsCall),
14923        #[allow(missing_docs)]
14924        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14925        #[allow(missing_docs)]
14926        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14927        #[allow(missing_docs)]
14928        transferOwnership(transferOwnershipCall),
14929        #[allow(missing_docs)]
14930        updateEpochStartBlock(updateEpochStartBlockCall),
14931        #[allow(missing_docs)]
14932        upgradeToAndCall(upgradeToAndCallCall),
14933        #[allow(missing_docs)]
14934        votingStakeTableState(votingStakeTableStateCall),
14935    }
14936    impl LightClientV2MockCalls {
14937        /// All the selectors of this enum.
14938        ///
14939        /// Note that the selectors might not be in the same order as the variants.
14940        /// No guarantees are made about the order of the selectors.
14941        ///
14942        /// Prefer using `SolInterface` methods instead.
14943        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14944            [1u8, 63u8, 165u8, 252u8],
14945            [2u8, 181u8, 146u8, 243u8],
14946            [6u8, 37u8, 225u8, 155u8],
14947            [13u8, 142u8, 110u8, 44u8],
14948            [18u8, 23u8, 60u8, 44u8],
14949            [22u8, 122u8, 198u8, 24u8],
14950            [32u8, 99u8, 212u8, 247u8],
14951            [37u8, 41u8, 116u8, 39u8],
14952            [45u8, 82u8, 170u8, 214u8],
14953            [47u8, 121u8, 136u8, 157u8],
14954            [48u8, 12u8, 137u8, 221u8],
14955            [49u8, 61u8, 247u8, 177u8],
14956            [55u8, 142u8, 194u8, 59u8],
14957            [60u8, 35u8, 182u8, 219u8],
14958            [62u8, 213u8, 91u8, 123u8],
14959            [66u8, 109u8, 49u8, 148u8],
14960            [67u8, 61u8, 186u8, 159u8],
14961            [79u8, 30u8, 242u8, 134u8],
14962            [82u8, 209u8, 144u8, 45u8],
14963            [98u8, 58u8, 19u8, 56u8],
14964            [105u8, 204u8, 106u8, 4u8],
14965            [113u8, 80u8, 24u8, 166u8],
14966            [117u8, 124u8, 55u8, 173u8],
14967            [118u8, 103u8, 24u8, 8u8],
14968            [130u8, 110u8, 65u8, 252u8],
14969            [133u8, 132u8, 210u8, 63u8],
14970            [141u8, 165u8, 203u8, 91u8],
14971            [144u8, 193u8, 67u8, 144u8],
14972            [150u8, 193u8, 202u8, 97u8],
14973            [155u8, 170u8, 60u8, 201u8],
14974            [159u8, 219u8, 84u8, 167u8],
14975            [173u8, 60u8, 177u8, 204u8],
14976            [179u8, 59u8, 196u8, 145u8],
14977            [179u8, 218u8, 242u8, 84u8],
14978            [181u8, 173u8, 234u8, 60u8],
14979            [194u8, 59u8, 158u8, 158u8],
14980            [200u8, 229u8, 228u8, 152u8],
14981            [210u8, 77u8, 147u8, 61u8],
14982            [224u8, 48u8, 51u8, 1u8],
14983            [240u8, 104u8, 32u8, 84u8],
14984            [242u8, 253u8, 227u8, 139u8],
14985            [245u8, 103u8, 97u8, 96u8],
14986            [249u8, 229u8, 13u8, 25u8],
14987        ];
14988        /// The names of the variants in the same order as `SELECTORS`.
14989        pub const VARIANT_NAMES: &'static [&'static str] = &[
14990            ::core::stringify!(setPermissionedProver),
14991            ::core::stringify!(stateHistoryCommitments),
14992            ::core::stringify!(votingStakeTableState),
14993            ::core::stringify!(getVersion),
14994            ::core::stringify!(_getVk),
14995            ::core::stringify!(updateEpochStartBlock),
14996            ::core::stringify!(newFinalizedState_0),
14997            ::core::stringify!(isEpochRoot),
14998            ::core::stringify!(setHotShotDownSince),
14999            ::core::stringify!(stateHistoryFirstIndex),
15000            ::core::stringify!(isGtEpochRoot),
15001            ::core::stringify!(permissionedProver),
15002            ::core::stringify!(currentBlockNumber),
15003            ::core::stringify!(setBlocksPerEpoch),
15004            ::core::stringify!(epochStartBlock),
15005            ::core::stringify!(genesisStakeTableState),
15006            ::core::stringify!(setStateHistoryRetentionPeriod),
15007            ::core::stringify!(upgradeToAndCall),
15008            ::core::stringify!(proxiableUUID),
15009            ::core::stringify!(setVotingStakeTableState),
15010            ::core::stringify!(disablePermissionedProverMode),
15011            ::core::stringify!(renounceOwnership),
15012            ::core::stringify!(newFinalizedState_1),
15013            ::core::stringify!(currentEpoch),
15014            ::core::stringify!(isPermissionedProverEnabled),
15015            ::core::stringify!(getHotShotCommitment),
15016            ::core::stringify!(owner),
15017            ::core::stringify!(epochFromBlockNumber),
15018            ::core::stringify!(setstateHistoryRetentionPeriod),
15019            ::core::stringify!(initialize),
15020            ::core::stringify!(finalizedState),
15021            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
15022            ::core::stringify!(initializeV2),
15023            ::core::stringify!(getFirstEpoch),
15024            ::core::stringify!(setFinalizedState),
15025            ::core::stringify!(stateHistoryRetentionPeriod),
15026            ::core::stringify!(setHotShotUp),
15027            ::core::stringify!(genesisState),
15028            ::core::stringify!(lagOverEscapeHatchThreshold),
15029            ::core::stringify!(blocksPerEpoch),
15030            ::core::stringify!(transferOwnership),
15031            ::core::stringify!(setStateHistory),
15032            ::core::stringify!(getStateHistoryCount),
15033        ];
15034        /// The signatures in the same order as `SELECTORS`.
15035        pub const SIGNATURES: &'static [&'static str] = &[
15036            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
15037            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
15038            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15039            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
15040            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
15041            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
15042            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
15043            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
15044            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
15045            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
15046            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
15047            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
15048            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
15049            <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15050            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
15051            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15052            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15053            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
15054            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
15055            <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15056            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
15057            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
15058            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
15059            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15060            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
15061            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
15062            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
15063            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
15064            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15065            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
15066            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15067            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
15068            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
15069            <getFirstEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15070            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15071            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15072            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
15073            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15074            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
15075            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15076            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
15077            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
15078            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
15079        ];
15080        /// Returns the signature for the given selector, if known.
15081        #[inline]
15082        pub fn signature_by_selector(
15083            selector: [u8; 4usize],
15084        ) -> ::core::option::Option<&'static str> {
15085            match Self::SELECTORS.binary_search(&selector) {
15086                ::core::result::Result::Ok(idx) => {
15087                    ::core::option::Option::Some(Self::SIGNATURES[idx])
15088                }
15089                ::core::result::Result::Err(_) => ::core::option::Option::None,
15090            }
15091        }
15092        /// Returns the enum variant name for the given selector, if known.
15093        #[inline]
15094        pub fn name_by_selector(
15095            selector: [u8; 4usize],
15096        ) -> ::core::option::Option<&'static str> {
15097            let sig = Self::signature_by_selector(selector)?;
15098            sig.split_once('(').map(|(name, _)| name)
15099        }
15100    }
15101    #[automatically_derived]
15102    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
15103        const NAME: &'static str = "LightClientV2MockCalls";
15104        const MIN_DATA_LENGTH: usize = 0usize;
15105        const COUNT: usize = 43usize;
15106        #[inline]
15107        fn selector(&self) -> [u8; 4] {
15108            match self {
15109                Self::UPGRADE_INTERFACE_VERSION(_) => {
15110                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
15111                }
15112                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
15113                Self::blocksPerEpoch(_) => {
15114                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15115                }
15116                Self::currentBlockNumber(_) => {
15117                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15118                }
15119                Self::currentEpoch(_) => {
15120                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
15121                }
15122                Self::disablePermissionedProverMode(_) => {
15123                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
15124                }
15125                Self::epochFromBlockNumber(_) => {
15126                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15127                }
15128                Self::epochStartBlock(_) => {
15129                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15130                }
15131                Self::finalizedState(_) => {
15132                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15133                }
15134                Self::genesisStakeTableState(_) => {
15135                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15136                }
15137                Self::genesisState(_) => {
15138                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
15139                }
15140                Self::getFirstEpoch(_) => {
15141                    <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR
15142                }
15143                Self::getHotShotCommitment(_) => {
15144                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
15145                }
15146                Self::getStateHistoryCount(_) => {
15147                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
15148                }
15149                Self::getVersion(_) => {
15150                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
15151                }
15152                Self::initialize(_) => {
15153                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
15154                }
15155                Self::initializeV2(_) => {
15156                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
15157                }
15158                Self::isEpochRoot(_) => {
15159                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15160                }
15161                Self::isGtEpochRoot(_) => {
15162                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15163                }
15164                Self::isPermissionedProverEnabled(_) => {
15165                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
15166                }
15167                Self::lagOverEscapeHatchThreshold(_) => {
15168                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
15169                }
15170                Self::newFinalizedState_0(_) => {
15171                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
15172                }
15173                Self::newFinalizedState_1(_) => {
15174                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
15175                }
15176                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15177                Self::permissionedProver(_) => {
15178                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15179                }
15180                Self::proxiableUUID(_) => {
15181                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
15182                }
15183                Self::renounceOwnership(_) => {
15184                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15185                }
15186                Self::setBlocksPerEpoch(_) => {
15187                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15188                }
15189                Self::setFinalizedState(_) => {
15190                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15191                }
15192                Self::setHotShotDownSince(_) => {
15193                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
15194                }
15195                Self::setHotShotUp(_) => {
15196                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
15197                }
15198                Self::setPermissionedProver(_) => {
15199                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15200                }
15201                Self::setStateHistory(_) => {
15202                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
15203                }
15204                Self::setStateHistoryRetentionPeriod(_) => {
15205                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15206                }
15207                Self::setVotingStakeTableState(_) => {
15208                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15209                }
15210                Self::setstateHistoryRetentionPeriod(_) => {
15211                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15212                }
15213                Self::stateHistoryCommitments(_) => {
15214                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
15215                }
15216                Self::stateHistoryFirstIndex(_) => {
15217                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15218                }
15219                Self::stateHistoryRetentionPeriod(_) => {
15220                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15221                }
15222                Self::transferOwnership(_) => {
15223                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15224                }
15225                Self::updateEpochStartBlock(_) => {
15226                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15227                }
15228                Self::upgradeToAndCall(_) => {
15229                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15230                }
15231                Self::votingStakeTableState(_) => {
15232                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15233                }
15234            }
15235        }
15236        #[inline]
15237        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15238            Self::SELECTORS.get(i).copied()
15239        }
15240        #[inline]
15241        fn valid_selector(selector: [u8; 4]) -> bool {
15242            Self::SELECTORS.binary_search(&selector).is_ok()
15243        }
15244        #[inline]
15245        #[allow(non_snake_case)]
15246        fn abi_decode_raw(
15247            selector: [u8; 4],
15248            data: &[u8],
15249        ) -> alloy_sol_types::Result<Self> {
15250            static DECODE_SHIMS: &[fn(
15251                &[u8],
15252            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15253                {
15254                    fn setPermissionedProver(
15255                        data: &[u8],
15256                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15257                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15258                                data,
15259                            )
15260                            .map(LightClientV2MockCalls::setPermissionedProver)
15261                    }
15262                    setPermissionedProver
15263                },
15264                {
15265                    fn stateHistoryCommitments(
15266                        data: &[u8],
15267                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15268                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15269                                data,
15270                            )
15271                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15272                    }
15273                    stateHistoryCommitments
15274                },
15275                {
15276                    fn votingStakeTableState(
15277                        data: &[u8],
15278                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15279                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15280                                data,
15281                            )
15282                            .map(LightClientV2MockCalls::votingStakeTableState)
15283                    }
15284                    votingStakeTableState
15285                },
15286                {
15287                    fn getVersion(
15288                        data: &[u8],
15289                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15290                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
15291                                data,
15292                            )
15293                            .map(LightClientV2MockCalls::getVersion)
15294                    }
15295                    getVersion
15296                },
15297                {
15298                    fn _getVk(
15299                        data: &[u8],
15300                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15301                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15302                            .map(LightClientV2MockCalls::_getVk)
15303                    }
15304                    _getVk
15305                },
15306                {
15307                    fn updateEpochStartBlock(
15308                        data: &[u8],
15309                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15310                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15311                                data,
15312                            )
15313                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15314                    }
15315                    updateEpochStartBlock
15316                },
15317                {
15318                    fn newFinalizedState_0(
15319                        data: &[u8],
15320                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15321                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
15322                                data,
15323                            )
15324                            .map(LightClientV2MockCalls::newFinalizedState_0)
15325                    }
15326                    newFinalizedState_0
15327                },
15328                {
15329                    fn isEpochRoot(
15330                        data: &[u8],
15331                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15332                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15333                                data,
15334                            )
15335                            .map(LightClientV2MockCalls::isEpochRoot)
15336                    }
15337                    isEpochRoot
15338                },
15339                {
15340                    fn setHotShotDownSince(
15341                        data: &[u8],
15342                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15343                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
15344                                data,
15345                            )
15346                            .map(LightClientV2MockCalls::setHotShotDownSince)
15347                    }
15348                    setHotShotDownSince
15349                },
15350                {
15351                    fn stateHistoryFirstIndex(
15352                        data: &[u8],
15353                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15354                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
15355                                data,
15356                            )
15357                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15358                    }
15359                    stateHistoryFirstIndex
15360                },
15361                {
15362                    fn isGtEpochRoot(
15363                        data: &[u8],
15364                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15365                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15366                                data,
15367                            )
15368                            .map(LightClientV2MockCalls::isGtEpochRoot)
15369                    }
15370                    isGtEpochRoot
15371                },
15372                {
15373                    fn permissionedProver(
15374                        data: &[u8],
15375                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15376                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15377                                data,
15378                            )
15379                            .map(LightClientV2MockCalls::permissionedProver)
15380                    }
15381                    permissionedProver
15382                },
15383                {
15384                    fn currentBlockNumber(
15385                        data: &[u8],
15386                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15387                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15388                                data,
15389                            )
15390                            .map(LightClientV2MockCalls::currentBlockNumber)
15391                    }
15392                    currentBlockNumber
15393                },
15394                {
15395                    fn setBlocksPerEpoch(
15396                        data: &[u8],
15397                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15398                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15399                                data,
15400                            )
15401                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15402                    }
15403                    setBlocksPerEpoch
15404                },
15405                {
15406                    fn epochStartBlock(
15407                        data: &[u8],
15408                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15409                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15410                                data,
15411                            )
15412                            .map(LightClientV2MockCalls::epochStartBlock)
15413                    }
15414                    epochStartBlock
15415                },
15416                {
15417                    fn genesisStakeTableState(
15418                        data: &[u8],
15419                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15420                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15421                                data,
15422                            )
15423                            .map(LightClientV2MockCalls::genesisStakeTableState)
15424                    }
15425                    genesisStakeTableState
15426                },
15427                {
15428                    fn setStateHistoryRetentionPeriod(
15429                        data: &[u8],
15430                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15431                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15432                                data,
15433                            )
15434                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15435                    }
15436                    setStateHistoryRetentionPeriod
15437                },
15438                {
15439                    fn upgradeToAndCall(
15440                        data: &[u8],
15441                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15442                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
15443                                data,
15444                            )
15445                            .map(LightClientV2MockCalls::upgradeToAndCall)
15446                    }
15447                    upgradeToAndCall
15448                },
15449                {
15450                    fn proxiableUUID(
15451                        data: &[u8],
15452                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15453                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
15454                                data,
15455                            )
15456                            .map(LightClientV2MockCalls::proxiableUUID)
15457                    }
15458                    proxiableUUID
15459                },
15460                {
15461                    fn setVotingStakeTableState(
15462                        data: &[u8],
15463                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15464                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15465                                data,
15466                            )
15467                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15468                    }
15469                    setVotingStakeTableState
15470                },
15471                {
15472                    fn disablePermissionedProverMode(
15473                        data: &[u8],
15474                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15475                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15476                                data,
15477                            )
15478                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15479                    }
15480                    disablePermissionedProverMode
15481                },
15482                {
15483                    fn renounceOwnership(
15484                        data: &[u8],
15485                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15486                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15487                                data,
15488                            )
15489                            .map(LightClientV2MockCalls::renounceOwnership)
15490                    }
15491                    renounceOwnership
15492                },
15493                {
15494                    fn newFinalizedState_1(
15495                        data: &[u8],
15496                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15497                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
15498                                data,
15499                            )
15500                            .map(LightClientV2MockCalls::newFinalizedState_1)
15501                    }
15502                    newFinalizedState_1
15503                },
15504                {
15505                    fn currentEpoch(
15506                        data: &[u8],
15507                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15508                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15509                                data,
15510                            )
15511                            .map(LightClientV2MockCalls::currentEpoch)
15512                    }
15513                    currentEpoch
15514                },
15515                {
15516                    fn isPermissionedProverEnabled(
15517                        data: &[u8],
15518                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15519                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
15520                                data,
15521                            )
15522                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
15523                    }
15524                    isPermissionedProverEnabled
15525                },
15526                {
15527                    fn getHotShotCommitment(
15528                        data: &[u8],
15529                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15530                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
15531                                data,
15532                            )
15533                            .map(LightClientV2MockCalls::getHotShotCommitment)
15534                    }
15535                    getHotShotCommitment
15536                },
15537                {
15538                    fn owner(
15539                        data: &[u8],
15540                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15541                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15542                            .map(LightClientV2MockCalls::owner)
15543                    }
15544                    owner
15545                },
15546                {
15547                    fn epochFromBlockNumber(
15548                        data: &[u8],
15549                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15550                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15551                                data,
15552                            )
15553                            .map(LightClientV2MockCalls::epochFromBlockNumber)
15554                    }
15555                    epochFromBlockNumber
15556                },
15557                {
15558                    fn setstateHistoryRetentionPeriod(
15559                        data: &[u8],
15560                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15561                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15562                                data,
15563                            )
15564                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
15565                    }
15566                    setstateHistoryRetentionPeriod
15567                },
15568                {
15569                    fn initialize(
15570                        data: &[u8],
15571                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15572                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15573                                data,
15574                            )
15575                            .map(LightClientV2MockCalls::initialize)
15576                    }
15577                    initialize
15578                },
15579                {
15580                    fn finalizedState(
15581                        data: &[u8],
15582                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15583                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15584                                data,
15585                            )
15586                            .map(LightClientV2MockCalls::finalizedState)
15587                    }
15588                    finalizedState
15589                },
15590                {
15591                    fn UPGRADE_INTERFACE_VERSION(
15592                        data: &[u8],
15593                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15594                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
15595                                data,
15596                            )
15597                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
15598                    }
15599                    UPGRADE_INTERFACE_VERSION
15600                },
15601                {
15602                    fn initializeV2(
15603                        data: &[u8],
15604                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15605                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
15606                                data,
15607                            )
15608                            .map(LightClientV2MockCalls::initializeV2)
15609                    }
15610                    initializeV2
15611                },
15612                {
15613                    fn getFirstEpoch(
15614                        data: &[u8],
15615                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15616                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15617                                data,
15618                            )
15619                            .map(LightClientV2MockCalls::getFirstEpoch)
15620                    }
15621                    getFirstEpoch
15622                },
15623                {
15624                    fn setFinalizedState(
15625                        data: &[u8],
15626                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15627                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15628                                data,
15629                            )
15630                            .map(LightClientV2MockCalls::setFinalizedState)
15631                    }
15632                    setFinalizedState
15633                },
15634                {
15635                    fn stateHistoryRetentionPeriod(
15636                        data: &[u8],
15637                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15638                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15639                                data,
15640                            )
15641                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
15642                    }
15643                    stateHistoryRetentionPeriod
15644                },
15645                {
15646                    fn setHotShotUp(
15647                        data: &[u8],
15648                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15649                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
15650                                data,
15651                            )
15652                            .map(LightClientV2MockCalls::setHotShotUp)
15653                    }
15654                    setHotShotUp
15655                },
15656                {
15657                    fn genesisState(
15658                        data: &[u8],
15659                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15660                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15661                                data,
15662                            )
15663                            .map(LightClientV2MockCalls::genesisState)
15664                    }
15665                    genesisState
15666                },
15667                {
15668                    fn lagOverEscapeHatchThreshold(
15669                        data: &[u8],
15670                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15671                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
15672                                data,
15673                            )
15674                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
15675                    }
15676                    lagOverEscapeHatchThreshold
15677                },
15678                {
15679                    fn blocksPerEpoch(
15680                        data: &[u8],
15681                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15682                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15683                                data,
15684                            )
15685                            .map(LightClientV2MockCalls::blocksPerEpoch)
15686                    }
15687                    blocksPerEpoch
15688                },
15689                {
15690                    fn transferOwnership(
15691                        data: &[u8],
15692                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15693                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15694                                data,
15695                            )
15696                            .map(LightClientV2MockCalls::transferOwnership)
15697                    }
15698                    transferOwnership
15699                },
15700                {
15701                    fn setStateHistory(
15702                        data: &[u8],
15703                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15704                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
15705                                data,
15706                            )
15707                            .map(LightClientV2MockCalls::setStateHistory)
15708                    }
15709                    setStateHistory
15710                },
15711                {
15712                    fn getStateHistoryCount(
15713                        data: &[u8],
15714                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15715                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
15716                                data,
15717                            )
15718                            .map(LightClientV2MockCalls::getStateHistoryCount)
15719                    }
15720                    getStateHistoryCount
15721                },
15722            ];
15723            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15724                return Err(
15725                    alloy_sol_types::Error::unknown_selector(
15726                        <Self as alloy_sol_types::SolInterface>::NAME,
15727                        selector,
15728                    ),
15729                );
15730            };
15731            DECODE_SHIMS[idx](data)
15732        }
15733        #[inline]
15734        #[allow(non_snake_case)]
15735        fn abi_decode_raw_validate(
15736            selector: [u8; 4],
15737            data: &[u8],
15738        ) -> alloy_sol_types::Result<Self> {
15739            static DECODE_VALIDATE_SHIMS: &[fn(
15740                &[u8],
15741            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15742                {
15743                    fn setPermissionedProver(
15744                        data: &[u8],
15745                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15746                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15747                                data,
15748                            )
15749                            .map(LightClientV2MockCalls::setPermissionedProver)
15750                    }
15751                    setPermissionedProver
15752                },
15753                {
15754                    fn stateHistoryCommitments(
15755                        data: &[u8],
15756                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15757                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15758                                data,
15759                            )
15760                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15761                    }
15762                    stateHistoryCommitments
15763                },
15764                {
15765                    fn votingStakeTableState(
15766                        data: &[u8],
15767                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15768                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15769                                data,
15770                            )
15771                            .map(LightClientV2MockCalls::votingStakeTableState)
15772                    }
15773                    votingStakeTableState
15774                },
15775                {
15776                    fn getVersion(
15777                        data: &[u8],
15778                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15779                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15780                                data,
15781                            )
15782                            .map(LightClientV2MockCalls::getVersion)
15783                    }
15784                    getVersion
15785                },
15786                {
15787                    fn _getVk(
15788                        data: &[u8],
15789                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15790                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15791                                data,
15792                            )
15793                            .map(LightClientV2MockCalls::_getVk)
15794                    }
15795                    _getVk
15796                },
15797                {
15798                    fn updateEpochStartBlock(
15799                        data: &[u8],
15800                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15801                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15802                                data,
15803                            )
15804                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15805                    }
15806                    updateEpochStartBlock
15807                },
15808                {
15809                    fn newFinalizedState_0(
15810                        data: &[u8],
15811                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15812                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15813                                data,
15814                            )
15815                            .map(LightClientV2MockCalls::newFinalizedState_0)
15816                    }
15817                    newFinalizedState_0
15818                },
15819                {
15820                    fn isEpochRoot(
15821                        data: &[u8],
15822                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15823                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15824                                data,
15825                            )
15826                            .map(LightClientV2MockCalls::isEpochRoot)
15827                    }
15828                    isEpochRoot
15829                },
15830                {
15831                    fn setHotShotDownSince(
15832                        data: &[u8],
15833                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15834                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15835                                data,
15836                            )
15837                            .map(LightClientV2MockCalls::setHotShotDownSince)
15838                    }
15839                    setHotShotDownSince
15840                },
15841                {
15842                    fn stateHistoryFirstIndex(
15843                        data: &[u8],
15844                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15845                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15846                                data,
15847                            )
15848                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15849                    }
15850                    stateHistoryFirstIndex
15851                },
15852                {
15853                    fn isGtEpochRoot(
15854                        data: &[u8],
15855                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15856                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15857                                data,
15858                            )
15859                            .map(LightClientV2MockCalls::isGtEpochRoot)
15860                    }
15861                    isGtEpochRoot
15862                },
15863                {
15864                    fn permissionedProver(
15865                        data: &[u8],
15866                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15867                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15868                                data,
15869                            )
15870                            .map(LightClientV2MockCalls::permissionedProver)
15871                    }
15872                    permissionedProver
15873                },
15874                {
15875                    fn currentBlockNumber(
15876                        data: &[u8],
15877                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15878                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15879                                data,
15880                            )
15881                            .map(LightClientV2MockCalls::currentBlockNumber)
15882                    }
15883                    currentBlockNumber
15884                },
15885                {
15886                    fn setBlocksPerEpoch(
15887                        data: &[u8],
15888                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15889                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15890                                data,
15891                            )
15892                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15893                    }
15894                    setBlocksPerEpoch
15895                },
15896                {
15897                    fn epochStartBlock(
15898                        data: &[u8],
15899                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15900                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15901                                data,
15902                            )
15903                            .map(LightClientV2MockCalls::epochStartBlock)
15904                    }
15905                    epochStartBlock
15906                },
15907                {
15908                    fn genesisStakeTableState(
15909                        data: &[u8],
15910                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15911                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15912                                data,
15913                            )
15914                            .map(LightClientV2MockCalls::genesisStakeTableState)
15915                    }
15916                    genesisStakeTableState
15917                },
15918                {
15919                    fn setStateHistoryRetentionPeriod(
15920                        data: &[u8],
15921                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15922                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15923                                data,
15924                            )
15925                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15926                    }
15927                    setStateHistoryRetentionPeriod
15928                },
15929                {
15930                    fn upgradeToAndCall(
15931                        data: &[u8],
15932                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15933                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15934                                data,
15935                            )
15936                            .map(LightClientV2MockCalls::upgradeToAndCall)
15937                    }
15938                    upgradeToAndCall
15939                },
15940                {
15941                    fn proxiableUUID(
15942                        data: &[u8],
15943                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15944                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15945                                data,
15946                            )
15947                            .map(LightClientV2MockCalls::proxiableUUID)
15948                    }
15949                    proxiableUUID
15950                },
15951                {
15952                    fn setVotingStakeTableState(
15953                        data: &[u8],
15954                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15955                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15956                                data,
15957                            )
15958                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15959                    }
15960                    setVotingStakeTableState
15961                },
15962                {
15963                    fn disablePermissionedProverMode(
15964                        data: &[u8],
15965                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15966                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15967                                data,
15968                            )
15969                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15970                    }
15971                    disablePermissionedProverMode
15972                },
15973                {
15974                    fn renounceOwnership(
15975                        data: &[u8],
15976                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15977                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15978                                data,
15979                            )
15980                            .map(LightClientV2MockCalls::renounceOwnership)
15981                    }
15982                    renounceOwnership
15983                },
15984                {
15985                    fn newFinalizedState_1(
15986                        data: &[u8],
15987                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15988                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15989                                data,
15990                            )
15991                            .map(LightClientV2MockCalls::newFinalizedState_1)
15992                    }
15993                    newFinalizedState_1
15994                },
15995                {
15996                    fn currentEpoch(
15997                        data: &[u8],
15998                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15999                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16000                                data,
16001                            )
16002                            .map(LightClientV2MockCalls::currentEpoch)
16003                    }
16004                    currentEpoch
16005                },
16006                {
16007                    fn isPermissionedProverEnabled(
16008                        data: &[u8],
16009                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16010                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16011                                data,
16012                            )
16013                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
16014                    }
16015                    isPermissionedProverEnabled
16016                },
16017                {
16018                    fn getHotShotCommitment(
16019                        data: &[u8],
16020                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16021                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16022                                data,
16023                            )
16024                            .map(LightClientV2MockCalls::getHotShotCommitment)
16025                    }
16026                    getHotShotCommitment
16027                },
16028                {
16029                    fn owner(
16030                        data: &[u8],
16031                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16032                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16033                                data,
16034                            )
16035                            .map(LightClientV2MockCalls::owner)
16036                    }
16037                    owner
16038                },
16039                {
16040                    fn epochFromBlockNumber(
16041                        data: &[u8],
16042                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16043                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16044                                data,
16045                            )
16046                            .map(LightClientV2MockCalls::epochFromBlockNumber)
16047                    }
16048                    epochFromBlockNumber
16049                },
16050                {
16051                    fn setstateHistoryRetentionPeriod(
16052                        data: &[u8],
16053                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16054                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16055                                data,
16056                            )
16057                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
16058                    }
16059                    setstateHistoryRetentionPeriod
16060                },
16061                {
16062                    fn initialize(
16063                        data: &[u8],
16064                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16065                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16066                                data,
16067                            )
16068                            .map(LightClientV2MockCalls::initialize)
16069                    }
16070                    initialize
16071                },
16072                {
16073                    fn finalizedState(
16074                        data: &[u8],
16075                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16076                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16077                                data,
16078                            )
16079                            .map(LightClientV2MockCalls::finalizedState)
16080                    }
16081                    finalizedState
16082                },
16083                {
16084                    fn UPGRADE_INTERFACE_VERSION(
16085                        data: &[u8],
16086                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16087                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16088                                data,
16089                            )
16090                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
16091                    }
16092                    UPGRADE_INTERFACE_VERSION
16093                },
16094                {
16095                    fn initializeV2(
16096                        data: &[u8],
16097                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16098                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16099                                data,
16100                            )
16101                            .map(LightClientV2MockCalls::initializeV2)
16102                    }
16103                    initializeV2
16104                },
16105                {
16106                    fn getFirstEpoch(
16107                        data: &[u8],
16108                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16109                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16110                                data,
16111                            )
16112                            .map(LightClientV2MockCalls::getFirstEpoch)
16113                    }
16114                    getFirstEpoch
16115                },
16116                {
16117                    fn setFinalizedState(
16118                        data: &[u8],
16119                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16120                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16121                                data,
16122                            )
16123                            .map(LightClientV2MockCalls::setFinalizedState)
16124                    }
16125                    setFinalizedState
16126                },
16127                {
16128                    fn stateHistoryRetentionPeriod(
16129                        data: &[u8],
16130                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16131                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16132                                data,
16133                            )
16134                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
16135                    }
16136                    stateHistoryRetentionPeriod
16137                },
16138                {
16139                    fn setHotShotUp(
16140                        data: &[u8],
16141                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16142                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16143                                data,
16144                            )
16145                            .map(LightClientV2MockCalls::setHotShotUp)
16146                    }
16147                    setHotShotUp
16148                },
16149                {
16150                    fn genesisState(
16151                        data: &[u8],
16152                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16153                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16154                                data,
16155                            )
16156                            .map(LightClientV2MockCalls::genesisState)
16157                    }
16158                    genesisState
16159                },
16160                {
16161                    fn lagOverEscapeHatchThreshold(
16162                        data: &[u8],
16163                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16164                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16165                                data,
16166                            )
16167                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
16168                    }
16169                    lagOverEscapeHatchThreshold
16170                },
16171                {
16172                    fn blocksPerEpoch(
16173                        data: &[u8],
16174                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16175                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16176                                data,
16177                            )
16178                            .map(LightClientV2MockCalls::blocksPerEpoch)
16179                    }
16180                    blocksPerEpoch
16181                },
16182                {
16183                    fn transferOwnership(
16184                        data: &[u8],
16185                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16186                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16187                                data,
16188                            )
16189                            .map(LightClientV2MockCalls::transferOwnership)
16190                    }
16191                    transferOwnership
16192                },
16193                {
16194                    fn setStateHistory(
16195                        data: &[u8],
16196                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16197                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16198                                data,
16199                            )
16200                            .map(LightClientV2MockCalls::setStateHistory)
16201                    }
16202                    setStateHistory
16203                },
16204                {
16205                    fn getStateHistoryCount(
16206                        data: &[u8],
16207                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16208                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16209                                data,
16210                            )
16211                            .map(LightClientV2MockCalls::getStateHistoryCount)
16212                    }
16213                    getStateHistoryCount
16214                },
16215            ];
16216            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16217                return Err(
16218                    alloy_sol_types::Error::unknown_selector(
16219                        <Self as alloy_sol_types::SolInterface>::NAME,
16220                        selector,
16221                    ),
16222                );
16223            };
16224            DECODE_VALIDATE_SHIMS[idx](data)
16225        }
16226        #[inline]
16227        fn abi_encoded_size(&self) -> usize {
16228            match self {
16229                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16230                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
16231                        inner,
16232                    )
16233                }
16234                Self::_getVk(inner) => {
16235                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16236                }
16237                Self::blocksPerEpoch(inner) => {
16238                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16239                        inner,
16240                    )
16241                }
16242                Self::currentBlockNumber(inner) => {
16243                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16244                        inner,
16245                    )
16246                }
16247                Self::currentEpoch(inner) => {
16248                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16249                        inner,
16250                    )
16251                }
16252                Self::disablePermissionedProverMode(inner) => {
16253                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
16254                        inner,
16255                    )
16256                }
16257                Self::epochFromBlockNumber(inner) => {
16258                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16259                        inner,
16260                    )
16261                }
16262                Self::epochStartBlock(inner) => {
16263                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16264                        inner,
16265                    )
16266                }
16267                Self::finalizedState(inner) => {
16268                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16269                        inner,
16270                    )
16271                }
16272                Self::genesisStakeTableState(inner) => {
16273                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16274                        inner,
16275                    )
16276                }
16277                Self::genesisState(inner) => {
16278                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16279                        inner,
16280                    )
16281                }
16282                Self::getFirstEpoch(inner) => {
16283                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16284                        inner,
16285                    )
16286                }
16287                Self::getHotShotCommitment(inner) => {
16288                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
16289                        inner,
16290                    )
16291                }
16292                Self::getStateHistoryCount(inner) => {
16293                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
16294                        inner,
16295                    )
16296                }
16297                Self::getVersion(inner) => {
16298                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16299                }
16300                Self::initialize(inner) => {
16301                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16302                }
16303                Self::initializeV2(inner) => {
16304                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
16305                        inner,
16306                    )
16307                }
16308                Self::isEpochRoot(inner) => {
16309                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16310                        inner,
16311                    )
16312                }
16313                Self::isGtEpochRoot(inner) => {
16314                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16315                        inner,
16316                    )
16317                }
16318                Self::isPermissionedProverEnabled(inner) => {
16319                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
16320                        inner,
16321                    )
16322                }
16323                Self::lagOverEscapeHatchThreshold(inner) => {
16324                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
16325                        inner,
16326                    )
16327                }
16328                Self::newFinalizedState_0(inner) => {
16329                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
16330                        inner,
16331                    )
16332                }
16333                Self::newFinalizedState_1(inner) => {
16334                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
16335                        inner,
16336                    )
16337                }
16338                Self::owner(inner) => {
16339                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16340                }
16341                Self::permissionedProver(inner) => {
16342                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16343                        inner,
16344                    )
16345                }
16346                Self::proxiableUUID(inner) => {
16347                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
16348                        inner,
16349                    )
16350                }
16351                Self::renounceOwnership(inner) => {
16352                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16353                        inner,
16354                    )
16355                }
16356                Self::setBlocksPerEpoch(inner) => {
16357                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16358                        inner,
16359                    )
16360                }
16361                Self::setFinalizedState(inner) => {
16362                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16363                        inner,
16364                    )
16365                }
16366                Self::setHotShotDownSince(inner) => {
16367                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
16368                        inner,
16369                    )
16370                }
16371                Self::setHotShotUp(inner) => {
16372                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
16373                        inner,
16374                    )
16375                }
16376                Self::setPermissionedProver(inner) => {
16377                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16378                        inner,
16379                    )
16380                }
16381                Self::setStateHistory(inner) => {
16382                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
16383                        inner,
16384                    )
16385                }
16386                Self::setStateHistoryRetentionPeriod(inner) => {
16387                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16388                        inner,
16389                    )
16390                }
16391                Self::setVotingStakeTableState(inner) => {
16392                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16393                        inner,
16394                    )
16395                }
16396                Self::setstateHistoryRetentionPeriod(inner) => {
16397                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16398                        inner,
16399                    )
16400                }
16401                Self::stateHistoryCommitments(inner) => {
16402                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
16403                        inner,
16404                    )
16405                }
16406                Self::stateHistoryFirstIndex(inner) => {
16407                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
16408                        inner,
16409                    )
16410                }
16411                Self::stateHistoryRetentionPeriod(inner) => {
16412                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16413                        inner,
16414                    )
16415                }
16416                Self::transferOwnership(inner) => {
16417                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16418                        inner,
16419                    )
16420                }
16421                Self::updateEpochStartBlock(inner) => {
16422                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16423                        inner,
16424                    )
16425                }
16426                Self::upgradeToAndCall(inner) => {
16427                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
16428                        inner,
16429                    )
16430                }
16431                Self::votingStakeTableState(inner) => {
16432                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16433                        inner,
16434                    )
16435                }
16436            }
16437        }
16438        #[inline]
16439        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16440            match self {
16441                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16442                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
16443                        inner,
16444                        out,
16445                    )
16446                }
16447                Self::_getVk(inner) => {
16448                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16449                }
16450                Self::blocksPerEpoch(inner) => {
16451                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16452                        inner,
16453                        out,
16454                    )
16455                }
16456                Self::currentBlockNumber(inner) => {
16457                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16458                        inner,
16459                        out,
16460                    )
16461                }
16462                Self::currentEpoch(inner) => {
16463                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16464                        inner,
16465                        out,
16466                    )
16467                }
16468                Self::disablePermissionedProverMode(inner) => {
16469                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16470                        inner,
16471                        out,
16472                    )
16473                }
16474                Self::epochFromBlockNumber(inner) => {
16475                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16476                        inner,
16477                        out,
16478                    )
16479                }
16480                Self::epochStartBlock(inner) => {
16481                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16482                        inner,
16483                        out,
16484                    )
16485                }
16486                Self::finalizedState(inner) => {
16487                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16488                        inner,
16489                        out,
16490                    )
16491                }
16492                Self::genesisStakeTableState(inner) => {
16493                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16494                        inner,
16495                        out,
16496                    )
16497                }
16498                Self::genesisState(inner) => {
16499                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16500                        inner,
16501                        out,
16502                    )
16503                }
16504                Self::getFirstEpoch(inner) => {
16505                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16506                        inner,
16507                        out,
16508                    )
16509                }
16510                Self::getHotShotCommitment(inner) => {
16511                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
16512                        inner,
16513                        out,
16514                    )
16515                }
16516                Self::getStateHistoryCount(inner) => {
16517                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
16518                        inner,
16519                        out,
16520                    )
16521                }
16522                Self::getVersion(inner) => {
16523                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
16524                        inner,
16525                        out,
16526                    )
16527                }
16528                Self::initialize(inner) => {
16529                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16530                        inner,
16531                        out,
16532                    )
16533                }
16534                Self::initializeV2(inner) => {
16535                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
16536                        inner,
16537                        out,
16538                    )
16539                }
16540                Self::isEpochRoot(inner) => {
16541                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16542                        inner,
16543                        out,
16544                    )
16545                }
16546                Self::isGtEpochRoot(inner) => {
16547                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16548                        inner,
16549                        out,
16550                    )
16551                }
16552                Self::isPermissionedProverEnabled(inner) => {
16553                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
16554                        inner,
16555                        out,
16556                    )
16557                }
16558                Self::lagOverEscapeHatchThreshold(inner) => {
16559                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
16560                        inner,
16561                        out,
16562                    )
16563                }
16564                Self::newFinalizedState_0(inner) => {
16565                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
16566                        inner,
16567                        out,
16568                    )
16569                }
16570                Self::newFinalizedState_1(inner) => {
16571                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
16572                        inner,
16573                        out,
16574                    )
16575                }
16576                Self::owner(inner) => {
16577                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16578                }
16579                Self::permissionedProver(inner) => {
16580                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16581                        inner,
16582                        out,
16583                    )
16584                }
16585                Self::proxiableUUID(inner) => {
16586                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
16587                        inner,
16588                        out,
16589                    )
16590                }
16591                Self::renounceOwnership(inner) => {
16592                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16593                        inner,
16594                        out,
16595                    )
16596                }
16597                Self::setBlocksPerEpoch(inner) => {
16598                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16599                        inner,
16600                        out,
16601                    )
16602                }
16603                Self::setFinalizedState(inner) => {
16604                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16605                        inner,
16606                        out,
16607                    )
16608                }
16609                Self::setHotShotDownSince(inner) => {
16610                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
16611                        inner,
16612                        out,
16613                    )
16614                }
16615                Self::setHotShotUp(inner) => {
16616                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
16617                        inner,
16618                        out,
16619                    )
16620                }
16621                Self::setPermissionedProver(inner) => {
16622                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16623                        inner,
16624                        out,
16625                    )
16626                }
16627                Self::setStateHistory(inner) => {
16628                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
16629                        inner,
16630                        out,
16631                    )
16632                }
16633                Self::setStateHistoryRetentionPeriod(inner) => {
16634                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16635                        inner,
16636                        out,
16637                    )
16638                }
16639                Self::setVotingStakeTableState(inner) => {
16640                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16641                        inner,
16642                        out,
16643                    )
16644                }
16645                Self::setstateHistoryRetentionPeriod(inner) => {
16646                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16647                        inner,
16648                        out,
16649                    )
16650                }
16651                Self::stateHistoryCommitments(inner) => {
16652                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
16653                        inner,
16654                        out,
16655                    )
16656                }
16657                Self::stateHistoryFirstIndex(inner) => {
16658                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
16659                        inner,
16660                        out,
16661                    )
16662                }
16663                Self::stateHistoryRetentionPeriod(inner) => {
16664                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16665                        inner,
16666                        out,
16667                    )
16668                }
16669                Self::transferOwnership(inner) => {
16670                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16671                        inner,
16672                        out,
16673                    )
16674                }
16675                Self::updateEpochStartBlock(inner) => {
16676                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16677                        inner,
16678                        out,
16679                    )
16680                }
16681                Self::upgradeToAndCall(inner) => {
16682                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
16683                        inner,
16684                        out,
16685                    )
16686                }
16687                Self::votingStakeTableState(inner) => {
16688                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16689                        inner,
16690                        out,
16691                    )
16692                }
16693            }
16694        }
16695    }
16696    ///Container for all the [`LightClientV2Mock`](self) custom errors.
16697    #[derive(Clone)]
16698    #[derive(serde::Serialize, serde::Deserialize)]
16699    #[derive(Debug, PartialEq, Eq, Hash)]
16700    pub enum LightClientV2MockErrors {
16701        #[allow(missing_docs)]
16702        AddressEmptyCode(AddressEmptyCode),
16703        #[allow(missing_docs)]
16704        DeprecatedApi(DeprecatedApi),
16705        #[allow(missing_docs)]
16706        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
16707        #[allow(missing_docs)]
16708        ERC1967NonPayable(ERC1967NonPayable),
16709        #[allow(missing_docs)]
16710        FailedInnerCall(FailedInnerCall),
16711        #[allow(missing_docs)]
16712        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
16713        #[allow(missing_docs)]
16714        InvalidAddress(InvalidAddress),
16715        #[allow(missing_docs)]
16716        InvalidArgs(InvalidArgs),
16717        #[allow(missing_docs)]
16718        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
16719        #[allow(missing_docs)]
16720        InvalidInitialization(InvalidInitialization),
16721        #[allow(missing_docs)]
16722        InvalidMaxStateHistory(InvalidMaxStateHistory),
16723        #[allow(missing_docs)]
16724        InvalidProof(InvalidProof),
16725        #[allow(missing_docs)]
16726        InvalidScalar(InvalidScalar),
16727        #[allow(missing_docs)]
16728        MissingEpochRootUpdate(MissingEpochRootUpdate),
16729        #[allow(missing_docs)]
16730        NoChangeRequired(NoChangeRequired),
16731        #[allow(missing_docs)]
16732        NotInitializing(NotInitializing),
16733        #[allow(missing_docs)]
16734        OutdatedState(OutdatedState),
16735        #[allow(missing_docs)]
16736        OwnableInvalidOwner(OwnableInvalidOwner),
16737        #[allow(missing_docs)]
16738        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
16739        #[allow(missing_docs)]
16740        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
16741        #[allow(missing_docs)]
16742        ProverNotPermissioned(ProverNotPermissioned),
16743        #[allow(missing_docs)]
16744        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
16745        #[allow(missing_docs)]
16746        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
16747        #[allow(missing_docs)]
16748        WrongStakeTableUsed(WrongStakeTableUsed),
16749    }
16750    impl LightClientV2MockErrors {
16751        /// All the selectors of this enum.
16752        ///
16753        /// Note that the selectors might not be in the same order as the variants.
16754        /// No guarantees are made about the order of the selectors.
16755        ///
16756        /// Prefer using `SolInterface` methods instead.
16757        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16758            [5u8, 28u8, 70u8, 239u8],
16759            [5u8, 176u8, 92u8, 204u8],
16760            [8u8, 10u8, 232u8, 217u8],
16761            [9u8, 189u8, 227u8, 57u8],
16762            [17u8, 140u8, 218u8, 167u8],
16763            [20u8, 37u8, 234u8, 66u8],
16764            [30u8, 79u8, 189u8, 247u8],
16765            [47u8, 171u8, 146u8, 202u8],
16766            [76u8, 156u8, 140u8, 227u8],
16767            [78u8, 64u8, 92u8, 141u8],
16768            [81u8, 97u8, 128u8, 137u8],
16769            [97u8, 90u8, 146u8, 100u8],
16770            [153u8, 150u8, 179u8, 21u8],
16771            [161u8, 186u8, 7u8, 238u8],
16772            [163u8, 166u8, 71u8, 128u8],
16773            [168u8, 99u8, 174u8, 201u8],
16774            [170u8, 29u8, 73u8, 164u8],
16775            [176u8, 180u8, 56u8, 119u8],
16776            [179u8, 152u8, 151u8, 159u8],
16777            [215u8, 230u8, 188u8, 248u8],
16778            [224u8, 124u8, 141u8, 186u8],
16779            [230u8, 196u8, 36u8, 123u8],
16780            [244u8, 160u8, 238u8, 224u8],
16781            [249u8, 46u8, 232u8, 169u8],
16782        ];
16783        /// The names of the variants in the same order as `SELECTORS`.
16784        pub const VARIANT_NAMES: &'static [&'static str] = &[
16785            ::core::stringify!(OutdatedState),
16786            ::core::stringify!(InvalidScalar),
16787            ::core::stringify!(MissingEpochRootUpdate),
16788            ::core::stringify!(InvalidProof),
16789            ::core::stringify!(OwnableUnauthorizedAccount),
16790            ::core::stringify!(FailedInnerCall),
16791            ::core::stringify!(OwnableInvalidOwner),
16792            ::core::stringify!(OwnershipCannotBeRenounced),
16793            ::core::stringify!(ERC1967InvalidImplementation),
16794            ::core::stringify!(DeprecatedApi),
16795            ::core::stringify!(WrongStakeTableUsed),
16796            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
16797            ::core::stringify!(AddressEmptyCode),
16798            ::core::stringify!(InvalidArgs),
16799            ::core::stringify!(ProverNotPermissioned),
16800            ::core::stringify!(NoChangeRequired),
16801            ::core::stringify!(UUPSUnsupportedProxiableUUID),
16802            ::core::stringify!(InsufficientSnapshotHistory),
16803            ::core::stringify!(ERC1967NonPayable),
16804            ::core::stringify!(NotInitializing),
16805            ::core::stringify!(UUPSUnauthorizedCallContext),
16806            ::core::stringify!(InvalidAddress),
16807            ::core::stringify!(InvalidMaxStateHistory),
16808            ::core::stringify!(InvalidInitialization),
16809        ];
16810        /// The signatures in the same order as `SELECTORS`.
16811        pub const SIGNATURES: &'static [&'static str] = &[
16812            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
16813            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
16814            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
16815            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
16816            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
16817            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
16818            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
16819            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
16820            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
16821            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
16822            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
16823            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
16824            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
16825            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
16826            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
16827            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
16828            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
16829            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
16830            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
16831            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
16832            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
16833            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
16834            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
16835            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
16836        ];
16837        /// Returns the signature for the given selector, if known.
16838        #[inline]
16839        pub fn signature_by_selector(
16840            selector: [u8; 4usize],
16841        ) -> ::core::option::Option<&'static str> {
16842            match Self::SELECTORS.binary_search(&selector) {
16843                ::core::result::Result::Ok(idx) => {
16844                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16845                }
16846                ::core::result::Result::Err(_) => ::core::option::Option::None,
16847            }
16848        }
16849        /// Returns the enum variant name for the given selector, if known.
16850        #[inline]
16851        pub fn name_by_selector(
16852            selector: [u8; 4usize],
16853        ) -> ::core::option::Option<&'static str> {
16854            let sig = Self::signature_by_selector(selector)?;
16855            sig.split_once('(').map(|(name, _)| name)
16856        }
16857    }
16858    #[automatically_derived]
16859    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
16860        const NAME: &'static str = "LightClientV2MockErrors";
16861        const MIN_DATA_LENGTH: usize = 0usize;
16862        const COUNT: usize = 24usize;
16863        #[inline]
16864        fn selector(&self) -> [u8; 4] {
16865            match self {
16866                Self::AddressEmptyCode(_) => {
16867                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16868                }
16869                Self::DeprecatedApi(_) => {
16870                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16871                }
16872                Self::ERC1967InvalidImplementation(_) => {
16873                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16874                }
16875                Self::ERC1967NonPayable(_) => {
16876                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16877                }
16878                Self::FailedInnerCall(_) => {
16879                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16880                }
16881                Self::InsufficientSnapshotHistory(_) => {
16882                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16883                }
16884                Self::InvalidAddress(_) => {
16885                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16886                }
16887                Self::InvalidArgs(_) => {
16888                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16889                }
16890                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16891                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16892                }
16893                Self::InvalidInitialization(_) => {
16894                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16895                }
16896                Self::InvalidMaxStateHistory(_) => {
16897                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16898                }
16899                Self::InvalidProof(_) => {
16900                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16901                }
16902                Self::InvalidScalar(_) => {
16903                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16904                }
16905                Self::MissingEpochRootUpdate(_) => {
16906                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16907                }
16908                Self::NoChangeRequired(_) => {
16909                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16910                }
16911                Self::NotInitializing(_) => {
16912                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16913                }
16914                Self::OutdatedState(_) => {
16915                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16916                }
16917                Self::OwnableInvalidOwner(_) => {
16918                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16919                }
16920                Self::OwnableUnauthorizedAccount(_) => {
16921                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16922                }
16923                Self::OwnershipCannotBeRenounced(_) => {
16924                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
16925                }
16926                Self::ProverNotPermissioned(_) => {
16927                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16928                }
16929                Self::UUPSUnauthorizedCallContext(_) => {
16930                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16931                }
16932                Self::UUPSUnsupportedProxiableUUID(_) => {
16933                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16934                }
16935                Self::WrongStakeTableUsed(_) => {
16936                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16937                }
16938            }
16939        }
16940        #[inline]
16941        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16942            Self::SELECTORS.get(i).copied()
16943        }
16944        #[inline]
16945        fn valid_selector(selector: [u8; 4]) -> bool {
16946            Self::SELECTORS.binary_search(&selector).is_ok()
16947        }
16948        #[inline]
16949        #[allow(non_snake_case)]
16950        fn abi_decode_raw(
16951            selector: [u8; 4],
16952            data: &[u8],
16953        ) -> alloy_sol_types::Result<Self> {
16954            static DECODE_SHIMS: &[fn(
16955                &[u8],
16956            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
16957                {
16958                    fn OutdatedState(
16959                        data: &[u8],
16960                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16961                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
16962                                data,
16963                            )
16964                            .map(LightClientV2MockErrors::OutdatedState)
16965                    }
16966                    OutdatedState
16967                },
16968                {
16969                    fn InvalidScalar(
16970                        data: &[u8],
16971                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16972                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
16973                                data,
16974                            )
16975                            .map(LightClientV2MockErrors::InvalidScalar)
16976                    }
16977                    InvalidScalar
16978                },
16979                {
16980                    fn MissingEpochRootUpdate(
16981                        data: &[u8],
16982                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16983                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
16984                                data,
16985                            )
16986                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
16987                    }
16988                    MissingEpochRootUpdate
16989                },
16990                {
16991                    fn InvalidProof(
16992                        data: &[u8],
16993                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16994                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
16995                            .map(LightClientV2MockErrors::InvalidProof)
16996                    }
16997                    InvalidProof
16998                },
16999                {
17000                    fn OwnableUnauthorizedAccount(
17001                        data: &[u8],
17002                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17003                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
17004                                data,
17005                            )
17006                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
17007                    }
17008                    OwnableUnauthorizedAccount
17009                },
17010                {
17011                    fn FailedInnerCall(
17012                        data: &[u8],
17013                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17014                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
17015                                data,
17016                            )
17017                            .map(LightClientV2MockErrors::FailedInnerCall)
17018                    }
17019                    FailedInnerCall
17020                },
17021                {
17022                    fn OwnableInvalidOwner(
17023                        data: &[u8],
17024                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17025                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
17026                                data,
17027                            )
17028                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
17029                    }
17030                    OwnableInvalidOwner
17031                },
17032                {
17033                    fn OwnershipCannotBeRenounced(
17034                        data: &[u8],
17035                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17036                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
17037                                data,
17038                            )
17039                            .map(LightClientV2MockErrors::OwnershipCannotBeRenounced)
17040                    }
17041                    OwnershipCannotBeRenounced
17042                },
17043                {
17044                    fn ERC1967InvalidImplementation(
17045                        data: &[u8],
17046                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17047                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
17048                                data,
17049                            )
17050                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
17051                    }
17052                    ERC1967InvalidImplementation
17053                },
17054                {
17055                    fn DeprecatedApi(
17056                        data: &[u8],
17057                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17058                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
17059                                data,
17060                            )
17061                            .map(LightClientV2MockErrors::DeprecatedApi)
17062                    }
17063                    DeprecatedApi
17064                },
17065                {
17066                    fn WrongStakeTableUsed(
17067                        data: &[u8],
17068                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17069                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
17070                                data,
17071                            )
17072                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
17073                    }
17074                    WrongStakeTableUsed
17075                },
17076                {
17077                    fn InvalidHotShotBlockForCommitmentCheck(
17078                        data: &[u8],
17079                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17080                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
17081                                data,
17082                            )
17083                            .map(
17084                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
17085                            )
17086                    }
17087                    InvalidHotShotBlockForCommitmentCheck
17088                },
17089                {
17090                    fn AddressEmptyCode(
17091                        data: &[u8],
17092                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17093                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
17094                                data,
17095                            )
17096                            .map(LightClientV2MockErrors::AddressEmptyCode)
17097                    }
17098                    AddressEmptyCode
17099                },
17100                {
17101                    fn InvalidArgs(
17102                        data: &[u8],
17103                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17104                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
17105                            .map(LightClientV2MockErrors::InvalidArgs)
17106                    }
17107                    InvalidArgs
17108                },
17109                {
17110                    fn ProverNotPermissioned(
17111                        data: &[u8],
17112                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17113                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
17114                                data,
17115                            )
17116                            .map(LightClientV2MockErrors::ProverNotPermissioned)
17117                    }
17118                    ProverNotPermissioned
17119                },
17120                {
17121                    fn NoChangeRequired(
17122                        data: &[u8],
17123                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17124                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
17125                                data,
17126                            )
17127                            .map(LightClientV2MockErrors::NoChangeRequired)
17128                    }
17129                    NoChangeRequired
17130                },
17131                {
17132                    fn UUPSUnsupportedProxiableUUID(
17133                        data: &[u8],
17134                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17135                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
17136                                data,
17137                            )
17138                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
17139                    }
17140                    UUPSUnsupportedProxiableUUID
17141                },
17142                {
17143                    fn InsufficientSnapshotHistory(
17144                        data: &[u8],
17145                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17146                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
17147                                data,
17148                            )
17149                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
17150                    }
17151                    InsufficientSnapshotHistory
17152                },
17153                {
17154                    fn ERC1967NonPayable(
17155                        data: &[u8],
17156                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17157                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
17158                                data,
17159                            )
17160                            .map(LightClientV2MockErrors::ERC1967NonPayable)
17161                    }
17162                    ERC1967NonPayable
17163                },
17164                {
17165                    fn NotInitializing(
17166                        data: &[u8],
17167                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17168                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
17169                                data,
17170                            )
17171                            .map(LightClientV2MockErrors::NotInitializing)
17172                    }
17173                    NotInitializing
17174                },
17175                {
17176                    fn UUPSUnauthorizedCallContext(
17177                        data: &[u8],
17178                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17179                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
17180                                data,
17181                            )
17182                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
17183                    }
17184                    UUPSUnauthorizedCallContext
17185                },
17186                {
17187                    fn InvalidAddress(
17188                        data: &[u8],
17189                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17190                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
17191                                data,
17192                            )
17193                            .map(LightClientV2MockErrors::InvalidAddress)
17194                    }
17195                    InvalidAddress
17196                },
17197                {
17198                    fn InvalidMaxStateHistory(
17199                        data: &[u8],
17200                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17201                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
17202                                data,
17203                            )
17204                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
17205                    }
17206                    InvalidMaxStateHistory
17207                },
17208                {
17209                    fn InvalidInitialization(
17210                        data: &[u8],
17211                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17212                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
17213                                data,
17214                            )
17215                            .map(LightClientV2MockErrors::InvalidInitialization)
17216                    }
17217                    InvalidInitialization
17218                },
17219            ];
17220            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17221                return Err(
17222                    alloy_sol_types::Error::unknown_selector(
17223                        <Self as alloy_sol_types::SolInterface>::NAME,
17224                        selector,
17225                    ),
17226                );
17227            };
17228            DECODE_SHIMS[idx](data)
17229        }
17230        #[inline]
17231        #[allow(non_snake_case)]
17232        fn abi_decode_raw_validate(
17233            selector: [u8; 4],
17234            data: &[u8],
17235        ) -> alloy_sol_types::Result<Self> {
17236            static DECODE_VALIDATE_SHIMS: &[fn(
17237                &[u8],
17238            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
17239                {
17240                    fn OutdatedState(
17241                        data: &[u8],
17242                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17243                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
17244                                data,
17245                            )
17246                            .map(LightClientV2MockErrors::OutdatedState)
17247                    }
17248                    OutdatedState
17249                },
17250                {
17251                    fn InvalidScalar(
17252                        data: &[u8],
17253                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17254                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
17255                                data,
17256                            )
17257                            .map(LightClientV2MockErrors::InvalidScalar)
17258                    }
17259                    InvalidScalar
17260                },
17261                {
17262                    fn MissingEpochRootUpdate(
17263                        data: &[u8],
17264                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17265                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
17266                                data,
17267                            )
17268                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
17269                    }
17270                    MissingEpochRootUpdate
17271                },
17272                {
17273                    fn InvalidProof(
17274                        data: &[u8],
17275                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17276                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
17277                                data,
17278                            )
17279                            .map(LightClientV2MockErrors::InvalidProof)
17280                    }
17281                    InvalidProof
17282                },
17283                {
17284                    fn OwnableUnauthorizedAccount(
17285                        data: &[u8],
17286                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17287                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
17288                                data,
17289                            )
17290                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
17291                    }
17292                    OwnableUnauthorizedAccount
17293                },
17294                {
17295                    fn FailedInnerCall(
17296                        data: &[u8],
17297                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17298                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
17299                                data,
17300                            )
17301                            .map(LightClientV2MockErrors::FailedInnerCall)
17302                    }
17303                    FailedInnerCall
17304                },
17305                {
17306                    fn OwnableInvalidOwner(
17307                        data: &[u8],
17308                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17309                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
17310                                data,
17311                            )
17312                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
17313                    }
17314                    OwnableInvalidOwner
17315                },
17316                {
17317                    fn OwnershipCannotBeRenounced(
17318                        data: &[u8],
17319                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17320                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
17321                                data,
17322                            )
17323                            .map(LightClientV2MockErrors::OwnershipCannotBeRenounced)
17324                    }
17325                    OwnershipCannotBeRenounced
17326                },
17327                {
17328                    fn ERC1967InvalidImplementation(
17329                        data: &[u8],
17330                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17331                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
17332                                data,
17333                            )
17334                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
17335                    }
17336                    ERC1967InvalidImplementation
17337                },
17338                {
17339                    fn DeprecatedApi(
17340                        data: &[u8],
17341                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17342                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
17343                                data,
17344                            )
17345                            .map(LightClientV2MockErrors::DeprecatedApi)
17346                    }
17347                    DeprecatedApi
17348                },
17349                {
17350                    fn WrongStakeTableUsed(
17351                        data: &[u8],
17352                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17353                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
17354                                data,
17355                            )
17356                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
17357                    }
17358                    WrongStakeTableUsed
17359                },
17360                {
17361                    fn InvalidHotShotBlockForCommitmentCheck(
17362                        data: &[u8],
17363                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17364                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
17365                                data,
17366                            )
17367                            .map(
17368                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
17369                            )
17370                    }
17371                    InvalidHotShotBlockForCommitmentCheck
17372                },
17373                {
17374                    fn AddressEmptyCode(
17375                        data: &[u8],
17376                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17377                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
17378                                data,
17379                            )
17380                            .map(LightClientV2MockErrors::AddressEmptyCode)
17381                    }
17382                    AddressEmptyCode
17383                },
17384                {
17385                    fn InvalidArgs(
17386                        data: &[u8],
17387                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17388                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
17389                                data,
17390                            )
17391                            .map(LightClientV2MockErrors::InvalidArgs)
17392                    }
17393                    InvalidArgs
17394                },
17395                {
17396                    fn ProverNotPermissioned(
17397                        data: &[u8],
17398                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17399                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
17400                                data,
17401                            )
17402                            .map(LightClientV2MockErrors::ProverNotPermissioned)
17403                    }
17404                    ProverNotPermissioned
17405                },
17406                {
17407                    fn NoChangeRequired(
17408                        data: &[u8],
17409                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17410                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
17411                                data,
17412                            )
17413                            .map(LightClientV2MockErrors::NoChangeRequired)
17414                    }
17415                    NoChangeRequired
17416                },
17417                {
17418                    fn UUPSUnsupportedProxiableUUID(
17419                        data: &[u8],
17420                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17421                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
17422                                data,
17423                            )
17424                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
17425                    }
17426                    UUPSUnsupportedProxiableUUID
17427                },
17428                {
17429                    fn InsufficientSnapshotHistory(
17430                        data: &[u8],
17431                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17432                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17433                                data,
17434                            )
17435                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
17436                    }
17437                    InsufficientSnapshotHistory
17438                },
17439                {
17440                    fn ERC1967NonPayable(
17441                        data: &[u8],
17442                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17443                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
17444                                data,
17445                            )
17446                            .map(LightClientV2MockErrors::ERC1967NonPayable)
17447                    }
17448                    ERC1967NonPayable
17449                },
17450                {
17451                    fn NotInitializing(
17452                        data: &[u8],
17453                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17454                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
17455                                data,
17456                            )
17457                            .map(LightClientV2MockErrors::NotInitializing)
17458                    }
17459                    NotInitializing
17460                },
17461                {
17462                    fn UUPSUnauthorizedCallContext(
17463                        data: &[u8],
17464                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17465                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
17466                                data,
17467                            )
17468                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
17469                    }
17470                    UUPSUnauthorizedCallContext
17471                },
17472                {
17473                    fn InvalidAddress(
17474                        data: &[u8],
17475                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17476                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
17477                                data,
17478                            )
17479                            .map(LightClientV2MockErrors::InvalidAddress)
17480                    }
17481                    InvalidAddress
17482                },
17483                {
17484                    fn InvalidMaxStateHistory(
17485                        data: &[u8],
17486                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17487                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17488                                data,
17489                            )
17490                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
17491                    }
17492                    InvalidMaxStateHistory
17493                },
17494                {
17495                    fn InvalidInitialization(
17496                        data: &[u8],
17497                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17498                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
17499                                data,
17500                            )
17501                            .map(LightClientV2MockErrors::InvalidInitialization)
17502                    }
17503                    InvalidInitialization
17504                },
17505            ];
17506            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17507                return Err(
17508                    alloy_sol_types::Error::unknown_selector(
17509                        <Self as alloy_sol_types::SolInterface>::NAME,
17510                        selector,
17511                    ),
17512                );
17513            };
17514            DECODE_VALIDATE_SHIMS[idx](data)
17515        }
17516        #[inline]
17517        fn abi_encoded_size(&self) -> usize {
17518            match self {
17519                Self::AddressEmptyCode(inner) => {
17520                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
17521                        inner,
17522                    )
17523                }
17524                Self::DeprecatedApi(inner) => {
17525                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
17526                }
17527                Self::ERC1967InvalidImplementation(inner) => {
17528                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
17529                        inner,
17530                    )
17531                }
17532                Self::ERC1967NonPayable(inner) => {
17533                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
17534                        inner,
17535                    )
17536                }
17537                Self::FailedInnerCall(inner) => {
17538                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
17539                        inner,
17540                    )
17541                }
17542                Self::InsufficientSnapshotHistory(inner) => {
17543                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
17544                        inner,
17545                    )
17546                }
17547                Self::InvalidAddress(inner) => {
17548                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
17549                        inner,
17550                    )
17551                }
17552                Self::InvalidArgs(inner) => {
17553                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
17554                }
17555                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17556                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
17557                        inner,
17558                    )
17559                }
17560                Self::InvalidInitialization(inner) => {
17561                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
17562                        inner,
17563                    )
17564                }
17565                Self::InvalidMaxStateHistory(inner) => {
17566                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
17567                        inner,
17568                    )
17569                }
17570                Self::InvalidProof(inner) => {
17571                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
17572                }
17573                Self::InvalidScalar(inner) => {
17574                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
17575                }
17576                Self::MissingEpochRootUpdate(inner) => {
17577                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
17578                        inner,
17579                    )
17580                }
17581                Self::NoChangeRequired(inner) => {
17582                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
17583                        inner,
17584                    )
17585                }
17586                Self::NotInitializing(inner) => {
17587                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
17588                        inner,
17589                    )
17590                }
17591                Self::OutdatedState(inner) => {
17592                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
17593                }
17594                Self::OwnableInvalidOwner(inner) => {
17595                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
17596                        inner,
17597                    )
17598                }
17599                Self::OwnableUnauthorizedAccount(inner) => {
17600                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
17601                        inner,
17602                    )
17603                }
17604                Self::OwnershipCannotBeRenounced(inner) => {
17605                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
17606                        inner,
17607                    )
17608                }
17609                Self::ProverNotPermissioned(inner) => {
17610                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
17611                        inner,
17612                    )
17613                }
17614                Self::UUPSUnauthorizedCallContext(inner) => {
17615                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
17616                        inner,
17617                    )
17618                }
17619                Self::UUPSUnsupportedProxiableUUID(inner) => {
17620                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
17621                        inner,
17622                    )
17623                }
17624                Self::WrongStakeTableUsed(inner) => {
17625                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
17626                        inner,
17627                    )
17628                }
17629            }
17630        }
17631        #[inline]
17632        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17633            match self {
17634                Self::AddressEmptyCode(inner) => {
17635                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
17636                        inner,
17637                        out,
17638                    )
17639                }
17640                Self::DeprecatedApi(inner) => {
17641                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
17642                        inner,
17643                        out,
17644                    )
17645                }
17646                Self::ERC1967InvalidImplementation(inner) => {
17647                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
17648                        inner,
17649                        out,
17650                    )
17651                }
17652                Self::ERC1967NonPayable(inner) => {
17653                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
17654                        inner,
17655                        out,
17656                    )
17657                }
17658                Self::FailedInnerCall(inner) => {
17659                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
17660                        inner,
17661                        out,
17662                    )
17663                }
17664                Self::InsufficientSnapshotHistory(inner) => {
17665                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
17666                        inner,
17667                        out,
17668                    )
17669                }
17670                Self::InvalidAddress(inner) => {
17671                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
17672                        inner,
17673                        out,
17674                    )
17675                }
17676                Self::InvalidArgs(inner) => {
17677                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
17678                        inner,
17679                        out,
17680                    )
17681                }
17682                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17683                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
17684                        inner,
17685                        out,
17686                    )
17687                }
17688                Self::InvalidInitialization(inner) => {
17689                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
17690                        inner,
17691                        out,
17692                    )
17693                }
17694                Self::InvalidMaxStateHistory(inner) => {
17695                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
17696                        inner,
17697                        out,
17698                    )
17699                }
17700                Self::InvalidProof(inner) => {
17701                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
17702                        inner,
17703                        out,
17704                    )
17705                }
17706                Self::InvalidScalar(inner) => {
17707                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
17708                        inner,
17709                        out,
17710                    )
17711                }
17712                Self::MissingEpochRootUpdate(inner) => {
17713                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
17714                        inner,
17715                        out,
17716                    )
17717                }
17718                Self::NoChangeRequired(inner) => {
17719                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
17720                        inner,
17721                        out,
17722                    )
17723                }
17724                Self::NotInitializing(inner) => {
17725                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
17726                        inner,
17727                        out,
17728                    )
17729                }
17730                Self::OutdatedState(inner) => {
17731                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
17732                        inner,
17733                        out,
17734                    )
17735                }
17736                Self::OwnableInvalidOwner(inner) => {
17737                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
17738                        inner,
17739                        out,
17740                    )
17741                }
17742                Self::OwnableUnauthorizedAccount(inner) => {
17743                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
17744                        inner,
17745                        out,
17746                    )
17747                }
17748                Self::OwnershipCannotBeRenounced(inner) => {
17749                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
17750                        inner,
17751                        out,
17752                    )
17753                }
17754                Self::ProverNotPermissioned(inner) => {
17755                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
17756                        inner,
17757                        out,
17758                    )
17759                }
17760                Self::UUPSUnauthorizedCallContext(inner) => {
17761                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
17762                        inner,
17763                        out,
17764                    )
17765                }
17766                Self::UUPSUnsupportedProxiableUUID(inner) => {
17767                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
17768                        inner,
17769                        out,
17770                    )
17771                }
17772                Self::WrongStakeTableUsed(inner) => {
17773                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
17774                        inner,
17775                        out,
17776                    )
17777                }
17778            }
17779        }
17780    }
17781    ///Container for all the [`LightClientV2Mock`](self) events.
17782    #[derive(Clone)]
17783    #[derive(serde::Serialize, serde::Deserialize)]
17784    #[derive(Debug, PartialEq, Eq, Hash)]
17785    pub enum LightClientV2MockEvents {
17786        #[allow(missing_docs)]
17787        Initialized(Initialized),
17788        #[allow(missing_docs)]
17789        NewEpoch(NewEpoch),
17790        #[allow(missing_docs)]
17791        NewState(NewState),
17792        #[allow(missing_docs)]
17793        OwnershipTransferred(OwnershipTransferred),
17794        #[allow(missing_docs)]
17795        PermissionedProverNotRequired(PermissionedProverNotRequired),
17796        #[allow(missing_docs)]
17797        PermissionedProverRequired(PermissionedProverRequired),
17798        #[allow(missing_docs)]
17799        Upgrade(Upgrade),
17800        #[allow(missing_docs)]
17801        Upgraded(Upgraded),
17802    }
17803    impl LightClientV2MockEvents {
17804        /// All the selectors of this enum.
17805        ///
17806        /// Note that the selectors might not be in the same order as the variants.
17807        /// No guarantees are made about the order of the selectors.
17808        ///
17809        /// Prefer using `SolInterface` methods instead.
17810        pub const SELECTORS: &'static [[u8; 32usize]] = &[
17811            [
17812                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
17813                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
17814                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
17815            ],
17816            [
17817                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17818                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17819                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17820            ],
17821            [
17822                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17823                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17824                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17825            ],
17826            [
17827                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17828                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17829                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17830            ],
17831            [
17832                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17833                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17834                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17835            ],
17836            [
17837                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17838                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17839                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17840            ],
17841            [
17842                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17843                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17844                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17845            ],
17846            [
17847                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17848                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17849                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17850            ],
17851        ];
17852        /// The names of the variants in the same order as `SELECTORS`.
17853        pub const VARIANT_NAMES: &'static [&'static str] = &[
17854            ::core::stringify!(NewEpoch),
17855            ::core::stringify!(PermissionedProverRequired),
17856            ::core::stringify!(OwnershipTransferred),
17857            ::core::stringify!(PermissionedProverNotRequired),
17858            ::core::stringify!(NewState),
17859            ::core::stringify!(Upgraded),
17860            ::core::stringify!(Initialized),
17861            ::core::stringify!(Upgrade),
17862        ];
17863        /// The signatures in the same order as `SELECTORS`.
17864        pub const SIGNATURES: &'static [&'static str] = &[
17865            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
17866            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17867            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
17868            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17869            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
17870            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
17871            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
17872            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
17873        ];
17874        /// Returns the signature for the given selector, if known.
17875        #[inline]
17876        pub fn signature_by_selector(
17877            selector: [u8; 32usize],
17878        ) -> ::core::option::Option<&'static str> {
17879            match Self::SELECTORS.binary_search(&selector) {
17880                ::core::result::Result::Ok(idx) => {
17881                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17882                }
17883                ::core::result::Result::Err(_) => ::core::option::Option::None,
17884            }
17885        }
17886        /// Returns the enum variant name for the given selector, if known.
17887        #[inline]
17888        pub fn name_by_selector(
17889            selector: [u8; 32usize],
17890        ) -> ::core::option::Option<&'static str> {
17891            let sig = Self::signature_by_selector(selector)?;
17892            sig.split_once('(').map(|(name, _)| name)
17893        }
17894    }
17895    #[automatically_derived]
17896    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
17897        const NAME: &'static str = "LightClientV2MockEvents";
17898        const COUNT: usize = 8usize;
17899        fn decode_raw_log(
17900            topics: &[alloy_sol_types::Word],
17901            data: &[u8],
17902        ) -> alloy_sol_types::Result<Self> {
17903            match topics.first().copied() {
17904                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17905                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
17906                            topics,
17907                            data,
17908                        )
17909                        .map(Self::Initialized)
17910                }
17911                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17912                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17913                        .map(Self::NewEpoch)
17914                }
17915                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17916                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17917                        .map(Self::NewState)
17918                }
17919                Some(
17920                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17921                ) => {
17922                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
17923                            topics,
17924                            data,
17925                        )
17926                        .map(Self::OwnershipTransferred)
17927                }
17928                Some(
17929                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17930                ) => {
17931                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17932                            topics,
17933                            data,
17934                        )
17935                        .map(Self::PermissionedProverNotRequired)
17936                }
17937                Some(
17938                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17939                ) => {
17940                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17941                            topics,
17942                            data,
17943                        )
17944                        .map(Self::PermissionedProverRequired)
17945                }
17946                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17947                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17948                        .map(Self::Upgrade)
17949                }
17950                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17951                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17952                        .map(Self::Upgraded)
17953                }
17954                _ => {
17955                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17956                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17957                        log: alloy_sol_types::private::Box::new(
17958                            alloy_sol_types::private::LogData::new_unchecked(
17959                                topics.to_vec(),
17960                                data.to_vec().into(),
17961                            ),
17962                        ),
17963                    })
17964                }
17965            }
17966        }
17967    }
17968    #[automatically_derived]
17969    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
17970        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17971            match self {
17972                Self::Initialized(inner) => {
17973                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17974                }
17975                Self::NewEpoch(inner) => {
17976                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17977                }
17978                Self::NewState(inner) => {
17979                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17980                }
17981                Self::OwnershipTransferred(inner) => {
17982                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17983                }
17984                Self::PermissionedProverNotRequired(inner) => {
17985                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17986                }
17987                Self::PermissionedProverRequired(inner) => {
17988                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17989                }
17990                Self::Upgrade(inner) => {
17991                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17992                }
17993                Self::Upgraded(inner) => {
17994                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17995                }
17996            }
17997        }
17998        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17999            match self {
18000                Self::Initialized(inner) => {
18001                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18002                }
18003                Self::NewEpoch(inner) => {
18004                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18005                }
18006                Self::NewState(inner) => {
18007                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18008                }
18009                Self::OwnershipTransferred(inner) => {
18010                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18011                }
18012                Self::PermissionedProverNotRequired(inner) => {
18013                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18014                }
18015                Self::PermissionedProverRequired(inner) => {
18016                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18017                }
18018                Self::Upgrade(inner) => {
18019                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18020                }
18021                Self::Upgraded(inner) => {
18022                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18023                }
18024            }
18025        }
18026    }
18027    use alloy::contract as alloy_contract;
18028    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
18029
18030See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
18031    #[inline]
18032    pub const fn new<
18033        P: alloy_contract::private::Provider<N>,
18034        N: alloy_contract::private::Network,
18035    >(
18036        address: alloy_sol_types::private::Address,
18037        __provider: P,
18038    ) -> LightClientV2MockInstance<P, N> {
18039        LightClientV2MockInstance::<P, N>::new(address, __provider)
18040    }
18041    /**Deploys this contract using the given `provider` and constructor arguments, if any.
18042
18043Returns a new instance of the contract, if the deployment was successful.
18044
18045For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18046    #[inline]
18047    pub fn deploy<
18048        P: alloy_contract::private::Provider<N>,
18049        N: alloy_contract::private::Network,
18050    >(
18051        __provider: P,
18052    ) -> impl ::core::future::Future<
18053        Output = alloy_contract::Result<LightClientV2MockInstance<P, N>>,
18054    > {
18055        LightClientV2MockInstance::<P, N>::deploy(__provider)
18056    }
18057    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18058and constructor arguments, if any.
18059
18060This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18061the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18062    #[inline]
18063    pub fn deploy_builder<
18064        P: alloy_contract::private::Provider<N>,
18065        N: alloy_contract::private::Network,
18066    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18067        LightClientV2MockInstance::<P, N>::deploy_builder(__provider)
18068    }
18069    /**A [`LightClientV2Mock`](self) instance.
18070
18071Contains type-safe methods for interacting with an on-chain instance of the
18072[`LightClientV2Mock`](self) contract located at a given `address`, using a given
18073provider `P`.
18074
18075If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
18076documentation on how to provide it), the `deploy` and `deploy_builder` methods can
18077be used to deploy a new instance of the contract.
18078
18079See the [module-level documentation](self) for all the available methods.*/
18080    #[derive(Clone)]
18081    pub struct LightClientV2MockInstance<P, N = alloy_contract::private::Ethereum> {
18082        address: alloy_sol_types::private::Address,
18083        provider: P,
18084        _network: ::core::marker::PhantomData<N>,
18085    }
18086    #[automatically_derived]
18087    impl<P, N> ::core::fmt::Debug for LightClientV2MockInstance<P, N> {
18088        #[inline]
18089        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
18090            f.debug_tuple("LightClientV2MockInstance").field(&self.address).finish()
18091        }
18092    }
18093    /// Instantiation and getters/setters.
18094    impl<
18095        P: alloy_contract::private::Provider<N>,
18096        N: alloy_contract::private::Network,
18097    > LightClientV2MockInstance<P, N> {
18098        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
18099
18100See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
18101        #[inline]
18102        pub const fn new(
18103            address: alloy_sol_types::private::Address,
18104            __provider: P,
18105        ) -> Self {
18106            Self {
18107                address,
18108                provider: __provider,
18109                _network: ::core::marker::PhantomData,
18110            }
18111        }
18112        /**Deploys this contract using the given `provider` and constructor arguments, if any.
18113
18114Returns a new instance of the contract, if the deployment was successful.
18115
18116For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18117        #[inline]
18118        pub async fn deploy(
18119            __provider: P,
18120        ) -> alloy_contract::Result<LightClientV2MockInstance<P, N>> {
18121            let call_builder = Self::deploy_builder(__provider);
18122            let contract_address = call_builder.deploy().await?;
18123            Ok(Self::new(contract_address, call_builder.provider))
18124        }
18125        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18126and constructor arguments, if any.
18127
18128This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18129the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18130        #[inline]
18131        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18132            alloy_contract::RawCallBuilder::new_raw_deploy(
18133                __provider,
18134                ::core::clone::Clone::clone(&BYTECODE),
18135            )
18136        }
18137        /// Returns a reference to the address.
18138        #[inline]
18139        pub const fn address(&self) -> &alloy_sol_types::private::Address {
18140            &self.address
18141        }
18142        /// Sets the address.
18143        #[inline]
18144        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
18145            self.address = address;
18146        }
18147        /// Sets the address and returns `self`.
18148        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
18149            self.set_address(address);
18150            self
18151        }
18152        /// Returns a reference to the provider.
18153        #[inline]
18154        pub const fn provider(&self) -> &P {
18155            &self.provider
18156        }
18157    }
18158    impl<P: ::core::clone::Clone, N> LightClientV2MockInstance<&P, N> {
18159        /// Clones the provider and returns a new instance with the cloned provider.
18160        #[inline]
18161        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<P, N> {
18162            LightClientV2MockInstance {
18163                address: self.address,
18164                provider: ::core::clone::Clone::clone(&self.provider),
18165                _network: ::core::marker::PhantomData,
18166            }
18167        }
18168    }
18169    /// Function calls.
18170    impl<
18171        P: alloy_contract::private::Provider<N>,
18172        N: alloy_contract::private::Network,
18173    > LightClientV2MockInstance<P, N> {
18174        /// Creates a new call builder using this contract instance's provider and address.
18175        ///
18176        /// Note that the call can be any function call, not just those defined in this
18177        /// contract. Prefer using the other methods for building type-safe contract calls.
18178        pub fn call_builder<C: alloy_sol_types::SolCall>(
18179            &self,
18180            call: &C,
18181        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
18182            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
18183        }
18184        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
18185        pub fn UPGRADE_INTERFACE_VERSION(
18186            &self,
18187        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
18188            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
18189        }
18190        ///Creates a new call builder for the [`_getVk`] function.
18191        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
18192            self.call_builder(&_getVkCall)
18193        }
18194        ///Creates a new call builder for the [`blocksPerEpoch`] function.
18195        pub fn blocksPerEpoch(
18196            &self,
18197        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
18198            self.call_builder(&blocksPerEpochCall)
18199        }
18200        ///Creates a new call builder for the [`currentBlockNumber`] function.
18201        pub fn currentBlockNumber(
18202            &self,
18203        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
18204            self.call_builder(&currentBlockNumberCall)
18205        }
18206        ///Creates a new call builder for the [`currentEpoch`] function.
18207        pub fn currentEpoch(
18208            &self,
18209        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
18210            self.call_builder(&currentEpochCall)
18211        }
18212        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
18213        pub fn disablePermissionedProverMode(
18214            &self,
18215        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
18216            self.call_builder(&disablePermissionedProverModeCall)
18217        }
18218        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
18219        pub fn epochFromBlockNumber(
18220            &self,
18221            _blockNum: u64,
18222            _blocksPerEpoch: u64,
18223        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
18224            self.call_builder(
18225                &epochFromBlockNumberCall {
18226                    _blockNum,
18227                    _blocksPerEpoch,
18228                },
18229            )
18230        }
18231        ///Creates a new call builder for the [`epochStartBlock`] function.
18232        pub fn epochStartBlock(
18233            &self,
18234        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
18235            self.call_builder(&epochStartBlockCall)
18236        }
18237        ///Creates a new call builder for the [`finalizedState`] function.
18238        pub fn finalizedState(
18239            &self,
18240        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
18241            self.call_builder(&finalizedStateCall)
18242        }
18243        ///Creates a new call builder for the [`genesisStakeTableState`] function.
18244        pub fn genesisStakeTableState(
18245            &self,
18246        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
18247            self.call_builder(&genesisStakeTableStateCall)
18248        }
18249        ///Creates a new call builder for the [`genesisState`] function.
18250        pub fn genesisState(
18251            &self,
18252        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
18253            self.call_builder(&genesisStateCall)
18254        }
18255        ///Creates a new call builder for the [`getFirstEpoch`] function.
18256        pub fn getFirstEpoch(
18257            &self,
18258        ) -> alloy_contract::SolCallBuilder<&P, getFirstEpochCall, N> {
18259            self.call_builder(&getFirstEpochCall)
18260        }
18261        ///Creates a new call builder for the [`getHotShotCommitment`] function.
18262        pub fn getHotShotCommitment(
18263            &self,
18264            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
18265        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
18266            self.call_builder(
18267                &getHotShotCommitmentCall {
18268                    hotShotBlockHeight,
18269                },
18270            )
18271        }
18272        ///Creates a new call builder for the [`getStateHistoryCount`] function.
18273        pub fn getStateHistoryCount(
18274            &self,
18275        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
18276            self.call_builder(&getStateHistoryCountCall)
18277        }
18278        ///Creates a new call builder for the [`getVersion`] function.
18279        pub fn getVersion(
18280            &self,
18281        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
18282            self.call_builder(&getVersionCall)
18283        }
18284        ///Creates a new call builder for the [`initialize`] function.
18285        pub fn initialize(
18286            &self,
18287            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18288            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18289            _stateHistoryRetentionPeriod: u32,
18290            owner: alloy::sol_types::private::Address,
18291        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
18292            self.call_builder(
18293                &initializeCall {
18294                    _genesis,
18295                    _genesisStakeTableState,
18296                    _stateHistoryRetentionPeriod,
18297                    owner,
18298                },
18299            )
18300        }
18301        ///Creates a new call builder for the [`initializeV2`] function.
18302        pub fn initializeV2(
18303            &self,
18304            _blocksPerEpoch: u64,
18305            _epochStartBlock: u64,
18306        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
18307            self.call_builder(
18308                &initializeV2Call {
18309                    _blocksPerEpoch,
18310                    _epochStartBlock,
18311                },
18312            )
18313        }
18314        ///Creates a new call builder for the [`isEpochRoot`] function.
18315        pub fn isEpochRoot(
18316            &self,
18317            blockHeight: u64,
18318        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
18319            self.call_builder(&isEpochRootCall { blockHeight })
18320        }
18321        ///Creates a new call builder for the [`isGtEpochRoot`] function.
18322        pub fn isGtEpochRoot(
18323            &self,
18324            blockHeight: u64,
18325        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
18326            self.call_builder(&isGtEpochRootCall { blockHeight })
18327        }
18328        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
18329        pub fn isPermissionedProverEnabled(
18330            &self,
18331        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
18332            self.call_builder(&isPermissionedProverEnabledCall)
18333        }
18334        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
18335        pub fn lagOverEscapeHatchThreshold(
18336            &self,
18337            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
18338            threshold: alloy::sol_types::private::primitives::aliases::U256,
18339        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
18340            self.call_builder(
18341                &lagOverEscapeHatchThresholdCall {
18342                    blockNumber,
18343                    threshold,
18344                },
18345            )
18346        }
18347        ///Creates a new call builder for the [`newFinalizedState_0`] function.
18348        pub fn newFinalizedState_0(
18349            &self,
18350            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18351            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18352        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
18353            self.call_builder(&newFinalizedState_0Call { _0, _1 })
18354        }
18355        ///Creates a new call builder for the [`newFinalizedState_1`] function.
18356        pub fn newFinalizedState_1(
18357            &self,
18358            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18359            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18360            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18361        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
18362            self.call_builder(
18363                &newFinalizedState_1Call {
18364                    newState,
18365                    nextStakeTable,
18366                    proof,
18367                },
18368            )
18369        }
18370        ///Creates a new call builder for the [`owner`] function.
18371        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
18372            self.call_builder(&ownerCall)
18373        }
18374        ///Creates a new call builder for the [`permissionedProver`] function.
18375        pub fn permissionedProver(
18376            &self,
18377        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
18378            self.call_builder(&permissionedProverCall)
18379        }
18380        ///Creates a new call builder for the [`proxiableUUID`] function.
18381        pub fn proxiableUUID(
18382            &self,
18383        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
18384            self.call_builder(&proxiableUUIDCall)
18385        }
18386        ///Creates a new call builder for the [`renounceOwnership`] function.
18387        pub fn renounceOwnership(
18388            &self,
18389        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
18390            self.call_builder(&renounceOwnershipCall)
18391        }
18392        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
18393        pub fn setBlocksPerEpoch(
18394            &self,
18395            newBlocksPerEpoch: u64,
18396        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
18397            self.call_builder(
18398                &setBlocksPerEpochCall {
18399                    newBlocksPerEpoch,
18400                },
18401            )
18402        }
18403        ///Creates a new call builder for the [`setFinalizedState`] function.
18404        pub fn setFinalizedState(
18405            &self,
18406            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18407        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
18408            self.call_builder(&setFinalizedStateCall { state })
18409        }
18410        ///Creates a new call builder for the [`setHotShotDownSince`] function.
18411        pub fn setHotShotDownSince(
18412            &self,
18413            l1Height: alloy::sol_types::private::primitives::aliases::U256,
18414        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
18415            self.call_builder(
18416                &setHotShotDownSinceCall {
18417                    l1Height,
18418                },
18419            )
18420        }
18421        ///Creates a new call builder for the [`setHotShotUp`] function.
18422        pub fn setHotShotUp(
18423            &self,
18424        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
18425            self.call_builder(&setHotShotUpCall)
18426        }
18427        ///Creates a new call builder for the [`setPermissionedProver`] function.
18428        pub fn setPermissionedProver(
18429            &self,
18430            prover: alloy::sol_types::private::Address,
18431        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
18432            self.call_builder(
18433                &setPermissionedProverCall {
18434                    prover,
18435                },
18436            )
18437        }
18438        ///Creates a new call builder for the [`setStateHistory`] function.
18439        pub fn setStateHistory(
18440            &self,
18441            _stateHistoryCommitments: alloy::sol_types::private::Vec<
18442                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
18443            >,
18444        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
18445            self.call_builder(
18446                &setStateHistoryCall {
18447                    _stateHistoryCommitments,
18448                },
18449            )
18450        }
18451        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
18452        pub fn setStateHistoryRetentionPeriod(
18453            &self,
18454            historySeconds: u32,
18455        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
18456            self.call_builder(
18457                &setStateHistoryRetentionPeriodCall {
18458                    historySeconds,
18459                },
18460            )
18461        }
18462        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
18463        pub fn setVotingStakeTableState(
18464            &self,
18465            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18466        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
18467            self.call_builder(
18468                &setVotingStakeTableStateCall {
18469                    stake,
18470                },
18471            )
18472        }
18473        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
18474        pub fn setstateHistoryRetentionPeriod(
18475            &self,
18476            historySeconds: u32,
18477        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
18478            self.call_builder(
18479                &setstateHistoryRetentionPeriodCall {
18480                    historySeconds,
18481                },
18482            )
18483        }
18484        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
18485        pub fn stateHistoryCommitments(
18486            &self,
18487            _0: alloy::sol_types::private::primitives::aliases::U256,
18488        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
18489            self.call_builder(&stateHistoryCommitmentsCall(_0))
18490        }
18491        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
18492        pub fn stateHistoryFirstIndex(
18493            &self,
18494        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
18495            self.call_builder(&stateHistoryFirstIndexCall)
18496        }
18497        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
18498        pub fn stateHistoryRetentionPeriod(
18499            &self,
18500        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
18501            self.call_builder(&stateHistoryRetentionPeriodCall)
18502        }
18503        ///Creates a new call builder for the [`transferOwnership`] function.
18504        pub fn transferOwnership(
18505            &self,
18506            newOwner: alloy::sol_types::private::Address,
18507        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
18508            self.call_builder(&transferOwnershipCall { newOwner })
18509        }
18510        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
18511        pub fn updateEpochStartBlock(
18512            &self,
18513            newEpochStartBlock: u64,
18514        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
18515            self.call_builder(
18516                &updateEpochStartBlockCall {
18517                    newEpochStartBlock,
18518                },
18519            )
18520        }
18521        ///Creates a new call builder for the [`upgradeToAndCall`] function.
18522        pub fn upgradeToAndCall(
18523            &self,
18524            newImplementation: alloy::sol_types::private::Address,
18525            data: alloy::sol_types::private::Bytes,
18526        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
18527            self.call_builder(
18528                &upgradeToAndCallCall {
18529                    newImplementation,
18530                    data,
18531                },
18532            )
18533        }
18534        ///Creates a new call builder for the [`votingStakeTableState`] function.
18535        pub fn votingStakeTableState(
18536            &self,
18537        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
18538            self.call_builder(&votingStakeTableStateCall)
18539        }
18540    }
18541    /// Event filters.
18542    impl<
18543        P: alloy_contract::private::Provider<N>,
18544        N: alloy_contract::private::Network,
18545    > LightClientV2MockInstance<P, N> {
18546        /// Creates a new event filter using this contract instance's provider and address.
18547        ///
18548        /// Note that the type can be any event, not just those defined in this contract.
18549        /// Prefer using the other methods for building type-safe event filters.
18550        pub fn event_filter<E: alloy_sol_types::SolEvent>(
18551            &self,
18552        ) -> alloy_contract::Event<&P, E, N> {
18553            alloy_contract::Event::new_sol(&self.provider, &self.address)
18554        }
18555        ///Creates a new event filter for the [`Initialized`] event.
18556        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
18557            self.event_filter::<Initialized>()
18558        }
18559        ///Creates a new event filter for the [`NewEpoch`] event.
18560        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
18561            self.event_filter::<NewEpoch>()
18562        }
18563        ///Creates a new event filter for the [`NewState`] event.
18564        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
18565            self.event_filter::<NewState>()
18566        }
18567        ///Creates a new event filter for the [`OwnershipTransferred`] event.
18568        pub fn OwnershipTransferred_filter(
18569            &self,
18570        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
18571            self.event_filter::<OwnershipTransferred>()
18572        }
18573        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
18574        pub fn PermissionedProverNotRequired_filter(
18575            &self,
18576        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
18577            self.event_filter::<PermissionedProverNotRequired>()
18578        }
18579        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
18580        pub fn PermissionedProverRequired_filter(
18581            &self,
18582        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
18583            self.event_filter::<PermissionedProverRequired>()
18584        }
18585        ///Creates a new event filter for the [`Upgrade`] event.
18586        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
18587            self.event_filter::<Upgrade>()
18588        }
18589        ///Creates a new event filter for the [`Upgraded`] event.
18590        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
18591            self.event_filter::<Upgraded>()
18592        }
18593    }
18594}