Skip to main content

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!(BaseField);
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!(ScalarField);
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(Default, Debug, PartialEq, Eq, Hash)]
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(Default, Debug, PartialEq, Eq, Hash)]
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    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161385b6100f95f395f8181611c7c01528181611ca50152611e22015261385b5ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a07565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a20565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a37565b34801561036f575f5ffd5b5061027761037e366004612c4e565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f32565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c4e565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a20565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c4e565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c4e565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f79565b6111a6565b61027761055e366004612f92565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613078565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613092565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a20565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d6565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f79565b61177a565b3480156106ea575f5ffd5b506102776106f93660046130fe565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613153565b34801561079b575f5ffd5b506102776107aa3660046130d6565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd366004613188565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a2565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a07565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c2565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132ce565b6110fc9190613301565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613301565b6001600160401b031615806111a05750600a5461117b906005906001600160401b031661332e565b600a546001600160401b0391821691611195911684613301565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f51602061382f5f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef838361332e565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132ce565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132ce565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334d565b8154811061160457611604613360565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613360565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613360565b905f5260205f20906002020160010154600982815481106116cf576116cf613360565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613301565b6001600160401b03165f036117655761175e8284613374565b90506111a0565b61176f8284613374565b61175e9060016132ce565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334d565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613360565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f51602061382f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a1565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f51602061382f5f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129a8565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359a565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137ba565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613360565b5f91825260209091206002909102015461208290600160401b90046001600160401b03168461332e565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613360565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137d9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613360565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334d565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613360565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613360565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613803565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334d565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f51602061382f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516126339190613818565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209061126091906129c7565b604051806101600160405280600b906020820280368337509192915050565b5f5b80821115611e125780830180546001600160c01b03191681555f6001909101556002016129c9565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a17575f5ffd5b611b25826129f1565b5f60208284031215612a30575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a69604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c5e575f5ffd5b611b2582612c38565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c9e57612c9e612c67565b60405290565b604051608081016001600160401b0381118282101715612c9e57612c9e612c67565b604051601f8201601f191681016001600160401b0381118282101715612cee57612cee612c67565b604052919050565b5f60608284031215612d06575f5ffd5b604051606081016001600160401b0381118282101715612d2857612d28612c67565b604052905080612d3783612c38565b8152612d4560208401612c38565b6020820152604092830135920191909152919050565b5f60408284031215612d6b575f5ffd5b604080519081016001600160401b0381118282101715612d8d57612d8d612c67565b604052823581526020928301359281019290925250919050565b5f6104808284031215612db8575f5ffd5b612dc0612c7b565b9050612dcc8383612d5b565b8152612ddb8360408401612d5b565b6020820152612ded8360808401612d5b565b6040820152612dff8360c08401612d5b565b6060820152612e12836101008401612d5b565b6080820152612e25836101408401612d5b565b60a0820152612e38836101808401612d5b565b60c0820152612e4b836101c08401612d5b565b60e0820152612e5e836102008401612d5b565b610100820152612e72836102408401612d5b565b610120820152612e86836102808401612d5b565b610140820152612e9a836102c08401612d5b565b610160820152612eae836103008401612d5b565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f44575f5ffd5b612f4e8484612cf6565b9150612f5d8460608501612da7565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f89575f5ffd5b611b2582612f66565b5f5f60408385031215612fa3575f5ffd5b612fac836129f1565b915060208301356001600160401b03811115612fc6575f5ffd5b8301601f81018513612fd6575f5ffd5b80356001600160401b03811115612fef57612fef612c67565b613002601f8201601f1916602001612cc6565b818152866020838501011115613016575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613045575f5ffd5b61304d612ca4565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613088575f5ffd5b611b258383613035565b5f5f5f61056084860312156130a5575f5ffd5b6130af8585612cf6565b92506130be8560608601613035565b91506130cd8560e08601612da7565b90509250925092565b5f5f604083850312156130e7575f5ffd5b6130f083612c38565b9150612f5d60208401612c38565b5f5f5f5f6101208587031215613112575f5ffd5b61311c8686612cf6565b935061312b8660608701613035565b925061313960e08601612f66565b915061314861010086016129f1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613198575f5ffd5b611b258383612cf6565b5f5f604083850312156131b3575f5ffd5b50508035926020909101359150565b5f602082840312156131d2575f5ffd5b81356001600160401b038111156131e7575f5ffd5b8201601f810184136131f7575f5ffd5b80356001600160401b0381111561321057613210612c67565b61321f60208260051b01612cc6565b8082825260208201915060208360071b850101925086831115613240575f5ffd5b6020840193505b828410156132b0576080848803121561325e575f5ffd5b613266612ca4565b61326f85612c38565b815261327d60208601612c38565b602082015261328e60408601612c38565b6040820152606085810135908201528252608090930192602090910190613247565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132ba565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613319576133196132ed565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132ba565b818103818111156111a0576111a06132ba565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338c5761338c6132ed565b806001600160401b0384160491505092915050565b5f602082840312156133b1575f5ffd5b5051919050565b805f5b600b8110156133da5781518452602093840193909101906001016133bb565b50505050565b6133f582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135cc604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a46105008301856133b8565b6137b26106608301846133e0565b949350505050565b5f602082840312156137ca575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fa576137fa6132ba565b60010192915050565b5f81613811576138116132ba565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
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*\x07V[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*7V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,NV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/2V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,NV[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,NV[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,NV[`\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/yV[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x92V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0xV[\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\x92V[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\xD6V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/yV[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xFEV[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\x90a1SV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD6V[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\x88V[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\xA2V[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*\x07V[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC2V[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\xCEV[a\x10\xFC\x91\x90a3\x01V[`\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\x01V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3.V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x01V[`\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` a8/_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\x83a3.V[`\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\xCEV[`\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\xCEV[`@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\x83a3MV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3`V[_\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\x16sa3`V[_\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\xACa3`V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3`V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\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\x01V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3tV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3tV[a\x17^\x90`\x01a2\xCEV[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\x90a3MV[\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\x95a3`V[` \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` a8/_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\xA1V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a8/_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)\xA8V[\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\x9AV[` `@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\xBAV[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 Xa3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3.V[`\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 \xBAa3`V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \xFA\x83a7\xD9V[\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#\x85a3`V[_\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\x85a3MV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x03V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3MV[\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` a8/_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\x18V[_`@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` _ \x90a\x12`\x91\x90a)\xC7V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x1E\x12W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a)\xC9V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x17W__\xFD[a\x1B%\x82a)\xF1V[_` \x82\x84\x03\x12\x15a*0W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*i`@\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,8V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x9EWa,\x9Ea,gV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x9EWa,\x9Ea,gV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xEEWa,\xEEa,gV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x06W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-(Wa-(a,gV[`@R\x90P\x80a-7\x83a,8V[\x81Ra-E` \x84\x01a,8V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-kW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8DWa-\x8Da,gV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xB8W__\xFD[a-\xC0a,{V[\x90Pa-\xCC\x83\x83a-[V[\x81Ra-\xDB\x83`@\x84\x01a-[V[` \x82\x01Ra-\xED\x83`\x80\x84\x01a-[V[`@\x82\x01Ra-\xFF\x83`\xC0\x84\x01a-[V[``\x82\x01Ra.\x12\x83a\x01\0\x84\x01a-[V[`\x80\x82\x01Ra.%\x83a\x01@\x84\x01a-[V[`\xA0\x82\x01Ra.8\x83a\x01\x80\x84\x01a-[V[`\xC0\x82\x01Ra.K\x83a\x01\xC0\x84\x01a-[V[`\xE0\x82\x01Ra.^\x83a\x02\0\x84\x01a-[V[a\x01\0\x82\x01Ra.r\x83a\x02@\x84\x01a-[V[a\x01 \x82\x01Ra.\x86\x83a\x02\x80\x84\x01a-[V[a\x01@\x82\x01Ra.\x9A\x83a\x02\xC0\x84\x01a-[V[a\x01`\x82\x01Ra.\xAE\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/DW__\xFD[a/N\x84\x84a,\xF6V[\x91Pa/]\x84``\x85\x01a-\xA7V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x89W__\xFD[a\x1B%\x82a/fV[__`@\x83\x85\x03\x12\x15a/\xA3W__\xFD[a/\xAC\x83a)\xF1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xEFWa/\xEFa,gV[a0\x02`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC6V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x16W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0EW__\xFD[a0Ma,\xA4V[\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\x88W__\xFD[a\x1B%\x83\x83a05V[___a\x05`\x84\x86\x03\x12\x15a0\xA5W__\xFD[a0\xAF\x85\x85a,\xF6V[\x92Pa0\xBE\x85``\x86\x01a05V[\x91Pa0\xCD\x85`\xE0\x86\x01a-\xA7V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE7W__\xFD[a0\xF0\x83a,8V[\x91Pa/]` \x84\x01a,8V[____a\x01 \x85\x87\x03\x12\x15a1\x12W__\xFD[a1\x1C\x86\x86a,\xF6V[\x93Pa1+\x86``\x87\x01a05V[\x92Pa19`\xE0\x86\x01a/fV[\x91Pa1Ha\x01\0\x86\x01a)\xF1V[\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\x98W__\xFD[a\x1B%\x83\x83a,\xF6V[__`@\x83\x85\x03\x12\x15a1\xB3W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE7W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF7W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x10Wa2\x10a,gV[a2\x1F` \x82`\x05\x1B\x01a,\xC6V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2@W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB0W`\x80\x84\x88\x03\x12\x15a2^W__\xFD[a2fa,\xA4V[a2o\x85a,8V[\x81Ra2}` \x86\x01a,8V[` \x82\x01Ra2\x8E`@\x86\x01a,8V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2GV[\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\xBAV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x19Wa3\x19a2\xEDV[\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\xBAV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBAV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8CWa3\x8Ca2\xEDV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB1W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBBV[PPPPV[a3\xF5\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\xCC`@\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\xA4a\x05\0\x83\x01\x85a3\xB8V[a7\xB2a\x06`\x83\x01\x84a3\xE0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFAWa7\xFAa2\xBAV[`\x01\x01\x92\x91PPV[_\x81a8\x11Wa8\x11a2\xBAV[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#\0\n",
5363    );
5364    /// The runtime bytecode of the contract, as deployed on the network.
5365    ///
5366    /// ```text
5367    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a07565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a20565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a37565b34801561036f575f5ffd5b5061027761037e366004612c4e565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f32565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c4e565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a20565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c4e565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c4e565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f79565b6111a6565b61027761055e366004612f92565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613078565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613092565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a20565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d6565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f79565b61177a565b3480156106ea575f5ffd5b506102776106f93660046130fe565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613153565b34801561079b575f5ffd5b506102776107aa3660046130d6565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd366004613188565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a2565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a07565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c2565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132ce565b6110fc9190613301565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613301565b6001600160401b031615806111a05750600a5461117b906005906001600160401b031661332e565b600a546001600160401b0391821691611195911684613301565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f51602061382f5f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef838361332e565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132ce565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132ce565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334d565b8154811061160457611604613360565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613360565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613360565b905f5260205f20906002020160010154600982815481106116cf576116cf613360565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613301565b6001600160401b03165f036117655761175e8284613374565b90506111a0565b61176f8284613374565b61175e9060016132ce565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334d565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613360565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f51602061382f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a1565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f51602061382f5f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129a8565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359a565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137ba565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613360565b5f91825260209091206002909102015461208290600160401b90046001600160401b03168461332e565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613360565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137d9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613360565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334d565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613360565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613360565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613803565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334d565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f51602061382f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516126339190613818565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209061126091906129c7565b604051806101600160405280600b906020820280368337509192915050565b5f5b80821115611e125780830180546001600160c01b03191681555f6001909101556002016129c9565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a17575f5ffd5b611b25826129f1565b5f60208284031215612a30575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a69604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c5e575f5ffd5b611b2582612c38565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c9e57612c9e612c67565b60405290565b604051608081016001600160401b0381118282101715612c9e57612c9e612c67565b604051601f8201601f191681016001600160401b0381118282101715612cee57612cee612c67565b604052919050565b5f60608284031215612d06575f5ffd5b604051606081016001600160401b0381118282101715612d2857612d28612c67565b604052905080612d3783612c38565b8152612d4560208401612c38565b6020820152604092830135920191909152919050565b5f60408284031215612d6b575f5ffd5b604080519081016001600160401b0381118282101715612d8d57612d8d612c67565b604052823581526020928301359281019290925250919050565b5f6104808284031215612db8575f5ffd5b612dc0612c7b565b9050612dcc8383612d5b565b8152612ddb8360408401612d5b565b6020820152612ded8360808401612d5b565b6040820152612dff8360c08401612d5b565b6060820152612e12836101008401612d5b565b6080820152612e25836101408401612d5b565b60a0820152612e38836101808401612d5b565b60c0820152612e4b836101c08401612d5b565b60e0820152612e5e836102008401612d5b565b610100820152612e72836102408401612d5b565b610120820152612e86836102808401612d5b565b610140820152612e9a836102c08401612d5b565b610160820152612eae836103008401612d5b565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f44575f5ffd5b612f4e8484612cf6565b9150612f5d8460608501612da7565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f89575f5ffd5b611b2582612f66565b5f5f60408385031215612fa3575f5ffd5b612fac836129f1565b915060208301356001600160401b03811115612fc6575f5ffd5b8301601f81018513612fd6575f5ffd5b80356001600160401b03811115612fef57612fef612c67565b613002601f8201601f1916602001612cc6565b818152866020838501011115613016575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613045575f5ffd5b61304d612ca4565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613088575f5ffd5b611b258383613035565b5f5f5f61056084860312156130a5575f5ffd5b6130af8585612cf6565b92506130be8560608601613035565b91506130cd8560e08601612da7565b90509250925092565b5f5f604083850312156130e7575f5ffd5b6130f083612c38565b9150612f5d60208401612c38565b5f5f5f5f6101208587031215613112575f5ffd5b61311c8686612cf6565b935061312b8660608701613035565b925061313960e08601612f66565b915061314861010086016129f1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613198575f5ffd5b611b258383612cf6565b5f5f604083850312156131b3575f5ffd5b50508035926020909101359150565b5f602082840312156131d2575f5ffd5b81356001600160401b038111156131e7575f5ffd5b8201601f810184136131f7575f5ffd5b80356001600160401b0381111561321057613210612c67565b61321f60208260051b01612cc6565b8082825260208201915060208360071b850101925086831115613240575f5ffd5b6020840193505b828410156132b0576080848803121561325e575f5ffd5b613266612ca4565b61326f85612c38565b815261327d60208601612c38565b602082015261328e60408601612c38565b6040820152606085810135908201528252608090930192602090910190613247565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132ba565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613319576133196132ed565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132ba565b818103818111156111a0576111a06132ba565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338c5761338c6132ed565b806001600160401b0384160491505092915050565b5f602082840312156133b1575f5ffd5b5051919050565b805f5b600b8110156133da5781518452602093840193909101906001016133bb565b50505050565b6133f582825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135cc604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a46105008301856133b8565b6137b26106608301846133e0565b949350505050565b5f602082840312156137ca575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fa576137fa6132ba565b60010192915050565b5f81613811576138116132ba565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c6343000823000a
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*\x07V[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*7V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,NV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/2V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,NV[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,NV[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,NV[`\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/yV[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x92V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0xV[\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\x92V[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\xD6V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/yV[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xFEV[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\x90a1SV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD6V[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\x88V[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\xA2V[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*\x07V[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC2V[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\xCEV[a\x10\xFC\x91\x90a3\x01V[`\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\x01V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3.V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x01V[`\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` a8/_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\x83a3.V[`\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\xCEV[`\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\xCEV[`@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\x83a3MV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3`V[_\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\x16sa3`V[_\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\xACa3`V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3`V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\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\x01V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3tV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3tV[a\x17^\x90`\x01a2\xCEV[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\x90a3MV[\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\x95a3`V[` \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` a8/_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\xA1V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a8/_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)\xA8V[\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\x9AV[` `@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\xBAV[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 Xa3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3.V[`\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 \xBAa3`V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \xFA\x83a7\xD9V[\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#\x85a3`V[_\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\x85a3MV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3`V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x03V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3MV[\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` a8/_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\x18V[_`@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` _ \x90a\x12`\x91\x90a)\xC7V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x1E\x12W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a)\xC9V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x17W__\xFD[a\x1B%\x82a)\xF1V[_` \x82\x84\x03\x12\x15a*0W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*i`@\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,8V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x9EWa,\x9Ea,gV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x9EWa,\x9Ea,gV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xEEWa,\xEEa,gV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x06W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-(Wa-(a,gV[`@R\x90P\x80a-7\x83a,8V[\x81Ra-E` \x84\x01a,8V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-kW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8DWa-\x8Da,gV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xB8W__\xFD[a-\xC0a,{V[\x90Pa-\xCC\x83\x83a-[V[\x81Ra-\xDB\x83`@\x84\x01a-[V[` \x82\x01Ra-\xED\x83`\x80\x84\x01a-[V[`@\x82\x01Ra-\xFF\x83`\xC0\x84\x01a-[V[``\x82\x01Ra.\x12\x83a\x01\0\x84\x01a-[V[`\x80\x82\x01Ra.%\x83a\x01@\x84\x01a-[V[`\xA0\x82\x01Ra.8\x83a\x01\x80\x84\x01a-[V[`\xC0\x82\x01Ra.K\x83a\x01\xC0\x84\x01a-[V[`\xE0\x82\x01Ra.^\x83a\x02\0\x84\x01a-[V[a\x01\0\x82\x01Ra.r\x83a\x02@\x84\x01a-[V[a\x01 \x82\x01Ra.\x86\x83a\x02\x80\x84\x01a-[V[a\x01@\x82\x01Ra.\x9A\x83a\x02\xC0\x84\x01a-[V[a\x01`\x82\x01Ra.\xAE\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/DW__\xFD[a/N\x84\x84a,\xF6V[\x91Pa/]\x84``\x85\x01a-\xA7V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x89W__\xFD[a\x1B%\x82a/fV[__`@\x83\x85\x03\x12\x15a/\xA3W__\xFD[a/\xAC\x83a)\xF1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC6W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xEFWa/\xEFa,gV[a0\x02`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC6V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x16W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0EW__\xFD[a0Ma,\xA4V[\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\x88W__\xFD[a\x1B%\x83\x83a05V[___a\x05`\x84\x86\x03\x12\x15a0\xA5W__\xFD[a0\xAF\x85\x85a,\xF6V[\x92Pa0\xBE\x85``\x86\x01a05V[\x91Pa0\xCD\x85`\xE0\x86\x01a-\xA7V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE7W__\xFD[a0\xF0\x83a,8V[\x91Pa/]` \x84\x01a,8V[____a\x01 \x85\x87\x03\x12\x15a1\x12W__\xFD[a1\x1C\x86\x86a,\xF6V[\x93Pa1+\x86``\x87\x01a05V[\x92Pa19`\xE0\x86\x01a/fV[\x91Pa1Ha\x01\0\x86\x01a)\xF1V[\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\x98W__\xFD[a\x1B%\x83\x83a,\xF6V[__`@\x83\x85\x03\x12\x15a1\xB3W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE7W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF7W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x10Wa2\x10a,gV[a2\x1F` \x82`\x05\x1B\x01a,\xC6V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2@W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB0W`\x80\x84\x88\x03\x12\x15a2^W__\xFD[a2fa,\xA4V[a2o\x85a,8V[\x81Ra2}` \x86\x01a,8V[` \x82\x01Ra2\x8E`@\x86\x01a,8V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2GV[\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\xBAV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x19Wa3\x19a2\xEDV[\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\xBAV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBAV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8CWa3\x8Ca2\xEDV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB1W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBBV[PPPPV[a3\xF5\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\xCC`@\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\xA4a\x05\0\x83\x01\x85a3\xB8V[a7\xB2a\x06`\x83\x01\x84a3\xE0V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCAW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFAWa7\xFAa2\xBAV[`\x01\x01\x92\x91PPV[_\x81a8\x11Wa8\x11a2\xBAV[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#\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::abi_decode_raw_with_config(
5449                    data,
5450                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5451                )
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::abi_decode_raw_with_config(
5523                    data,
5524                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5525                )
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::abi_decode_raw_with_config(
5606                    data,
5607                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5608                )
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::abi_decode_raw_with_config(
5680                    data,
5681                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5682                )
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::abi_decode_raw_with_config(
5754                    data,
5755                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5756                )
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::abi_decode_raw_with_config(
5830                    data,
5831                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5832                )
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::abi_decode_raw_with_config(
5904                    data,
5905                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5906                )
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::abi_decode_raw_with_config(
5978                    data,
5979                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5980                )
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::abi_decode_raw_with_config(
6054                    data,
6055                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6056                )
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::abi_decode_raw_with_config(
6128                    data,
6129                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6130                )
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::abi_decode_raw_with_config(
6202                    data,
6203                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6204                )
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::abi_decode_raw_with_config(
6276                    data,
6277                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6278                )
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::abi_decode_raw_with_config(
6350                    data,
6351                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6352                )
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::abi_decode_raw_with_config(
6424                    data,
6425                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6426                )
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::abi_decode_raw_with_config(
6498                    data,
6499                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6500                )
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::abi_decode_raw_with_config(
6572                    data,
6573                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6574                )
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::abi_decode_raw_with_config(
6646                    data,
6647                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6648                )
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::abi_decode_raw_with_config(
6727                    data,
6728                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6729                )
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::abi_decode_raw_with_config(
6810                    data,
6811                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6812                )
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::abi_decode_raw_with_config(
6886                    data,
6887                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6888                )
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::abi_decode_raw_with_config(
6960                    data,
6961                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6962                )
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::abi_decode_raw_with_config(
7036                    data,
7037                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7038                )
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::abi_decode_raw_with_config(
7119                    data,
7120                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7121                )
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::abi_decode_raw_with_config(
7193                    data,
7194                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7195                )
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_with_config(
8212                data: &[u8],
8213                config: alloy_sol_types::abi::AbiDecoderConfig,
8214            ) -> alloy_sol_types::Result<Self::Return> {
8215                <Self::ReturnTuple<
8216                    '_,
8217                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8218                        data,
8219                        config,
8220                    )
8221                    .map(|r| {
8222                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8223                        r._0
8224                    })
8225            }
8226            #[inline]
8227            fn abi_decode_returns_validate(
8228                data: &[u8],
8229            ) -> alloy_sol_types::Result<Self::Return> {
8230                Self::abi_decode_returns_with_config(
8231                    data,
8232                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8233                )
8234            }
8235        }
8236    };
8237    #[derive(serde::Serialize, serde::Deserialize)]
8238    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8239    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8240```solidity
8241function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8242```*/
8243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8244    #[derive(Clone)]
8245    pub struct _getVkCall;
8246    #[derive(serde::Serialize, serde::Deserialize)]
8247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8248    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8250    #[derive(Clone)]
8251    pub struct _getVkReturn {
8252        #[allow(missing_docs)]
8253        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8254    }
8255    #[allow(
8256        non_camel_case_types,
8257        non_snake_case,
8258        clippy::pub_underscore_fields,
8259        clippy::style
8260    )]
8261    const _: () = {
8262        use alloy::sol_types as alloy_sol_types;
8263        {
8264            #[doc(hidden)]
8265            #[allow(dead_code)]
8266            type UnderlyingSolTuple<'a> = ();
8267            #[doc(hidden)]
8268            type UnderlyingRustTuple<'a> = ();
8269            #[cfg(test)]
8270            #[allow(dead_code, unreachable_patterns)]
8271            fn _type_assertion(
8272                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8273            ) {
8274                match _t {
8275                    alloy_sol_types::private::AssertTypeEq::<
8276                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8277                    >(_) => {}
8278                }
8279            }
8280            #[automatically_derived]
8281            #[doc(hidden)]
8282            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8283                fn from(value: _getVkCall) -> Self {
8284                    ()
8285                }
8286            }
8287            #[automatically_derived]
8288            #[doc(hidden)]
8289            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8290                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8291                    Self
8292                }
8293            }
8294        }
8295        {
8296            #[doc(hidden)]
8297            #[allow(dead_code)]
8298            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8299            #[doc(hidden)]
8300            type UnderlyingRustTuple<'a> = (
8301                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8302            );
8303            #[cfg(test)]
8304            #[allow(dead_code, unreachable_patterns)]
8305            fn _type_assertion(
8306                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8307            ) {
8308                match _t {
8309                    alloy_sol_types::private::AssertTypeEq::<
8310                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8311                    >(_) => {}
8312                }
8313            }
8314            #[automatically_derived]
8315            #[doc(hidden)]
8316            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8317                fn from(value: _getVkReturn) -> Self {
8318                    (value.vk,)
8319                }
8320            }
8321            #[automatically_derived]
8322            #[doc(hidden)]
8323            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8325                    Self { vk: tuple.0 }
8326                }
8327            }
8328        }
8329        #[automatically_derived]
8330        impl alloy_sol_types::SolCall for _getVkCall {
8331            type Parameters<'a> = ();
8332            type Token<'a> = <Self::Parameters<
8333                'a,
8334            > as alloy_sol_types::SolType>::Token<'a>;
8335            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8336            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8337            type ReturnToken<'a> = <Self::ReturnTuple<
8338                'a,
8339            > as alloy_sol_types::SolType>::Token<'a>;
8340            const SIGNATURE: &'static str = "_getVk()";
8341            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8342            #[inline]
8343            fn new<'a>(
8344                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8345            ) -> Self {
8346                tuple.into()
8347            }
8348            #[inline]
8349            fn tokenize(&self) -> Self::Token<'_> {
8350                ()
8351            }
8352            #[inline]
8353            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8354                (
8355                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8356                        ret,
8357                    ),
8358                )
8359            }
8360            #[inline]
8361            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8362                <Self::ReturnTuple<
8363                    '_,
8364                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8365                    .map(|r| {
8366                        let r: _getVkReturn = r.into();
8367                        r.vk
8368                    })
8369            }
8370            #[inline]
8371            fn abi_decode_returns_with_config(
8372                data: &[u8],
8373                config: alloy_sol_types::abi::AbiDecoderConfig,
8374            ) -> alloy_sol_types::Result<Self::Return> {
8375                <Self::ReturnTuple<
8376                    '_,
8377                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8378                        data,
8379                        config,
8380                    )
8381                    .map(|r| {
8382                        let r: _getVkReturn = r.into();
8383                        r.vk
8384                    })
8385            }
8386            #[inline]
8387            fn abi_decode_returns_validate(
8388                data: &[u8],
8389            ) -> alloy_sol_types::Result<Self::Return> {
8390                Self::abi_decode_returns_with_config(
8391                    data,
8392                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8393                )
8394            }
8395        }
8396    };
8397    #[derive(serde::Serialize, serde::Deserialize)]
8398    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8399    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8400```solidity
8401function blocksPerEpoch() external view returns (uint64);
8402```*/
8403    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8404    #[derive(Clone)]
8405    pub struct blocksPerEpochCall;
8406    #[derive(serde::Serialize, serde::Deserialize)]
8407    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8408    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8409    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8410    #[derive(Clone)]
8411    pub struct blocksPerEpochReturn {
8412        #[allow(missing_docs)]
8413        pub _0: u64,
8414    }
8415    #[allow(
8416        non_camel_case_types,
8417        non_snake_case,
8418        clippy::pub_underscore_fields,
8419        clippy::style
8420    )]
8421    const _: () = {
8422        use alloy::sol_types as alloy_sol_types;
8423        {
8424            #[doc(hidden)]
8425            #[allow(dead_code)]
8426            type UnderlyingSolTuple<'a> = ();
8427            #[doc(hidden)]
8428            type UnderlyingRustTuple<'a> = ();
8429            #[cfg(test)]
8430            #[allow(dead_code, unreachable_patterns)]
8431            fn _type_assertion(
8432                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8433            ) {
8434                match _t {
8435                    alloy_sol_types::private::AssertTypeEq::<
8436                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8437                    >(_) => {}
8438                }
8439            }
8440            #[automatically_derived]
8441            #[doc(hidden)]
8442            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8443                fn from(value: blocksPerEpochCall) -> Self {
8444                    ()
8445                }
8446            }
8447            #[automatically_derived]
8448            #[doc(hidden)]
8449            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8451                    Self
8452                }
8453            }
8454        }
8455        {
8456            #[doc(hidden)]
8457            #[allow(dead_code)]
8458            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8459            #[doc(hidden)]
8460            type UnderlyingRustTuple<'a> = (u64,);
8461            #[cfg(test)]
8462            #[allow(dead_code, unreachable_patterns)]
8463            fn _type_assertion(
8464                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8465            ) {
8466                match _t {
8467                    alloy_sol_types::private::AssertTypeEq::<
8468                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8469                    >(_) => {}
8470                }
8471            }
8472            #[automatically_derived]
8473            #[doc(hidden)]
8474            impl ::core::convert::From<blocksPerEpochReturn>
8475            for UnderlyingRustTuple<'_> {
8476                fn from(value: blocksPerEpochReturn) -> Self {
8477                    (value._0,)
8478                }
8479            }
8480            #[automatically_derived]
8481            #[doc(hidden)]
8482            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8483            for blocksPerEpochReturn {
8484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8485                    Self { _0: tuple.0 }
8486                }
8487            }
8488        }
8489        #[automatically_derived]
8490        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8491            type Parameters<'a> = ();
8492            type Token<'a> = <Self::Parameters<
8493                'a,
8494            > as alloy_sol_types::SolType>::Token<'a>;
8495            type Return = u64;
8496            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8497            type ReturnToken<'a> = <Self::ReturnTuple<
8498                'a,
8499            > as alloy_sol_types::SolType>::Token<'a>;
8500            const SIGNATURE: &'static str = "blocksPerEpoch()";
8501            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8502            #[inline]
8503            fn new<'a>(
8504                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8505            ) -> Self {
8506                tuple.into()
8507            }
8508            #[inline]
8509            fn tokenize(&self) -> Self::Token<'_> {
8510                ()
8511            }
8512            #[inline]
8513            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8514                (
8515                    <alloy::sol_types::sol_data::Uint<
8516                        64,
8517                    > as alloy_sol_types::SolType>::tokenize(ret),
8518                )
8519            }
8520            #[inline]
8521            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8522                <Self::ReturnTuple<
8523                    '_,
8524                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8525                    .map(|r| {
8526                        let r: blocksPerEpochReturn = r.into();
8527                        r._0
8528                    })
8529            }
8530            #[inline]
8531            fn abi_decode_returns_with_config(
8532                data: &[u8],
8533                config: alloy_sol_types::abi::AbiDecoderConfig,
8534            ) -> alloy_sol_types::Result<Self::Return> {
8535                <Self::ReturnTuple<
8536                    '_,
8537                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8538                        data,
8539                        config,
8540                    )
8541                    .map(|r| {
8542                        let r: blocksPerEpochReturn = r.into();
8543                        r._0
8544                    })
8545            }
8546            #[inline]
8547            fn abi_decode_returns_validate(
8548                data: &[u8],
8549            ) -> alloy_sol_types::Result<Self::Return> {
8550                Self::abi_decode_returns_with_config(
8551                    data,
8552                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8553                )
8554            }
8555        }
8556    };
8557    #[derive(serde::Serialize, serde::Deserialize)]
8558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8559    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8560```solidity
8561function currentBlockNumber() external view returns (uint256);
8562```*/
8563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8564    #[derive(Clone)]
8565    pub struct currentBlockNumberCall;
8566    #[derive(serde::Serialize, serde::Deserialize)]
8567    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8568    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8570    #[derive(Clone)]
8571    pub struct currentBlockNumberReturn {
8572        #[allow(missing_docs)]
8573        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8574    }
8575    #[allow(
8576        non_camel_case_types,
8577        non_snake_case,
8578        clippy::pub_underscore_fields,
8579        clippy::style
8580    )]
8581    const _: () = {
8582        use alloy::sol_types as alloy_sol_types;
8583        {
8584            #[doc(hidden)]
8585            #[allow(dead_code)]
8586            type UnderlyingSolTuple<'a> = ();
8587            #[doc(hidden)]
8588            type UnderlyingRustTuple<'a> = ();
8589            #[cfg(test)]
8590            #[allow(dead_code, unreachable_patterns)]
8591            fn _type_assertion(
8592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8593            ) {
8594                match _t {
8595                    alloy_sol_types::private::AssertTypeEq::<
8596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8597                    >(_) => {}
8598                }
8599            }
8600            #[automatically_derived]
8601            #[doc(hidden)]
8602            impl ::core::convert::From<currentBlockNumberCall>
8603            for UnderlyingRustTuple<'_> {
8604                fn from(value: currentBlockNumberCall) -> Self {
8605                    ()
8606                }
8607            }
8608            #[automatically_derived]
8609            #[doc(hidden)]
8610            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8611            for currentBlockNumberCall {
8612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8613                    Self
8614                }
8615            }
8616        }
8617        {
8618            #[doc(hidden)]
8619            #[allow(dead_code)]
8620            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8621            #[doc(hidden)]
8622            type UnderlyingRustTuple<'a> = (
8623                alloy::sol_types::private::primitives::aliases::U256,
8624            );
8625            #[cfg(test)]
8626            #[allow(dead_code, unreachable_patterns)]
8627            fn _type_assertion(
8628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8629            ) {
8630                match _t {
8631                    alloy_sol_types::private::AssertTypeEq::<
8632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8633                    >(_) => {}
8634                }
8635            }
8636            #[automatically_derived]
8637            #[doc(hidden)]
8638            impl ::core::convert::From<currentBlockNumberReturn>
8639            for UnderlyingRustTuple<'_> {
8640                fn from(value: currentBlockNumberReturn) -> Self {
8641                    (value._0,)
8642                }
8643            }
8644            #[automatically_derived]
8645            #[doc(hidden)]
8646            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8647            for currentBlockNumberReturn {
8648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8649                    Self { _0: tuple.0 }
8650                }
8651            }
8652        }
8653        #[automatically_derived]
8654        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8655            type Parameters<'a> = ();
8656            type Token<'a> = <Self::Parameters<
8657                'a,
8658            > as alloy_sol_types::SolType>::Token<'a>;
8659            type Return = alloy::sol_types::private::primitives::aliases::U256;
8660            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8661            type ReturnToken<'a> = <Self::ReturnTuple<
8662                'a,
8663            > as alloy_sol_types::SolType>::Token<'a>;
8664            const SIGNATURE: &'static str = "currentBlockNumber()";
8665            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8666            #[inline]
8667            fn new<'a>(
8668                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8669            ) -> Self {
8670                tuple.into()
8671            }
8672            #[inline]
8673            fn tokenize(&self) -> Self::Token<'_> {
8674                ()
8675            }
8676            #[inline]
8677            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8678                (
8679                    <alloy::sol_types::sol_data::Uint<
8680                        256,
8681                    > as alloy_sol_types::SolType>::tokenize(ret),
8682                )
8683            }
8684            #[inline]
8685            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8686                <Self::ReturnTuple<
8687                    '_,
8688                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8689                    .map(|r| {
8690                        let r: currentBlockNumberReturn = r.into();
8691                        r._0
8692                    })
8693            }
8694            #[inline]
8695            fn abi_decode_returns_with_config(
8696                data: &[u8],
8697                config: alloy_sol_types::abi::AbiDecoderConfig,
8698            ) -> alloy_sol_types::Result<Self::Return> {
8699                <Self::ReturnTuple<
8700                    '_,
8701                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8702                        data,
8703                        config,
8704                    )
8705                    .map(|r| {
8706                        let r: currentBlockNumberReturn = r.into();
8707                        r._0
8708                    })
8709            }
8710            #[inline]
8711            fn abi_decode_returns_validate(
8712                data: &[u8],
8713            ) -> alloy_sol_types::Result<Self::Return> {
8714                Self::abi_decode_returns_with_config(
8715                    data,
8716                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8717                )
8718            }
8719        }
8720    };
8721    #[derive(serde::Serialize, serde::Deserialize)]
8722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8723    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8724```solidity
8725function currentEpoch() external view returns (uint64);
8726```*/
8727    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8728    #[derive(Clone)]
8729    pub struct currentEpochCall;
8730    #[derive(serde::Serialize, serde::Deserialize)]
8731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8732    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8733    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8734    #[derive(Clone)]
8735    pub struct currentEpochReturn {
8736        #[allow(missing_docs)]
8737        pub _0: u64,
8738    }
8739    #[allow(
8740        non_camel_case_types,
8741        non_snake_case,
8742        clippy::pub_underscore_fields,
8743        clippy::style
8744    )]
8745    const _: () = {
8746        use alloy::sol_types as alloy_sol_types;
8747        {
8748            #[doc(hidden)]
8749            #[allow(dead_code)]
8750            type UnderlyingSolTuple<'a> = ();
8751            #[doc(hidden)]
8752            type UnderlyingRustTuple<'a> = ();
8753            #[cfg(test)]
8754            #[allow(dead_code, unreachable_patterns)]
8755            fn _type_assertion(
8756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8757            ) {
8758                match _t {
8759                    alloy_sol_types::private::AssertTypeEq::<
8760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8761                    >(_) => {}
8762                }
8763            }
8764            #[automatically_derived]
8765            #[doc(hidden)]
8766            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8767                fn from(value: currentEpochCall) -> Self {
8768                    ()
8769                }
8770            }
8771            #[automatically_derived]
8772            #[doc(hidden)]
8773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8775                    Self
8776                }
8777            }
8778        }
8779        {
8780            #[doc(hidden)]
8781            #[allow(dead_code)]
8782            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8783            #[doc(hidden)]
8784            type UnderlyingRustTuple<'a> = (u64,);
8785            #[cfg(test)]
8786            #[allow(dead_code, unreachable_patterns)]
8787            fn _type_assertion(
8788                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8789            ) {
8790                match _t {
8791                    alloy_sol_types::private::AssertTypeEq::<
8792                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8793                    >(_) => {}
8794                }
8795            }
8796            #[automatically_derived]
8797            #[doc(hidden)]
8798            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8799                fn from(value: currentEpochReturn) -> Self {
8800                    (value._0,)
8801                }
8802            }
8803            #[automatically_derived]
8804            #[doc(hidden)]
8805            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8806                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8807                    Self { _0: tuple.0 }
8808                }
8809            }
8810        }
8811        #[automatically_derived]
8812        impl alloy_sol_types::SolCall for currentEpochCall {
8813            type Parameters<'a> = ();
8814            type Token<'a> = <Self::Parameters<
8815                'a,
8816            > as alloy_sol_types::SolType>::Token<'a>;
8817            type Return = u64;
8818            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8819            type ReturnToken<'a> = <Self::ReturnTuple<
8820                'a,
8821            > as alloy_sol_types::SolType>::Token<'a>;
8822            const SIGNATURE: &'static str = "currentEpoch()";
8823            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8824            #[inline]
8825            fn new<'a>(
8826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8827            ) -> Self {
8828                tuple.into()
8829            }
8830            #[inline]
8831            fn tokenize(&self) -> Self::Token<'_> {
8832                ()
8833            }
8834            #[inline]
8835            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8836                (
8837                    <alloy::sol_types::sol_data::Uint<
8838                        64,
8839                    > as alloy_sol_types::SolType>::tokenize(ret),
8840                )
8841            }
8842            #[inline]
8843            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8844                <Self::ReturnTuple<
8845                    '_,
8846                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8847                    .map(|r| {
8848                        let r: currentEpochReturn = r.into();
8849                        r._0
8850                    })
8851            }
8852            #[inline]
8853            fn abi_decode_returns_with_config(
8854                data: &[u8],
8855                config: alloy_sol_types::abi::AbiDecoderConfig,
8856            ) -> alloy_sol_types::Result<Self::Return> {
8857                <Self::ReturnTuple<
8858                    '_,
8859                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8860                        data,
8861                        config,
8862                    )
8863                    .map(|r| {
8864                        let r: currentEpochReturn = r.into();
8865                        r._0
8866                    })
8867            }
8868            #[inline]
8869            fn abi_decode_returns_validate(
8870                data: &[u8],
8871            ) -> alloy_sol_types::Result<Self::Return> {
8872                Self::abi_decode_returns_with_config(
8873                    data,
8874                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8875                )
8876            }
8877        }
8878    };
8879    #[derive(serde::Serialize, serde::Deserialize)]
8880    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8881    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8882```solidity
8883function disablePermissionedProverMode() external;
8884```*/
8885    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8886    #[derive(Clone)]
8887    pub struct disablePermissionedProverModeCall;
8888    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8890    #[derive(Clone)]
8891    pub struct disablePermissionedProverModeReturn {}
8892    #[allow(
8893        non_camel_case_types,
8894        non_snake_case,
8895        clippy::pub_underscore_fields,
8896        clippy::style
8897    )]
8898    const _: () = {
8899        use alloy::sol_types as alloy_sol_types;
8900        {
8901            #[doc(hidden)]
8902            #[allow(dead_code)]
8903            type UnderlyingSolTuple<'a> = ();
8904            #[doc(hidden)]
8905            type UnderlyingRustTuple<'a> = ();
8906            #[cfg(test)]
8907            #[allow(dead_code, unreachable_patterns)]
8908            fn _type_assertion(
8909                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8910            ) {
8911                match _t {
8912                    alloy_sol_types::private::AssertTypeEq::<
8913                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8914                    >(_) => {}
8915                }
8916            }
8917            #[automatically_derived]
8918            #[doc(hidden)]
8919            impl ::core::convert::From<disablePermissionedProverModeCall>
8920            for UnderlyingRustTuple<'_> {
8921                fn from(value: disablePermissionedProverModeCall) -> Self {
8922                    ()
8923                }
8924            }
8925            #[automatically_derived]
8926            #[doc(hidden)]
8927            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8928            for disablePermissionedProverModeCall {
8929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8930                    Self
8931                }
8932            }
8933        }
8934        {
8935            #[doc(hidden)]
8936            #[allow(dead_code)]
8937            type UnderlyingSolTuple<'a> = ();
8938            #[doc(hidden)]
8939            type UnderlyingRustTuple<'a> = ();
8940            #[cfg(test)]
8941            #[allow(dead_code, unreachable_patterns)]
8942            fn _type_assertion(
8943                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8944            ) {
8945                match _t {
8946                    alloy_sol_types::private::AssertTypeEq::<
8947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8948                    >(_) => {}
8949                }
8950            }
8951            #[automatically_derived]
8952            #[doc(hidden)]
8953            impl ::core::convert::From<disablePermissionedProverModeReturn>
8954            for UnderlyingRustTuple<'_> {
8955                fn from(value: disablePermissionedProverModeReturn) -> Self {
8956                    ()
8957                }
8958            }
8959            #[automatically_derived]
8960            #[doc(hidden)]
8961            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8962            for disablePermissionedProverModeReturn {
8963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8964                    Self {}
8965                }
8966            }
8967        }
8968        impl disablePermissionedProverModeReturn {
8969            fn _tokenize(
8970                &self,
8971            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8972                '_,
8973            > {
8974                ()
8975            }
8976        }
8977        #[automatically_derived]
8978        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8979            type Parameters<'a> = ();
8980            type Token<'a> = <Self::Parameters<
8981                'a,
8982            > as alloy_sol_types::SolType>::Token<'a>;
8983            type Return = disablePermissionedProverModeReturn;
8984            type ReturnTuple<'a> = ();
8985            type ReturnToken<'a> = <Self::ReturnTuple<
8986                'a,
8987            > as alloy_sol_types::SolType>::Token<'a>;
8988            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8989            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8990            #[inline]
8991            fn new<'a>(
8992                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8993            ) -> Self {
8994                tuple.into()
8995            }
8996            #[inline]
8997            fn tokenize(&self) -> Self::Token<'_> {
8998                ()
8999            }
9000            #[inline]
9001            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9002                disablePermissionedProverModeReturn::_tokenize(ret)
9003            }
9004            #[inline]
9005            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9006                <Self::ReturnTuple<
9007                    '_,
9008                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9009                    .map(Into::into)
9010            }
9011            #[inline]
9012            fn abi_decode_returns_with_config(
9013                data: &[u8],
9014                config: alloy_sol_types::abi::AbiDecoderConfig,
9015            ) -> alloy_sol_types::Result<Self::Return> {
9016                <Self::ReturnTuple<
9017                    '_,
9018                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9019                        data,
9020                        config,
9021                    )
9022                    .map(Into::into)
9023            }
9024            #[inline]
9025            fn abi_decode_returns_validate(
9026                data: &[u8],
9027            ) -> alloy_sol_types::Result<Self::Return> {
9028                Self::abi_decode_returns_with_config(
9029                    data,
9030                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9031                )
9032            }
9033        }
9034    };
9035    #[derive(serde::Serialize, serde::Deserialize)]
9036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9037    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9038```solidity
9039function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9040```*/
9041    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9042    #[derive(Clone)]
9043    pub struct epochFromBlockNumberCall {
9044        #[allow(missing_docs)]
9045        pub _blockNum: u64,
9046        #[allow(missing_docs)]
9047        pub _blocksPerEpoch: u64,
9048    }
9049    #[derive(serde::Serialize, serde::Deserialize)]
9050    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9051    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9052    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9053    #[derive(Clone)]
9054    pub struct epochFromBlockNumberReturn {
9055        #[allow(missing_docs)]
9056        pub _0: u64,
9057    }
9058    #[allow(
9059        non_camel_case_types,
9060        non_snake_case,
9061        clippy::pub_underscore_fields,
9062        clippy::style
9063    )]
9064    const _: () = {
9065        use alloy::sol_types as alloy_sol_types;
9066        {
9067            #[doc(hidden)]
9068            #[allow(dead_code)]
9069            type UnderlyingSolTuple<'a> = (
9070                alloy::sol_types::sol_data::Uint<64>,
9071                alloy::sol_types::sol_data::Uint<64>,
9072            );
9073            #[doc(hidden)]
9074            type UnderlyingRustTuple<'a> = (u64, u64);
9075            #[cfg(test)]
9076            #[allow(dead_code, unreachable_patterns)]
9077            fn _type_assertion(
9078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9079            ) {
9080                match _t {
9081                    alloy_sol_types::private::AssertTypeEq::<
9082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9083                    >(_) => {}
9084                }
9085            }
9086            #[automatically_derived]
9087            #[doc(hidden)]
9088            impl ::core::convert::From<epochFromBlockNumberCall>
9089            for UnderlyingRustTuple<'_> {
9090                fn from(value: epochFromBlockNumberCall) -> Self {
9091                    (value._blockNum, value._blocksPerEpoch)
9092                }
9093            }
9094            #[automatically_derived]
9095            #[doc(hidden)]
9096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9097            for epochFromBlockNumberCall {
9098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9099                    Self {
9100                        _blockNum: tuple.0,
9101                        _blocksPerEpoch: tuple.1,
9102                    }
9103                }
9104            }
9105        }
9106        {
9107            #[doc(hidden)]
9108            #[allow(dead_code)]
9109            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9110            #[doc(hidden)]
9111            type UnderlyingRustTuple<'a> = (u64,);
9112            #[cfg(test)]
9113            #[allow(dead_code, unreachable_patterns)]
9114            fn _type_assertion(
9115                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9116            ) {
9117                match _t {
9118                    alloy_sol_types::private::AssertTypeEq::<
9119                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9120                    >(_) => {}
9121                }
9122            }
9123            #[automatically_derived]
9124            #[doc(hidden)]
9125            impl ::core::convert::From<epochFromBlockNumberReturn>
9126            for UnderlyingRustTuple<'_> {
9127                fn from(value: epochFromBlockNumberReturn) -> Self {
9128                    (value._0,)
9129                }
9130            }
9131            #[automatically_derived]
9132            #[doc(hidden)]
9133            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9134            for epochFromBlockNumberReturn {
9135                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9136                    Self { _0: tuple.0 }
9137                }
9138            }
9139        }
9140        #[automatically_derived]
9141        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9142            type Parameters<'a> = (
9143                alloy::sol_types::sol_data::Uint<64>,
9144                alloy::sol_types::sol_data::Uint<64>,
9145            );
9146            type Token<'a> = <Self::Parameters<
9147                'a,
9148            > as alloy_sol_types::SolType>::Token<'a>;
9149            type Return = u64;
9150            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9151            type ReturnToken<'a> = <Self::ReturnTuple<
9152                'a,
9153            > as alloy_sol_types::SolType>::Token<'a>;
9154            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9155            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9156            #[inline]
9157            fn new<'a>(
9158                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9159            ) -> Self {
9160                tuple.into()
9161            }
9162            #[inline]
9163            fn tokenize(&self) -> Self::Token<'_> {
9164                (
9165                    <alloy::sol_types::sol_data::Uint<
9166                        64,
9167                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9168                    <alloy::sol_types::sol_data::Uint<
9169                        64,
9170                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9171                )
9172            }
9173            #[inline]
9174            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9175                (
9176                    <alloy::sol_types::sol_data::Uint<
9177                        64,
9178                    > as alloy_sol_types::SolType>::tokenize(ret),
9179                )
9180            }
9181            #[inline]
9182            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9183                <Self::ReturnTuple<
9184                    '_,
9185                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9186                    .map(|r| {
9187                        let r: epochFromBlockNumberReturn = r.into();
9188                        r._0
9189                    })
9190            }
9191            #[inline]
9192            fn abi_decode_returns_with_config(
9193                data: &[u8],
9194                config: alloy_sol_types::abi::AbiDecoderConfig,
9195            ) -> alloy_sol_types::Result<Self::Return> {
9196                <Self::ReturnTuple<
9197                    '_,
9198                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9199                        data,
9200                        config,
9201                    )
9202                    .map(|r| {
9203                        let r: epochFromBlockNumberReturn = r.into();
9204                        r._0
9205                    })
9206            }
9207            #[inline]
9208            fn abi_decode_returns_validate(
9209                data: &[u8],
9210            ) -> alloy_sol_types::Result<Self::Return> {
9211                Self::abi_decode_returns_with_config(
9212                    data,
9213                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9214                )
9215            }
9216        }
9217    };
9218    #[derive(serde::Serialize, serde::Deserialize)]
9219    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9220    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9221```solidity
9222function epochStartBlock() external view returns (uint64);
9223```*/
9224    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9225    #[derive(Clone)]
9226    pub struct epochStartBlockCall;
9227    #[derive(serde::Serialize, serde::Deserialize)]
9228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9229    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9231    #[derive(Clone)]
9232    pub struct epochStartBlockReturn {
9233        #[allow(missing_docs)]
9234        pub _0: u64,
9235    }
9236    #[allow(
9237        non_camel_case_types,
9238        non_snake_case,
9239        clippy::pub_underscore_fields,
9240        clippy::style
9241    )]
9242    const _: () = {
9243        use alloy::sol_types as alloy_sol_types;
9244        {
9245            #[doc(hidden)]
9246            #[allow(dead_code)]
9247            type UnderlyingSolTuple<'a> = ();
9248            #[doc(hidden)]
9249            type UnderlyingRustTuple<'a> = ();
9250            #[cfg(test)]
9251            #[allow(dead_code, unreachable_patterns)]
9252            fn _type_assertion(
9253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9254            ) {
9255                match _t {
9256                    alloy_sol_types::private::AssertTypeEq::<
9257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9258                    >(_) => {}
9259                }
9260            }
9261            #[automatically_derived]
9262            #[doc(hidden)]
9263            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9264                fn from(value: epochStartBlockCall) -> Self {
9265                    ()
9266                }
9267            }
9268            #[automatically_derived]
9269            #[doc(hidden)]
9270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9272                    Self
9273                }
9274            }
9275        }
9276        {
9277            #[doc(hidden)]
9278            #[allow(dead_code)]
9279            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9280            #[doc(hidden)]
9281            type UnderlyingRustTuple<'a> = (u64,);
9282            #[cfg(test)]
9283            #[allow(dead_code, unreachable_patterns)]
9284            fn _type_assertion(
9285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9286            ) {
9287                match _t {
9288                    alloy_sol_types::private::AssertTypeEq::<
9289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9290                    >(_) => {}
9291                }
9292            }
9293            #[automatically_derived]
9294            #[doc(hidden)]
9295            impl ::core::convert::From<epochStartBlockReturn>
9296            for UnderlyingRustTuple<'_> {
9297                fn from(value: epochStartBlockReturn) -> Self {
9298                    (value._0,)
9299                }
9300            }
9301            #[automatically_derived]
9302            #[doc(hidden)]
9303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9304            for epochStartBlockReturn {
9305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9306                    Self { _0: tuple.0 }
9307                }
9308            }
9309        }
9310        #[automatically_derived]
9311        impl alloy_sol_types::SolCall for epochStartBlockCall {
9312            type Parameters<'a> = ();
9313            type Token<'a> = <Self::Parameters<
9314                'a,
9315            > as alloy_sol_types::SolType>::Token<'a>;
9316            type Return = u64;
9317            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9318            type ReturnToken<'a> = <Self::ReturnTuple<
9319                'a,
9320            > as alloy_sol_types::SolType>::Token<'a>;
9321            const SIGNATURE: &'static str = "epochStartBlock()";
9322            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9323            #[inline]
9324            fn new<'a>(
9325                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9326            ) -> Self {
9327                tuple.into()
9328            }
9329            #[inline]
9330            fn tokenize(&self) -> Self::Token<'_> {
9331                ()
9332            }
9333            #[inline]
9334            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9335                (
9336                    <alloy::sol_types::sol_data::Uint<
9337                        64,
9338                    > as alloy_sol_types::SolType>::tokenize(ret),
9339                )
9340            }
9341            #[inline]
9342            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9343                <Self::ReturnTuple<
9344                    '_,
9345                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9346                    .map(|r| {
9347                        let r: epochStartBlockReturn = r.into();
9348                        r._0
9349                    })
9350            }
9351            #[inline]
9352            fn abi_decode_returns_with_config(
9353                data: &[u8],
9354                config: alloy_sol_types::abi::AbiDecoderConfig,
9355            ) -> alloy_sol_types::Result<Self::Return> {
9356                <Self::ReturnTuple<
9357                    '_,
9358                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9359                        data,
9360                        config,
9361                    )
9362                    .map(|r| {
9363                        let r: epochStartBlockReturn = r.into();
9364                        r._0
9365                    })
9366            }
9367            #[inline]
9368            fn abi_decode_returns_validate(
9369                data: &[u8],
9370            ) -> alloy_sol_types::Result<Self::Return> {
9371                Self::abi_decode_returns_with_config(
9372                    data,
9373                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9374                )
9375            }
9376        }
9377    };
9378    #[derive(serde::Serialize, serde::Deserialize)]
9379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9380    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9381```solidity
9382function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9383```*/
9384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9385    #[derive(Clone)]
9386    pub struct finalizedStateCall;
9387    #[derive(serde::Serialize, serde::Deserialize)]
9388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9389    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9391    #[derive(Clone)]
9392    pub struct finalizedStateReturn {
9393        #[allow(missing_docs)]
9394        pub viewNum: u64,
9395        #[allow(missing_docs)]
9396        pub blockHeight: u64,
9397        #[allow(missing_docs)]
9398        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9399    }
9400    #[allow(
9401        non_camel_case_types,
9402        non_snake_case,
9403        clippy::pub_underscore_fields,
9404        clippy::style
9405    )]
9406    const _: () = {
9407        use alloy::sol_types as alloy_sol_types;
9408        {
9409            #[doc(hidden)]
9410            #[allow(dead_code)]
9411            type UnderlyingSolTuple<'a> = ();
9412            #[doc(hidden)]
9413            type UnderlyingRustTuple<'a> = ();
9414            #[cfg(test)]
9415            #[allow(dead_code, unreachable_patterns)]
9416            fn _type_assertion(
9417                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9418            ) {
9419                match _t {
9420                    alloy_sol_types::private::AssertTypeEq::<
9421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9422                    >(_) => {}
9423                }
9424            }
9425            #[automatically_derived]
9426            #[doc(hidden)]
9427            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9428                fn from(value: finalizedStateCall) -> Self {
9429                    ()
9430                }
9431            }
9432            #[automatically_derived]
9433            #[doc(hidden)]
9434            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9436                    Self
9437                }
9438            }
9439        }
9440        {
9441            #[doc(hidden)]
9442            #[allow(dead_code)]
9443            type UnderlyingSolTuple<'a> = (
9444                alloy::sol_types::sol_data::Uint<64>,
9445                alloy::sol_types::sol_data::Uint<64>,
9446                BN254::ScalarField,
9447            );
9448            #[doc(hidden)]
9449            type UnderlyingRustTuple<'a> = (
9450                u64,
9451                u64,
9452                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9453            );
9454            #[cfg(test)]
9455            #[allow(dead_code, unreachable_patterns)]
9456            fn _type_assertion(
9457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9458            ) {
9459                match _t {
9460                    alloy_sol_types::private::AssertTypeEq::<
9461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9462                    >(_) => {}
9463                }
9464            }
9465            #[automatically_derived]
9466            #[doc(hidden)]
9467            impl ::core::convert::From<finalizedStateReturn>
9468            for UnderlyingRustTuple<'_> {
9469                fn from(value: finalizedStateReturn) -> Self {
9470                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9471                }
9472            }
9473            #[automatically_derived]
9474            #[doc(hidden)]
9475            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9476            for finalizedStateReturn {
9477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9478                    Self {
9479                        viewNum: tuple.0,
9480                        blockHeight: tuple.1,
9481                        blockCommRoot: tuple.2,
9482                    }
9483                }
9484            }
9485        }
9486        impl finalizedStateReturn {
9487            fn _tokenize(
9488                &self,
9489            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9490                (
9491                    <alloy::sol_types::sol_data::Uint<
9492                        64,
9493                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9494                    <alloy::sol_types::sol_data::Uint<
9495                        64,
9496                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9497                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9498                        &self.blockCommRoot,
9499                    ),
9500                )
9501            }
9502        }
9503        #[automatically_derived]
9504        impl alloy_sol_types::SolCall for finalizedStateCall {
9505            type Parameters<'a> = ();
9506            type Token<'a> = <Self::Parameters<
9507                'a,
9508            > as alloy_sol_types::SolType>::Token<'a>;
9509            type Return = finalizedStateReturn;
9510            type ReturnTuple<'a> = (
9511                alloy::sol_types::sol_data::Uint<64>,
9512                alloy::sol_types::sol_data::Uint<64>,
9513                BN254::ScalarField,
9514            );
9515            type ReturnToken<'a> = <Self::ReturnTuple<
9516                'a,
9517            > as alloy_sol_types::SolType>::Token<'a>;
9518            const SIGNATURE: &'static str = "finalizedState()";
9519            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9520            #[inline]
9521            fn new<'a>(
9522                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9523            ) -> Self {
9524                tuple.into()
9525            }
9526            #[inline]
9527            fn tokenize(&self) -> Self::Token<'_> {
9528                ()
9529            }
9530            #[inline]
9531            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9532                finalizedStateReturn::_tokenize(ret)
9533            }
9534            #[inline]
9535            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9536                <Self::ReturnTuple<
9537                    '_,
9538                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9539                    .map(Into::into)
9540            }
9541            #[inline]
9542            fn abi_decode_returns_with_config(
9543                data: &[u8],
9544                config: alloy_sol_types::abi::AbiDecoderConfig,
9545            ) -> alloy_sol_types::Result<Self::Return> {
9546                <Self::ReturnTuple<
9547                    '_,
9548                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9549                        data,
9550                        config,
9551                    )
9552                    .map(Into::into)
9553            }
9554            #[inline]
9555            fn abi_decode_returns_validate(
9556                data: &[u8],
9557            ) -> alloy_sol_types::Result<Self::Return> {
9558                Self::abi_decode_returns_with_config(
9559                    data,
9560                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9561                )
9562            }
9563        }
9564    };
9565    #[derive(serde::Serialize, serde::Deserialize)]
9566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9567    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9568```solidity
9569function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9570```*/
9571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9572    #[derive(Clone)]
9573    pub struct genesisStakeTableStateCall;
9574    #[derive(serde::Serialize, serde::Deserialize)]
9575    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9576    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9578    #[derive(Clone)]
9579    pub struct genesisStakeTableStateReturn {
9580        #[allow(missing_docs)]
9581        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9582        #[allow(missing_docs)]
9583        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9584        #[allow(missing_docs)]
9585        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9586        #[allow(missing_docs)]
9587        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9588    }
9589    #[allow(
9590        non_camel_case_types,
9591        non_snake_case,
9592        clippy::pub_underscore_fields,
9593        clippy::style
9594    )]
9595    const _: () = {
9596        use alloy::sol_types as alloy_sol_types;
9597        {
9598            #[doc(hidden)]
9599            #[allow(dead_code)]
9600            type UnderlyingSolTuple<'a> = ();
9601            #[doc(hidden)]
9602            type UnderlyingRustTuple<'a> = ();
9603            #[cfg(test)]
9604            #[allow(dead_code, unreachable_patterns)]
9605            fn _type_assertion(
9606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9607            ) {
9608                match _t {
9609                    alloy_sol_types::private::AssertTypeEq::<
9610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9611                    >(_) => {}
9612                }
9613            }
9614            #[automatically_derived]
9615            #[doc(hidden)]
9616            impl ::core::convert::From<genesisStakeTableStateCall>
9617            for UnderlyingRustTuple<'_> {
9618                fn from(value: genesisStakeTableStateCall) -> Self {
9619                    ()
9620                }
9621            }
9622            #[automatically_derived]
9623            #[doc(hidden)]
9624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9625            for genesisStakeTableStateCall {
9626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9627                    Self
9628                }
9629            }
9630        }
9631        {
9632            #[doc(hidden)]
9633            #[allow(dead_code)]
9634            type UnderlyingSolTuple<'a> = (
9635                alloy::sol_types::sol_data::Uint<256>,
9636                BN254::ScalarField,
9637                BN254::ScalarField,
9638                BN254::ScalarField,
9639            );
9640            #[doc(hidden)]
9641            type UnderlyingRustTuple<'a> = (
9642                alloy::sol_types::private::primitives::aliases::U256,
9643                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9644                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9645                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9646            );
9647            #[cfg(test)]
9648            #[allow(dead_code, unreachable_patterns)]
9649            fn _type_assertion(
9650                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9651            ) {
9652                match _t {
9653                    alloy_sol_types::private::AssertTypeEq::<
9654                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9655                    >(_) => {}
9656                }
9657            }
9658            #[automatically_derived]
9659            #[doc(hidden)]
9660            impl ::core::convert::From<genesisStakeTableStateReturn>
9661            for UnderlyingRustTuple<'_> {
9662                fn from(value: genesisStakeTableStateReturn) -> Self {
9663                    (
9664                        value.threshold,
9665                        value.blsKeyComm,
9666                        value.schnorrKeyComm,
9667                        value.amountComm,
9668                    )
9669                }
9670            }
9671            #[automatically_derived]
9672            #[doc(hidden)]
9673            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9674            for genesisStakeTableStateReturn {
9675                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9676                    Self {
9677                        threshold: tuple.0,
9678                        blsKeyComm: tuple.1,
9679                        schnorrKeyComm: tuple.2,
9680                        amountComm: tuple.3,
9681                    }
9682                }
9683            }
9684        }
9685        impl genesisStakeTableStateReturn {
9686            fn _tokenize(
9687                &self,
9688            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9689                '_,
9690            > {
9691                (
9692                    <alloy::sol_types::sol_data::Uint<
9693                        256,
9694                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9695                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9696                        &self.blsKeyComm,
9697                    ),
9698                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9699                        &self.schnorrKeyComm,
9700                    ),
9701                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9702                        &self.amountComm,
9703                    ),
9704                )
9705            }
9706        }
9707        #[automatically_derived]
9708        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9709            type Parameters<'a> = ();
9710            type Token<'a> = <Self::Parameters<
9711                'a,
9712            > as alloy_sol_types::SolType>::Token<'a>;
9713            type Return = genesisStakeTableStateReturn;
9714            type ReturnTuple<'a> = (
9715                alloy::sol_types::sol_data::Uint<256>,
9716                BN254::ScalarField,
9717                BN254::ScalarField,
9718                BN254::ScalarField,
9719            );
9720            type ReturnToken<'a> = <Self::ReturnTuple<
9721                'a,
9722            > as alloy_sol_types::SolType>::Token<'a>;
9723            const SIGNATURE: &'static str = "genesisStakeTableState()";
9724            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9725            #[inline]
9726            fn new<'a>(
9727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9728            ) -> Self {
9729                tuple.into()
9730            }
9731            #[inline]
9732            fn tokenize(&self) -> Self::Token<'_> {
9733                ()
9734            }
9735            #[inline]
9736            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9737                genesisStakeTableStateReturn::_tokenize(ret)
9738            }
9739            #[inline]
9740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9741                <Self::ReturnTuple<
9742                    '_,
9743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9744                    .map(Into::into)
9745            }
9746            #[inline]
9747            fn abi_decode_returns_with_config(
9748                data: &[u8],
9749                config: alloy_sol_types::abi::AbiDecoderConfig,
9750            ) -> alloy_sol_types::Result<Self::Return> {
9751                <Self::ReturnTuple<
9752                    '_,
9753                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9754                        data,
9755                        config,
9756                    )
9757                    .map(Into::into)
9758            }
9759            #[inline]
9760            fn abi_decode_returns_validate(
9761                data: &[u8],
9762            ) -> alloy_sol_types::Result<Self::Return> {
9763                Self::abi_decode_returns_with_config(
9764                    data,
9765                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9766                )
9767            }
9768        }
9769    };
9770    #[derive(serde::Serialize, serde::Deserialize)]
9771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9772    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9773```solidity
9774function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9775```*/
9776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9777    #[derive(Clone)]
9778    pub struct genesisStateCall;
9779    #[derive(serde::Serialize, serde::Deserialize)]
9780    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9781    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9782    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9783    #[derive(Clone)]
9784    pub struct genesisStateReturn {
9785        #[allow(missing_docs)]
9786        pub viewNum: u64,
9787        #[allow(missing_docs)]
9788        pub blockHeight: u64,
9789        #[allow(missing_docs)]
9790        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9791    }
9792    #[allow(
9793        non_camel_case_types,
9794        non_snake_case,
9795        clippy::pub_underscore_fields,
9796        clippy::style
9797    )]
9798    const _: () = {
9799        use alloy::sol_types as alloy_sol_types;
9800        {
9801            #[doc(hidden)]
9802            #[allow(dead_code)]
9803            type UnderlyingSolTuple<'a> = ();
9804            #[doc(hidden)]
9805            type UnderlyingRustTuple<'a> = ();
9806            #[cfg(test)]
9807            #[allow(dead_code, unreachable_patterns)]
9808            fn _type_assertion(
9809                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9810            ) {
9811                match _t {
9812                    alloy_sol_types::private::AssertTypeEq::<
9813                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9814                    >(_) => {}
9815                }
9816            }
9817            #[automatically_derived]
9818            #[doc(hidden)]
9819            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9820                fn from(value: genesisStateCall) -> Self {
9821                    ()
9822                }
9823            }
9824            #[automatically_derived]
9825            #[doc(hidden)]
9826            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9828                    Self
9829                }
9830            }
9831        }
9832        {
9833            #[doc(hidden)]
9834            #[allow(dead_code)]
9835            type UnderlyingSolTuple<'a> = (
9836                alloy::sol_types::sol_data::Uint<64>,
9837                alloy::sol_types::sol_data::Uint<64>,
9838                BN254::ScalarField,
9839            );
9840            #[doc(hidden)]
9841            type UnderlyingRustTuple<'a> = (
9842                u64,
9843                u64,
9844                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9845            );
9846            #[cfg(test)]
9847            #[allow(dead_code, unreachable_patterns)]
9848            fn _type_assertion(
9849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9850            ) {
9851                match _t {
9852                    alloy_sol_types::private::AssertTypeEq::<
9853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9854                    >(_) => {}
9855                }
9856            }
9857            #[automatically_derived]
9858            #[doc(hidden)]
9859            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9860                fn from(value: genesisStateReturn) -> Self {
9861                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9862                }
9863            }
9864            #[automatically_derived]
9865            #[doc(hidden)]
9866            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9868                    Self {
9869                        viewNum: tuple.0,
9870                        blockHeight: tuple.1,
9871                        blockCommRoot: tuple.2,
9872                    }
9873                }
9874            }
9875        }
9876        impl genesisStateReturn {
9877            fn _tokenize(
9878                &self,
9879            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9880                (
9881                    <alloy::sol_types::sol_data::Uint<
9882                        64,
9883                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9884                    <alloy::sol_types::sol_data::Uint<
9885                        64,
9886                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9888                        &self.blockCommRoot,
9889                    ),
9890                )
9891            }
9892        }
9893        #[automatically_derived]
9894        impl alloy_sol_types::SolCall for genesisStateCall {
9895            type Parameters<'a> = ();
9896            type Token<'a> = <Self::Parameters<
9897                'a,
9898            > as alloy_sol_types::SolType>::Token<'a>;
9899            type Return = genesisStateReturn;
9900            type ReturnTuple<'a> = (
9901                alloy::sol_types::sol_data::Uint<64>,
9902                alloy::sol_types::sol_data::Uint<64>,
9903                BN254::ScalarField,
9904            );
9905            type ReturnToken<'a> = <Self::ReturnTuple<
9906                'a,
9907            > as alloy_sol_types::SolType>::Token<'a>;
9908            const SIGNATURE: &'static str = "genesisState()";
9909            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9910            #[inline]
9911            fn new<'a>(
9912                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9913            ) -> Self {
9914                tuple.into()
9915            }
9916            #[inline]
9917            fn tokenize(&self) -> Self::Token<'_> {
9918                ()
9919            }
9920            #[inline]
9921            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9922                genesisStateReturn::_tokenize(ret)
9923            }
9924            #[inline]
9925            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9926                <Self::ReturnTuple<
9927                    '_,
9928                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9929                    .map(Into::into)
9930            }
9931            #[inline]
9932            fn abi_decode_returns_with_config(
9933                data: &[u8],
9934                config: alloy_sol_types::abi::AbiDecoderConfig,
9935            ) -> alloy_sol_types::Result<Self::Return> {
9936                <Self::ReturnTuple<
9937                    '_,
9938                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9939                        data,
9940                        config,
9941                    )
9942                    .map(Into::into)
9943            }
9944            #[inline]
9945            fn abi_decode_returns_validate(
9946                data: &[u8],
9947            ) -> alloy_sol_types::Result<Self::Return> {
9948                Self::abi_decode_returns_with_config(
9949                    data,
9950                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9951                )
9952            }
9953        }
9954    };
9955    #[derive(serde::Serialize, serde::Deserialize)]
9956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9957    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
9958```solidity
9959function getFirstEpoch() external view returns (uint64);
9960```*/
9961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9962    #[derive(Clone)]
9963    pub struct getFirstEpochCall;
9964    #[derive(serde::Serialize, serde::Deserialize)]
9965    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9966    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
9967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9968    #[derive(Clone)]
9969    pub struct getFirstEpochReturn {
9970        #[allow(missing_docs)]
9971        pub _0: u64,
9972    }
9973    #[allow(
9974        non_camel_case_types,
9975        non_snake_case,
9976        clippy::pub_underscore_fields,
9977        clippy::style
9978    )]
9979    const _: () = {
9980        use alloy::sol_types as alloy_sol_types;
9981        {
9982            #[doc(hidden)]
9983            #[allow(dead_code)]
9984            type UnderlyingSolTuple<'a> = ();
9985            #[doc(hidden)]
9986            type UnderlyingRustTuple<'a> = ();
9987            #[cfg(test)]
9988            #[allow(dead_code, unreachable_patterns)]
9989            fn _type_assertion(
9990                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9991            ) {
9992                match _t {
9993                    alloy_sol_types::private::AssertTypeEq::<
9994                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9995                    >(_) => {}
9996                }
9997            }
9998            #[automatically_derived]
9999            #[doc(hidden)]
10000            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
10001                fn from(value: getFirstEpochCall) -> Self {
10002                    ()
10003                }
10004            }
10005            #[automatically_derived]
10006            #[doc(hidden)]
10007            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
10008                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10009                    Self
10010                }
10011            }
10012        }
10013        {
10014            #[doc(hidden)]
10015            #[allow(dead_code)]
10016            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10017            #[doc(hidden)]
10018            type UnderlyingRustTuple<'a> = (u64,);
10019            #[cfg(test)]
10020            #[allow(dead_code, unreachable_patterns)]
10021            fn _type_assertion(
10022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10023            ) {
10024                match _t {
10025                    alloy_sol_types::private::AssertTypeEq::<
10026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10027                    >(_) => {}
10028                }
10029            }
10030            #[automatically_derived]
10031            #[doc(hidden)]
10032            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
10033                fn from(value: getFirstEpochReturn) -> Self {
10034                    (value._0,)
10035                }
10036            }
10037            #[automatically_derived]
10038            #[doc(hidden)]
10039            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
10040                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10041                    Self { _0: tuple.0 }
10042                }
10043            }
10044        }
10045        #[automatically_derived]
10046        impl alloy_sol_types::SolCall for getFirstEpochCall {
10047            type Parameters<'a> = ();
10048            type Token<'a> = <Self::Parameters<
10049                'a,
10050            > as alloy_sol_types::SolType>::Token<'a>;
10051            type Return = u64;
10052            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10053            type ReturnToken<'a> = <Self::ReturnTuple<
10054                'a,
10055            > as alloy_sol_types::SolType>::Token<'a>;
10056            const SIGNATURE: &'static str = "getFirstEpoch()";
10057            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
10058            #[inline]
10059            fn new<'a>(
10060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10061            ) -> Self {
10062                tuple.into()
10063            }
10064            #[inline]
10065            fn tokenize(&self) -> Self::Token<'_> {
10066                ()
10067            }
10068            #[inline]
10069            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10070                (
10071                    <alloy::sol_types::sol_data::Uint<
10072                        64,
10073                    > as alloy_sol_types::SolType>::tokenize(ret),
10074                )
10075            }
10076            #[inline]
10077            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10078                <Self::ReturnTuple<
10079                    '_,
10080                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10081                    .map(|r| {
10082                        let r: getFirstEpochReturn = r.into();
10083                        r._0
10084                    })
10085            }
10086            #[inline]
10087            fn abi_decode_returns_with_config(
10088                data: &[u8],
10089                config: alloy_sol_types::abi::AbiDecoderConfig,
10090            ) -> alloy_sol_types::Result<Self::Return> {
10091                <Self::ReturnTuple<
10092                    '_,
10093                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10094                        data,
10095                        config,
10096                    )
10097                    .map(|r| {
10098                        let r: getFirstEpochReturn = r.into();
10099                        r._0
10100                    })
10101            }
10102            #[inline]
10103            fn abi_decode_returns_validate(
10104                data: &[u8],
10105            ) -> alloy_sol_types::Result<Self::Return> {
10106                Self::abi_decode_returns_with_config(
10107                    data,
10108                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10109                )
10110            }
10111        }
10112    };
10113    #[derive(serde::Serialize, serde::Deserialize)]
10114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10115    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10116```solidity
10117function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10118```*/
10119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10120    #[derive(Clone)]
10121    pub struct getHotShotCommitmentCall {
10122        #[allow(missing_docs)]
10123        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10124    }
10125    #[derive(serde::Serialize, serde::Deserialize)]
10126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10127    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10129    #[derive(Clone)]
10130    pub struct getHotShotCommitmentReturn {
10131        #[allow(missing_docs)]
10132        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10133        #[allow(missing_docs)]
10134        pub hotshotBlockHeight: u64,
10135    }
10136    #[allow(
10137        non_camel_case_types,
10138        non_snake_case,
10139        clippy::pub_underscore_fields,
10140        clippy::style
10141    )]
10142    const _: () = {
10143        use alloy::sol_types as alloy_sol_types;
10144        {
10145            #[doc(hidden)]
10146            #[allow(dead_code)]
10147            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10148            #[doc(hidden)]
10149            type UnderlyingRustTuple<'a> = (
10150                alloy::sol_types::private::primitives::aliases::U256,
10151            );
10152            #[cfg(test)]
10153            #[allow(dead_code, unreachable_patterns)]
10154            fn _type_assertion(
10155                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10156            ) {
10157                match _t {
10158                    alloy_sol_types::private::AssertTypeEq::<
10159                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10160                    >(_) => {}
10161                }
10162            }
10163            #[automatically_derived]
10164            #[doc(hidden)]
10165            impl ::core::convert::From<getHotShotCommitmentCall>
10166            for UnderlyingRustTuple<'_> {
10167                fn from(value: getHotShotCommitmentCall) -> Self {
10168                    (value.hotShotBlockHeight,)
10169                }
10170            }
10171            #[automatically_derived]
10172            #[doc(hidden)]
10173            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10174            for getHotShotCommitmentCall {
10175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10176                    Self {
10177                        hotShotBlockHeight: tuple.0,
10178                    }
10179                }
10180            }
10181        }
10182        {
10183            #[doc(hidden)]
10184            #[allow(dead_code)]
10185            type UnderlyingSolTuple<'a> = (
10186                BN254::ScalarField,
10187                alloy::sol_types::sol_data::Uint<64>,
10188            );
10189            #[doc(hidden)]
10190            type UnderlyingRustTuple<'a> = (
10191                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10192                u64,
10193            );
10194            #[cfg(test)]
10195            #[allow(dead_code, unreachable_patterns)]
10196            fn _type_assertion(
10197                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10198            ) {
10199                match _t {
10200                    alloy_sol_types::private::AssertTypeEq::<
10201                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10202                    >(_) => {}
10203                }
10204            }
10205            #[automatically_derived]
10206            #[doc(hidden)]
10207            impl ::core::convert::From<getHotShotCommitmentReturn>
10208            for UnderlyingRustTuple<'_> {
10209                fn from(value: getHotShotCommitmentReturn) -> Self {
10210                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10211                }
10212            }
10213            #[automatically_derived]
10214            #[doc(hidden)]
10215            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10216            for getHotShotCommitmentReturn {
10217                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10218                    Self {
10219                        hotShotBlockCommRoot: tuple.0,
10220                        hotshotBlockHeight: tuple.1,
10221                    }
10222                }
10223            }
10224        }
10225        impl getHotShotCommitmentReturn {
10226            fn _tokenize(
10227                &self,
10228            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10229                '_,
10230            > {
10231                (
10232                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10233                        &self.hotShotBlockCommRoot,
10234                    ),
10235                    <alloy::sol_types::sol_data::Uint<
10236                        64,
10237                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10238                )
10239            }
10240        }
10241        #[automatically_derived]
10242        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10243            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10244            type Token<'a> = <Self::Parameters<
10245                'a,
10246            > as alloy_sol_types::SolType>::Token<'a>;
10247            type Return = getHotShotCommitmentReturn;
10248            type ReturnTuple<'a> = (
10249                BN254::ScalarField,
10250                alloy::sol_types::sol_data::Uint<64>,
10251            );
10252            type ReturnToken<'a> = <Self::ReturnTuple<
10253                'a,
10254            > as alloy_sol_types::SolType>::Token<'a>;
10255            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10256            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10257            #[inline]
10258            fn new<'a>(
10259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10260            ) -> Self {
10261                tuple.into()
10262            }
10263            #[inline]
10264            fn tokenize(&self) -> Self::Token<'_> {
10265                (
10266                    <alloy::sol_types::sol_data::Uint<
10267                        256,
10268                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10269                )
10270            }
10271            #[inline]
10272            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10273                getHotShotCommitmentReturn::_tokenize(ret)
10274            }
10275            #[inline]
10276            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10277                <Self::ReturnTuple<
10278                    '_,
10279                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10280                    .map(Into::into)
10281            }
10282            #[inline]
10283            fn abi_decode_returns_with_config(
10284                data: &[u8],
10285                config: alloy_sol_types::abi::AbiDecoderConfig,
10286            ) -> alloy_sol_types::Result<Self::Return> {
10287                <Self::ReturnTuple<
10288                    '_,
10289                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10290                        data,
10291                        config,
10292                    )
10293                    .map(Into::into)
10294            }
10295            #[inline]
10296            fn abi_decode_returns_validate(
10297                data: &[u8],
10298            ) -> alloy_sol_types::Result<Self::Return> {
10299                Self::abi_decode_returns_with_config(
10300                    data,
10301                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10302                )
10303            }
10304        }
10305    };
10306    #[derive(serde::Serialize, serde::Deserialize)]
10307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10308    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10309```solidity
10310function getStateHistoryCount() external view returns (uint256);
10311```*/
10312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10313    #[derive(Clone)]
10314    pub struct getStateHistoryCountCall;
10315    #[derive(serde::Serialize, serde::Deserialize)]
10316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10317    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10318    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10319    #[derive(Clone)]
10320    pub struct getStateHistoryCountReturn {
10321        #[allow(missing_docs)]
10322        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10323    }
10324    #[allow(
10325        non_camel_case_types,
10326        non_snake_case,
10327        clippy::pub_underscore_fields,
10328        clippy::style
10329    )]
10330    const _: () = {
10331        use alloy::sol_types as alloy_sol_types;
10332        {
10333            #[doc(hidden)]
10334            #[allow(dead_code)]
10335            type UnderlyingSolTuple<'a> = ();
10336            #[doc(hidden)]
10337            type UnderlyingRustTuple<'a> = ();
10338            #[cfg(test)]
10339            #[allow(dead_code, unreachable_patterns)]
10340            fn _type_assertion(
10341                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10342            ) {
10343                match _t {
10344                    alloy_sol_types::private::AssertTypeEq::<
10345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10346                    >(_) => {}
10347                }
10348            }
10349            #[automatically_derived]
10350            #[doc(hidden)]
10351            impl ::core::convert::From<getStateHistoryCountCall>
10352            for UnderlyingRustTuple<'_> {
10353                fn from(value: getStateHistoryCountCall) -> Self {
10354                    ()
10355                }
10356            }
10357            #[automatically_derived]
10358            #[doc(hidden)]
10359            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10360            for getStateHistoryCountCall {
10361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10362                    Self
10363                }
10364            }
10365        }
10366        {
10367            #[doc(hidden)]
10368            #[allow(dead_code)]
10369            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10370            #[doc(hidden)]
10371            type UnderlyingRustTuple<'a> = (
10372                alloy::sol_types::private::primitives::aliases::U256,
10373            );
10374            #[cfg(test)]
10375            #[allow(dead_code, unreachable_patterns)]
10376            fn _type_assertion(
10377                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10378            ) {
10379                match _t {
10380                    alloy_sol_types::private::AssertTypeEq::<
10381                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10382                    >(_) => {}
10383                }
10384            }
10385            #[automatically_derived]
10386            #[doc(hidden)]
10387            impl ::core::convert::From<getStateHistoryCountReturn>
10388            for UnderlyingRustTuple<'_> {
10389                fn from(value: getStateHistoryCountReturn) -> Self {
10390                    (value._0,)
10391                }
10392            }
10393            #[automatically_derived]
10394            #[doc(hidden)]
10395            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10396            for getStateHistoryCountReturn {
10397                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10398                    Self { _0: tuple.0 }
10399                }
10400            }
10401        }
10402        #[automatically_derived]
10403        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10404            type Parameters<'a> = ();
10405            type Token<'a> = <Self::Parameters<
10406                'a,
10407            > as alloy_sol_types::SolType>::Token<'a>;
10408            type Return = alloy::sol_types::private::primitives::aliases::U256;
10409            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10410            type ReturnToken<'a> = <Self::ReturnTuple<
10411                'a,
10412            > as alloy_sol_types::SolType>::Token<'a>;
10413            const SIGNATURE: &'static str = "getStateHistoryCount()";
10414            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10415            #[inline]
10416            fn new<'a>(
10417                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10418            ) -> Self {
10419                tuple.into()
10420            }
10421            #[inline]
10422            fn tokenize(&self) -> Self::Token<'_> {
10423                ()
10424            }
10425            #[inline]
10426            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10427                (
10428                    <alloy::sol_types::sol_data::Uint<
10429                        256,
10430                    > as alloy_sol_types::SolType>::tokenize(ret),
10431                )
10432            }
10433            #[inline]
10434            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10435                <Self::ReturnTuple<
10436                    '_,
10437                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10438                    .map(|r| {
10439                        let r: getStateHistoryCountReturn = r.into();
10440                        r._0
10441                    })
10442            }
10443            #[inline]
10444            fn abi_decode_returns_with_config(
10445                data: &[u8],
10446                config: alloy_sol_types::abi::AbiDecoderConfig,
10447            ) -> alloy_sol_types::Result<Self::Return> {
10448                <Self::ReturnTuple<
10449                    '_,
10450                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10451                        data,
10452                        config,
10453                    )
10454                    .map(|r| {
10455                        let r: getStateHistoryCountReturn = r.into();
10456                        r._0
10457                    })
10458            }
10459            #[inline]
10460            fn abi_decode_returns_validate(
10461                data: &[u8],
10462            ) -> alloy_sol_types::Result<Self::Return> {
10463                Self::abi_decode_returns_with_config(
10464                    data,
10465                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10466                )
10467            }
10468        }
10469    };
10470    #[derive(serde::Serialize, serde::Deserialize)]
10471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10472    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10473```solidity
10474function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10475```*/
10476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10477    #[derive(Clone)]
10478    pub struct getVersionCall;
10479    #[derive(serde::Serialize, serde::Deserialize)]
10480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10481    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10483    #[derive(Clone)]
10484    pub struct getVersionReturn {
10485        #[allow(missing_docs)]
10486        pub majorVersion: u8,
10487        #[allow(missing_docs)]
10488        pub minorVersion: u8,
10489        #[allow(missing_docs)]
10490        pub patchVersion: u8,
10491    }
10492    #[allow(
10493        non_camel_case_types,
10494        non_snake_case,
10495        clippy::pub_underscore_fields,
10496        clippy::style
10497    )]
10498    const _: () = {
10499        use alloy::sol_types as alloy_sol_types;
10500        {
10501            #[doc(hidden)]
10502            #[allow(dead_code)]
10503            type UnderlyingSolTuple<'a> = ();
10504            #[doc(hidden)]
10505            type UnderlyingRustTuple<'a> = ();
10506            #[cfg(test)]
10507            #[allow(dead_code, unreachable_patterns)]
10508            fn _type_assertion(
10509                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10510            ) {
10511                match _t {
10512                    alloy_sol_types::private::AssertTypeEq::<
10513                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10514                    >(_) => {}
10515                }
10516            }
10517            #[automatically_derived]
10518            #[doc(hidden)]
10519            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10520                fn from(value: getVersionCall) -> Self {
10521                    ()
10522                }
10523            }
10524            #[automatically_derived]
10525            #[doc(hidden)]
10526            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10528                    Self
10529                }
10530            }
10531        }
10532        {
10533            #[doc(hidden)]
10534            #[allow(dead_code)]
10535            type UnderlyingSolTuple<'a> = (
10536                alloy::sol_types::sol_data::Uint<8>,
10537                alloy::sol_types::sol_data::Uint<8>,
10538                alloy::sol_types::sol_data::Uint<8>,
10539            );
10540            #[doc(hidden)]
10541            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10542            #[cfg(test)]
10543            #[allow(dead_code, unreachable_patterns)]
10544            fn _type_assertion(
10545                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10546            ) {
10547                match _t {
10548                    alloy_sol_types::private::AssertTypeEq::<
10549                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10550                    >(_) => {}
10551                }
10552            }
10553            #[automatically_derived]
10554            #[doc(hidden)]
10555            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10556                fn from(value: getVersionReturn) -> Self {
10557                    (value.majorVersion, value.minorVersion, value.patchVersion)
10558                }
10559            }
10560            #[automatically_derived]
10561            #[doc(hidden)]
10562            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10563                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10564                    Self {
10565                        majorVersion: tuple.0,
10566                        minorVersion: tuple.1,
10567                        patchVersion: tuple.2,
10568                    }
10569                }
10570            }
10571        }
10572        impl getVersionReturn {
10573            fn _tokenize(
10574                &self,
10575            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10576                (
10577                    <alloy::sol_types::sol_data::Uint<
10578                        8,
10579                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10580                    <alloy::sol_types::sol_data::Uint<
10581                        8,
10582                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10583                    <alloy::sol_types::sol_data::Uint<
10584                        8,
10585                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10586                )
10587            }
10588        }
10589        #[automatically_derived]
10590        impl alloy_sol_types::SolCall for getVersionCall {
10591            type Parameters<'a> = ();
10592            type Token<'a> = <Self::Parameters<
10593                'a,
10594            > as alloy_sol_types::SolType>::Token<'a>;
10595            type Return = getVersionReturn;
10596            type ReturnTuple<'a> = (
10597                alloy::sol_types::sol_data::Uint<8>,
10598                alloy::sol_types::sol_data::Uint<8>,
10599                alloy::sol_types::sol_data::Uint<8>,
10600            );
10601            type ReturnToken<'a> = <Self::ReturnTuple<
10602                'a,
10603            > as alloy_sol_types::SolType>::Token<'a>;
10604            const SIGNATURE: &'static str = "getVersion()";
10605            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10606            #[inline]
10607            fn new<'a>(
10608                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10609            ) -> Self {
10610                tuple.into()
10611            }
10612            #[inline]
10613            fn tokenize(&self) -> Self::Token<'_> {
10614                ()
10615            }
10616            #[inline]
10617            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10618                getVersionReturn::_tokenize(ret)
10619            }
10620            #[inline]
10621            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10622                <Self::ReturnTuple<
10623                    '_,
10624                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10625                    .map(Into::into)
10626            }
10627            #[inline]
10628            fn abi_decode_returns_with_config(
10629                data: &[u8],
10630                config: alloy_sol_types::abi::AbiDecoderConfig,
10631            ) -> alloy_sol_types::Result<Self::Return> {
10632                <Self::ReturnTuple<
10633                    '_,
10634                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10635                        data,
10636                        config,
10637                    )
10638                    .map(Into::into)
10639            }
10640            #[inline]
10641            fn abi_decode_returns_validate(
10642                data: &[u8],
10643            ) -> alloy_sol_types::Result<Self::Return> {
10644                Self::abi_decode_returns_with_config(
10645                    data,
10646                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10647                )
10648            }
10649        }
10650    };
10651    #[derive(serde::Serialize, serde::Deserialize)]
10652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10653    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10654```solidity
10655function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10656```*/
10657    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10658    #[derive(Clone)]
10659    pub struct initializeCall {
10660        #[allow(missing_docs)]
10661        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10662        #[allow(missing_docs)]
10663        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10664        #[allow(missing_docs)]
10665        pub _stateHistoryRetentionPeriod: u32,
10666        #[allow(missing_docs)]
10667        pub owner: alloy::sol_types::private::Address,
10668    }
10669    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10671    #[derive(Clone)]
10672    pub struct initializeReturn {}
10673    #[allow(
10674        non_camel_case_types,
10675        non_snake_case,
10676        clippy::pub_underscore_fields,
10677        clippy::style
10678    )]
10679    const _: () = {
10680        use alloy::sol_types as alloy_sol_types;
10681        {
10682            #[doc(hidden)]
10683            #[allow(dead_code)]
10684            type UnderlyingSolTuple<'a> = (
10685                LightClient::LightClientState,
10686                LightClient::StakeTableState,
10687                alloy::sol_types::sol_data::Uint<32>,
10688                alloy::sol_types::sol_data::Address,
10689            );
10690            #[doc(hidden)]
10691            type UnderlyingRustTuple<'a> = (
10692                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10693                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10694                u32,
10695                alloy::sol_types::private::Address,
10696            );
10697            #[cfg(test)]
10698            #[allow(dead_code, unreachable_patterns)]
10699            fn _type_assertion(
10700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10701            ) {
10702                match _t {
10703                    alloy_sol_types::private::AssertTypeEq::<
10704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10705                    >(_) => {}
10706                }
10707            }
10708            #[automatically_derived]
10709            #[doc(hidden)]
10710            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10711                fn from(value: initializeCall) -> Self {
10712                    (
10713                        value._genesis,
10714                        value._genesisStakeTableState,
10715                        value._stateHistoryRetentionPeriod,
10716                        value.owner,
10717                    )
10718                }
10719            }
10720            #[automatically_derived]
10721            #[doc(hidden)]
10722            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10723                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10724                    Self {
10725                        _genesis: tuple.0,
10726                        _genesisStakeTableState: tuple.1,
10727                        _stateHistoryRetentionPeriod: tuple.2,
10728                        owner: tuple.3,
10729                    }
10730                }
10731            }
10732        }
10733        {
10734            #[doc(hidden)]
10735            #[allow(dead_code)]
10736            type UnderlyingSolTuple<'a> = ();
10737            #[doc(hidden)]
10738            type UnderlyingRustTuple<'a> = ();
10739            #[cfg(test)]
10740            #[allow(dead_code, unreachable_patterns)]
10741            fn _type_assertion(
10742                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10743            ) {
10744                match _t {
10745                    alloy_sol_types::private::AssertTypeEq::<
10746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10747                    >(_) => {}
10748                }
10749            }
10750            #[automatically_derived]
10751            #[doc(hidden)]
10752            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10753                fn from(value: initializeReturn) -> Self {
10754                    ()
10755                }
10756            }
10757            #[automatically_derived]
10758            #[doc(hidden)]
10759            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10761                    Self {}
10762                }
10763            }
10764        }
10765        impl initializeReturn {
10766            fn _tokenize(
10767                &self,
10768            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10769                ()
10770            }
10771        }
10772        #[automatically_derived]
10773        impl alloy_sol_types::SolCall for initializeCall {
10774            type Parameters<'a> = (
10775                LightClient::LightClientState,
10776                LightClient::StakeTableState,
10777                alloy::sol_types::sol_data::Uint<32>,
10778                alloy::sol_types::sol_data::Address,
10779            );
10780            type Token<'a> = <Self::Parameters<
10781                'a,
10782            > as alloy_sol_types::SolType>::Token<'a>;
10783            type Return = initializeReturn;
10784            type ReturnTuple<'a> = ();
10785            type ReturnToken<'a> = <Self::ReturnTuple<
10786                'a,
10787            > as alloy_sol_types::SolType>::Token<'a>;
10788            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10789            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10790            #[inline]
10791            fn new<'a>(
10792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10793            ) -> Self {
10794                tuple.into()
10795            }
10796            #[inline]
10797            fn tokenize(&self) -> Self::Token<'_> {
10798                (
10799                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10800                        &self._genesis,
10801                    ),
10802                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10803                        &self._genesisStakeTableState,
10804                    ),
10805                    <alloy::sol_types::sol_data::Uint<
10806                        32,
10807                    > as alloy_sol_types::SolType>::tokenize(
10808                        &self._stateHistoryRetentionPeriod,
10809                    ),
10810                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10811                        &self.owner,
10812                    ),
10813                )
10814            }
10815            #[inline]
10816            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10817                initializeReturn::_tokenize(ret)
10818            }
10819            #[inline]
10820            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10821                <Self::ReturnTuple<
10822                    '_,
10823                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10824                    .map(Into::into)
10825            }
10826            #[inline]
10827            fn abi_decode_returns_with_config(
10828                data: &[u8],
10829                config: alloy_sol_types::abi::AbiDecoderConfig,
10830            ) -> alloy_sol_types::Result<Self::Return> {
10831                <Self::ReturnTuple<
10832                    '_,
10833                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10834                        data,
10835                        config,
10836                    )
10837                    .map(Into::into)
10838            }
10839            #[inline]
10840            fn abi_decode_returns_validate(
10841                data: &[u8],
10842            ) -> alloy_sol_types::Result<Self::Return> {
10843                Self::abi_decode_returns_with_config(
10844                    data,
10845                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10846                )
10847            }
10848        }
10849    };
10850    #[derive(serde::Serialize, serde::Deserialize)]
10851    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10852    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10853```solidity
10854function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10855```*/
10856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10857    #[derive(Clone)]
10858    pub struct initializeV2Call {
10859        #[allow(missing_docs)]
10860        pub _blocksPerEpoch: u64,
10861        #[allow(missing_docs)]
10862        pub _epochStartBlock: u64,
10863    }
10864    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10866    #[derive(Clone)]
10867    pub struct initializeV2Return {}
10868    #[allow(
10869        non_camel_case_types,
10870        non_snake_case,
10871        clippy::pub_underscore_fields,
10872        clippy::style
10873    )]
10874    const _: () = {
10875        use alloy::sol_types as alloy_sol_types;
10876        {
10877            #[doc(hidden)]
10878            #[allow(dead_code)]
10879            type UnderlyingSolTuple<'a> = (
10880                alloy::sol_types::sol_data::Uint<64>,
10881                alloy::sol_types::sol_data::Uint<64>,
10882            );
10883            #[doc(hidden)]
10884            type UnderlyingRustTuple<'a> = (u64, u64);
10885            #[cfg(test)]
10886            #[allow(dead_code, unreachable_patterns)]
10887            fn _type_assertion(
10888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10889            ) {
10890                match _t {
10891                    alloy_sol_types::private::AssertTypeEq::<
10892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10893                    >(_) => {}
10894                }
10895            }
10896            #[automatically_derived]
10897            #[doc(hidden)]
10898            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10899                fn from(value: initializeV2Call) -> Self {
10900                    (value._blocksPerEpoch, value._epochStartBlock)
10901                }
10902            }
10903            #[automatically_derived]
10904            #[doc(hidden)]
10905            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10907                    Self {
10908                        _blocksPerEpoch: tuple.0,
10909                        _epochStartBlock: tuple.1,
10910                    }
10911                }
10912            }
10913        }
10914        {
10915            #[doc(hidden)]
10916            #[allow(dead_code)]
10917            type UnderlyingSolTuple<'a> = ();
10918            #[doc(hidden)]
10919            type UnderlyingRustTuple<'a> = ();
10920            #[cfg(test)]
10921            #[allow(dead_code, unreachable_patterns)]
10922            fn _type_assertion(
10923                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10924            ) {
10925                match _t {
10926                    alloy_sol_types::private::AssertTypeEq::<
10927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10928                    >(_) => {}
10929                }
10930            }
10931            #[automatically_derived]
10932            #[doc(hidden)]
10933            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10934                fn from(value: initializeV2Return) -> Self {
10935                    ()
10936                }
10937            }
10938            #[automatically_derived]
10939            #[doc(hidden)]
10940            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10941                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10942                    Self {}
10943                }
10944            }
10945        }
10946        impl initializeV2Return {
10947            fn _tokenize(
10948                &self,
10949            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10950                ()
10951            }
10952        }
10953        #[automatically_derived]
10954        impl alloy_sol_types::SolCall for initializeV2Call {
10955            type Parameters<'a> = (
10956                alloy::sol_types::sol_data::Uint<64>,
10957                alloy::sol_types::sol_data::Uint<64>,
10958            );
10959            type Token<'a> = <Self::Parameters<
10960                'a,
10961            > as alloy_sol_types::SolType>::Token<'a>;
10962            type Return = initializeV2Return;
10963            type ReturnTuple<'a> = ();
10964            type ReturnToken<'a> = <Self::ReturnTuple<
10965                'a,
10966            > as alloy_sol_types::SolType>::Token<'a>;
10967            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10968            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10969            #[inline]
10970            fn new<'a>(
10971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10972            ) -> Self {
10973                tuple.into()
10974            }
10975            #[inline]
10976            fn tokenize(&self) -> Self::Token<'_> {
10977                (
10978                    <alloy::sol_types::sol_data::Uint<
10979                        64,
10980                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10981                    <alloy::sol_types::sol_data::Uint<
10982                        64,
10983                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10984                )
10985            }
10986            #[inline]
10987            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10988                initializeV2Return::_tokenize(ret)
10989            }
10990            #[inline]
10991            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10992                <Self::ReturnTuple<
10993                    '_,
10994                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10995                    .map(Into::into)
10996            }
10997            #[inline]
10998            fn abi_decode_returns_with_config(
10999                data: &[u8],
11000                config: alloy_sol_types::abi::AbiDecoderConfig,
11001            ) -> alloy_sol_types::Result<Self::Return> {
11002                <Self::ReturnTuple<
11003                    '_,
11004                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11005                        data,
11006                        config,
11007                    )
11008                    .map(Into::into)
11009            }
11010            #[inline]
11011            fn abi_decode_returns_validate(
11012                data: &[u8],
11013            ) -> alloy_sol_types::Result<Self::Return> {
11014                Self::abi_decode_returns_with_config(
11015                    data,
11016                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11017                )
11018            }
11019        }
11020    };
11021    #[derive(serde::Serialize, serde::Deserialize)]
11022    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11023    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11024```solidity
11025function isEpochRoot(uint64 blockHeight) external view returns (bool);
11026```*/
11027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11028    #[derive(Clone)]
11029    pub struct isEpochRootCall {
11030        #[allow(missing_docs)]
11031        pub blockHeight: u64,
11032    }
11033    #[derive(serde::Serialize, serde::Deserialize)]
11034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11035    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11036    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11037    #[derive(Clone)]
11038    pub struct isEpochRootReturn {
11039        #[allow(missing_docs)]
11040        pub _0: bool,
11041    }
11042    #[allow(
11043        non_camel_case_types,
11044        non_snake_case,
11045        clippy::pub_underscore_fields,
11046        clippy::style
11047    )]
11048    const _: () = {
11049        use alloy::sol_types as alloy_sol_types;
11050        {
11051            #[doc(hidden)]
11052            #[allow(dead_code)]
11053            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11054            #[doc(hidden)]
11055            type UnderlyingRustTuple<'a> = (u64,);
11056            #[cfg(test)]
11057            #[allow(dead_code, unreachable_patterns)]
11058            fn _type_assertion(
11059                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11060            ) {
11061                match _t {
11062                    alloy_sol_types::private::AssertTypeEq::<
11063                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11064                    >(_) => {}
11065                }
11066            }
11067            #[automatically_derived]
11068            #[doc(hidden)]
11069            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11070                fn from(value: isEpochRootCall) -> Self {
11071                    (value.blockHeight,)
11072                }
11073            }
11074            #[automatically_derived]
11075            #[doc(hidden)]
11076            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11078                    Self { blockHeight: tuple.0 }
11079                }
11080            }
11081        }
11082        {
11083            #[doc(hidden)]
11084            #[allow(dead_code)]
11085            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11086            #[doc(hidden)]
11087            type UnderlyingRustTuple<'a> = (bool,);
11088            #[cfg(test)]
11089            #[allow(dead_code, unreachable_patterns)]
11090            fn _type_assertion(
11091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11092            ) {
11093                match _t {
11094                    alloy_sol_types::private::AssertTypeEq::<
11095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11096                    >(_) => {}
11097                }
11098            }
11099            #[automatically_derived]
11100            #[doc(hidden)]
11101            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11102                fn from(value: isEpochRootReturn) -> Self {
11103                    (value._0,)
11104                }
11105            }
11106            #[automatically_derived]
11107            #[doc(hidden)]
11108            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11110                    Self { _0: tuple.0 }
11111                }
11112            }
11113        }
11114        #[automatically_derived]
11115        impl alloy_sol_types::SolCall for isEpochRootCall {
11116            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11117            type Token<'a> = <Self::Parameters<
11118                'a,
11119            > as alloy_sol_types::SolType>::Token<'a>;
11120            type Return = bool;
11121            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11122            type ReturnToken<'a> = <Self::ReturnTuple<
11123                'a,
11124            > as alloy_sol_types::SolType>::Token<'a>;
11125            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11126            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11127            #[inline]
11128            fn new<'a>(
11129                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11130            ) -> Self {
11131                tuple.into()
11132            }
11133            #[inline]
11134            fn tokenize(&self) -> Self::Token<'_> {
11135                (
11136                    <alloy::sol_types::sol_data::Uint<
11137                        64,
11138                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11139                )
11140            }
11141            #[inline]
11142            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11143                (
11144                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11145                        ret,
11146                    ),
11147                )
11148            }
11149            #[inline]
11150            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11151                <Self::ReturnTuple<
11152                    '_,
11153                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11154                    .map(|r| {
11155                        let r: isEpochRootReturn = r.into();
11156                        r._0
11157                    })
11158            }
11159            #[inline]
11160            fn abi_decode_returns_with_config(
11161                data: &[u8],
11162                config: alloy_sol_types::abi::AbiDecoderConfig,
11163            ) -> alloy_sol_types::Result<Self::Return> {
11164                <Self::ReturnTuple<
11165                    '_,
11166                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11167                        data,
11168                        config,
11169                    )
11170                    .map(|r| {
11171                        let r: isEpochRootReturn = r.into();
11172                        r._0
11173                    })
11174            }
11175            #[inline]
11176            fn abi_decode_returns_validate(
11177                data: &[u8],
11178            ) -> alloy_sol_types::Result<Self::Return> {
11179                Self::abi_decode_returns_with_config(
11180                    data,
11181                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11182                )
11183            }
11184        }
11185    };
11186    #[derive(serde::Serialize, serde::Deserialize)]
11187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11188    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11189```solidity
11190function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11191```*/
11192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11193    #[derive(Clone)]
11194    pub struct isGtEpochRootCall {
11195        #[allow(missing_docs)]
11196        pub blockHeight: u64,
11197    }
11198    #[derive(serde::Serialize, serde::Deserialize)]
11199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11200    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11201    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11202    #[derive(Clone)]
11203    pub struct isGtEpochRootReturn {
11204        #[allow(missing_docs)]
11205        pub _0: bool,
11206    }
11207    #[allow(
11208        non_camel_case_types,
11209        non_snake_case,
11210        clippy::pub_underscore_fields,
11211        clippy::style
11212    )]
11213    const _: () = {
11214        use alloy::sol_types as alloy_sol_types;
11215        {
11216            #[doc(hidden)]
11217            #[allow(dead_code)]
11218            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11219            #[doc(hidden)]
11220            type UnderlyingRustTuple<'a> = (u64,);
11221            #[cfg(test)]
11222            #[allow(dead_code, unreachable_patterns)]
11223            fn _type_assertion(
11224                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11225            ) {
11226                match _t {
11227                    alloy_sol_types::private::AssertTypeEq::<
11228                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11229                    >(_) => {}
11230                }
11231            }
11232            #[automatically_derived]
11233            #[doc(hidden)]
11234            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11235                fn from(value: isGtEpochRootCall) -> Self {
11236                    (value.blockHeight,)
11237                }
11238            }
11239            #[automatically_derived]
11240            #[doc(hidden)]
11241            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11243                    Self { blockHeight: tuple.0 }
11244                }
11245            }
11246        }
11247        {
11248            #[doc(hidden)]
11249            #[allow(dead_code)]
11250            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11251            #[doc(hidden)]
11252            type UnderlyingRustTuple<'a> = (bool,);
11253            #[cfg(test)]
11254            #[allow(dead_code, unreachable_patterns)]
11255            fn _type_assertion(
11256                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11257            ) {
11258                match _t {
11259                    alloy_sol_types::private::AssertTypeEq::<
11260                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11261                    >(_) => {}
11262                }
11263            }
11264            #[automatically_derived]
11265            #[doc(hidden)]
11266            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11267                fn from(value: isGtEpochRootReturn) -> Self {
11268                    (value._0,)
11269                }
11270            }
11271            #[automatically_derived]
11272            #[doc(hidden)]
11273            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11275                    Self { _0: tuple.0 }
11276                }
11277            }
11278        }
11279        #[automatically_derived]
11280        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11281            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11282            type Token<'a> = <Self::Parameters<
11283                'a,
11284            > as alloy_sol_types::SolType>::Token<'a>;
11285            type Return = bool;
11286            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11287            type ReturnToken<'a> = <Self::ReturnTuple<
11288                'a,
11289            > as alloy_sol_types::SolType>::Token<'a>;
11290            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11291            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11292            #[inline]
11293            fn new<'a>(
11294                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11295            ) -> Self {
11296                tuple.into()
11297            }
11298            #[inline]
11299            fn tokenize(&self) -> Self::Token<'_> {
11300                (
11301                    <alloy::sol_types::sol_data::Uint<
11302                        64,
11303                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11304                )
11305            }
11306            #[inline]
11307            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11308                (
11309                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11310                        ret,
11311                    ),
11312                )
11313            }
11314            #[inline]
11315            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11316                <Self::ReturnTuple<
11317                    '_,
11318                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11319                    .map(|r| {
11320                        let r: isGtEpochRootReturn = r.into();
11321                        r._0
11322                    })
11323            }
11324            #[inline]
11325            fn abi_decode_returns_with_config(
11326                data: &[u8],
11327                config: alloy_sol_types::abi::AbiDecoderConfig,
11328            ) -> alloy_sol_types::Result<Self::Return> {
11329                <Self::ReturnTuple<
11330                    '_,
11331                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11332                        data,
11333                        config,
11334                    )
11335                    .map(|r| {
11336                        let r: isGtEpochRootReturn = r.into();
11337                        r._0
11338                    })
11339            }
11340            #[inline]
11341            fn abi_decode_returns_validate(
11342                data: &[u8],
11343            ) -> alloy_sol_types::Result<Self::Return> {
11344                Self::abi_decode_returns_with_config(
11345                    data,
11346                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11347                )
11348            }
11349        }
11350    };
11351    #[derive(serde::Serialize, serde::Deserialize)]
11352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11353    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11354```solidity
11355function isPermissionedProverEnabled() external view returns (bool);
11356```*/
11357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11358    #[derive(Clone)]
11359    pub struct isPermissionedProverEnabledCall;
11360    #[derive(serde::Serialize, serde::Deserialize)]
11361    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11362    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11364    #[derive(Clone)]
11365    pub struct isPermissionedProverEnabledReturn {
11366        #[allow(missing_docs)]
11367        pub _0: bool,
11368    }
11369    #[allow(
11370        non_camel_case_types,
11371        non_snake_case,
11372        clippy::pub_underscore_fields,
11373        clippy::style
11374    )]
11375    const _: () = {
11376        use alloy::sol_types as alloy_sol_types;
11377        {
11378            #[doc(hidden)]
11379            #[allow(dead_code)]
11380            type UnderlyingSolTuple<'a> = ();
11381            #[doc(hidden)]
11382            type UnderlyingRustTuple<'a> = ();
11383            #[cfg(test)]
11384            #[allow(dead_code, unreachable_patterns)]
11385            fn _type_assertion(
11386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11387            ) {
11388                match _t {
11389                    alloy_sol_types::private::AssertTypeEq::<
11390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11391                    >(_) => {}
11392                }
11393            }
11394            #[automatically_derived]
11395            #[doc(hidden)]
11396            impl ::core::convert::From<isPermissionedProverEnabledCall>
11397            for UnderlyingRustTuple<'_> {
11398                fn from(value: isPermissionedProverEnabledCall) -> Self {
11399                    ()
11400                }
11401            }
11402            #[automatically_derived]
11403            #[doc(hidden)]
11404            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11405            for isPermissionedProverEnabledCall {
11406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11407                    Self
11408                }
11409            }
11410        }
11411        {
11412            #[doc(hidden)]
11413            #[allow(dead_code)]
11414            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11415            #[doc(hidden)]
11416            type UnderlyingRustTuple<'a> = (bool,);
11417            #[cfg(test)]
11418            #[allow(dead_code, unreachable_patterns)]
11419            fn _type_assertion(
11420                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11421            ) {
11422                match _t {
11423                    alloy_sol_types::private::AssertTypeEq::<
11424                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11425                    >(_) => {}
11426                }
11427            }
11428            #[automatically_derived]
11429            #[doc(hidden)]
11430            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11431            for UnderlyingRustTuple<'_> {
11432                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11433                    (value._0,)
11434                }
11435            }
11436            #[automatically_derived]
11437            #[doc(hidden)]
11438            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11439            for isPermissionedProverEnabledReturn {
11440                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11441                    Self { _0: tuple.0 }
11442                }
11443            }
11444        }
11445        #[automatically_derived]
11446        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11447            type Parameters<'a> = ();
11448            type Token<'a> = <Self::Parameters<
11449                'a,
11450            > as alloy_sol_types::SolType>::Token<'a>;
11451            type Return = bool;
11452            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11453            type ReturnToken<'a> = <Self::ReturnTuple<
11454                'a,
11455            > as alloy_sol_types::SolType>::Token<'a>;
11456            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11457            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11458            #[inline]
11459            fn new<'a>(
11460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11461            ) -> Self {
11462                tuple.into()
11463            }
11464            #[inline]
11465            fn tokenize(&self) -> Self::Token<'_> {
11466                ()
11467            }
11468            #[inline]
11469            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11470                (
11471                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11472                        ret,
11473                    ),
11474                )
11475            }
11476            #[inline]
11477            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11478                <Self::ReturnTuple<
11479                    '_,
11480                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11481                    .map(|r| {
11482                        let r: isPermissionedProverEnabledReturn = r.into();
11483                        r._0
11484                    })
11485            }
11486            #[inline]
11487            fn abi_decode_returns_with_config(
11488                data: &[u8],
11489                config: alloy_sol_types::abi::AbiDecoderConfig,
11490            ) -> alloy_sol_types::Result<Self::Return> {
11491                <Self::ReturnTuple<
11492                    '_,
11493                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11494                        data,
11495                        config,
11496                    )
11497                    .map(|r| {
11498                        let r: isPermissionedProverEnabledReturn = r.into();
11499                        r._0
11500                    })
11501            }
11502            #[inline]
11503            fn abi_decode_returns_validate(
11504                data: &[u8],
11505            ) -> alloy_sol_types::Result<Self::Return> {
11506                Self::abi_decode_returns_with_config(
11507                    data,
11508                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11509                )
11510            }
11511        }
11512    };
11513    #[derive(serde::Serialize, serde::Deserialize)]
11514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11515    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11516```solidity
11517function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11518```*/
11519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11520    #[derive(Clone)]
11521    pub struct lagOverEscapeHatchThresholdCall {
11522        #[allow(missing_docs)]
11523        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11524        #[allow(missing_docs)]
11525        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11526    }
11527    #[derive(serde::Serialize, serde::Deserialize)]
11528    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11529    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11531    #[derive(Clone)]
11532    pub struct lagOverEscapeHatchThresholdReturn {
11533        #[allow(missing_docs)]
11534        pub _0: bool,
11535    }
11536    #[allow(
11537        non_camel_case_types,
11538        non_snake_case,
11539        clippy::pub_underscore_fields,
11540        clippy::style
11541    )]
11542    const _: () = {
11543        use alloy::sol_types as alloy_sol_types;
11544        {
11545            #[doc(hidden)]
11546            #[allow(dead_code)]
11547            type UnderlyingSolTuple<'a> = (
11548                alloy::sol_types::sol_data::Uint<256>,
11549                alloy::sol_types::sol_data::Uint<256>,
11550            );
11551            #[doc(hidden)]
11552            type UnderlyingRustTuple<'a> = (
11553                alloy::sol_types::private::primitives::aliases::U256,
11554                alloy::sol_types::private::primitives::aliases::U256,
11555            );
11556            #[cfg(test)]
11557            #[allow(dead_code, unreachable_patterns)]
11558            fn _type_assertion(
11559                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11560            ) {
11561                match _t {
11562                    alloy_sol_types::private::AssertTypeEq::<
11563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11564                    >(_) => {}
11565                }
11566            }
11567            #[automatically_derived]
11568            #[doc(hidden)]
11569            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11570            for UnderlyingRustTuple<'_> {
11571                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11572                    (value.blockNumber, value.threshold)
11573                }
11574            }
11575            #[automatically_derived]
11576            #[doc(hidden)]
11577            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11578            for lagOverEscapeHatchThresholdCall {
11579                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11580                    Self {
11581                        blockNumber: tuple.0,
11582                        threshold: tuple.1,
11583                    }
11584                }
11585            }
11586        }
11587        {
11588            #[doc(hidden)]
11589            #[allow(dead_code)]
11590            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11591            #[doc(hidden)]
11592            type UnderlyingRustTuple<'a> = (bool,);
11593            #[cfg(test)]
11594            #[allow(dead_code, unreachable_patterns)]
11595            fn _type_assertion(
11596                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11597            ) {
11598                match _t {
11599                    alloy_sol_types::private::AssertTypeEq::<
11600                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11601                    >(_) => {}
11602                }
11603            }
11604            #[automatically_derived]
11605            #[doc(hidden)]
11606            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11607            for UnderlyingRustTuple<'_> {
11608                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11609                    (value._0,)
11610                }
11611            }
11612            #[automatically_derived]
11613            #[doc(hidden)]
11614            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11615            for lagOverEscapeHatchThresholdReturn {
11616                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11617                    Self { _0: tuple.0 }
11618                }
11619            }
11620        }
11621        #[automatically_derived]
11622        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11623            type Parameters<'a> = (
11624                alloy::sol_types::sol_data::Uint<256>,
11625                alloy::sol_types::sol_data::Uint<256>,
11626            );
11627            type Token<'a> = <Self::Parameters<
11628                'a,
11629            > as alloy_sol_types::SolType>::Token<'a>;
11630            type Return = bool;
11631            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11632            type ReturnToken<'a> = <Self::ReturnTuple<
11633                'a,
11634            > as alloy_sol_types::SolType>::Token<'a>;
11635            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11636            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11637            #[inline]
11638            fn new<'a>(
11639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11640            ) -> Self {
11641                tuple.into()
11642            }
11643            #[inline]
11644            fn tokenize(&self) -> Self::Token<'_> {
11645                (
11646                    <alloy::sol_types::sol_data::Uint<
11647                        256,
11648                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11649                    <alloy::sol_types::sol_data::Uint<
11650                        256,
11651                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11652                )
11653            }
11654            #[inline]
11655            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11656                (
11657                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11658                        ret,
11659                    ),
11660                )
11661            }
11662            #[inline]
11663            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11664                <Self::ReturnTuple<
11665                    '_,
11666                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11667                    .map(|r| {
11668                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11669                        r._0
11670                    })
11671            }
11672            #[inline]
11673            fn abi_decode_returns_with_config(
11674                data: &[u8],
11675                config: alloy_sol_types::abi::AbiDecoderConfig,
11676            ) -> alloy_sol_types::Result<Self::Return> {
11677                <Self::ReturnTuple<
11678                    '_,
11679                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11680                        data,
11681                        config,
11682                    )
11683                    .map(|r| {
11684                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11685                        r._0
11686                    })
11687            }
11688            #[inline]
11689            fn abi_decode_returns_validate(
11690                data: &[u8],
11691            ) -> alloy_sol_types::Result<Self::Return> {
11692                Self::abi_decode_returns_with_config(
11693                    data,
11694                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11695                )
11696            }
11697        }
11698    };
11699    #[derive(serde::Serialize, serde::Deserialize)]
11700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11701    /**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`.
11702```solidity
11703function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11704```*/
11705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11706    #[derive(Clone)]
11707    pub struct newFinalizedState_0Call {
11708        #[allow(missing_docs)]
11709        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11710        #[allow(missing_docs)]
11711        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11712    }
11713    ///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.
11714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11715    #[derive(Clone)]
11716    pub struct newFinalizedState_0Return {}
11717    #[allow(
11718        non_camel_case_types,
11719        non_snake_case,
11720        clippy::pub_underscore_fields,
11721        clippy::style
11722    )]
11723    const _: () = {
11724        use alloy::sol_types as alloy_sol_types;
11725        {
11726            #[doc(hidden)]
11727            #[allow(dead_code)]
11728            type UnderlyingSolTuple<'a> = (
11729                LightClient::LightClientState,
11730                IPlonkVerifier::PlonkProof,
11731            );
11732            #[doc(hidden)]
11733            type UnderlyingRustTuple<'a> = (
11734                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11735                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11736            );
11737            #[cfg(test)]
11738            #[allow(dead_code, unreachable_patterns)]
11739            fn _type_assertion(
11740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11741            ) {
11742                match _t {
11743                    alloy_sol_types::private::AssertTypeEq::<
11744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11745                    >(_) => {}
11746                }
11747            }
11748            #[automatically_derived]
11749            #[doc(hidden)]
11750            impl ::core::convert::From<newFinalizedState_0Call>
11751            for UnderlyingRustTuple<'_> {
11752                fn from(value: newFinalizedState_0Call) -> Self {
11753                    (value._0, value._1)
11754                }
11755            }
11756            #[automatically_derived]
11757            #[doc(hidden)]
11758            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11759            for newFinalizedState_0Call {
11760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11761                    Self { _0: tuple.0, _1: tuple.1 }
11762                }
11763            }
11764        }
11765        {
11766            #[doc(hidden)]
11767            #[allow(dead_code)]
11768            type UnderlyingSolTuple<'a> = ();
11769            #[doc(hidden)]
11770            type UnderlyingRustTuple<'a> = ();
11771            #[cfg(test)]
11772            #[allow(dead_code, unreachable_patterns)]
11773            fn _type_assertion(
11774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11775            ) {
11776                match _t {
11777                    alloy_sol_types::private::AssertTypeEq::<
11778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11779                    >(_) => {}
11780                }
11781            }
11782            #[automatically_derived]
11783            #[doc(hidden)]
11784            impl ::core::convert::From<newFinalizedState_0Return>
11785            for UnderlyingRustTuple<'_> {
11786                fn from(value: newFinalizedState_0Return) -> Self {
11787                    ()
11788                }
11789            }
11790            #[automatically_derived]
11791            #[doc(hidden)]
11792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11793            for newFinalizedState_0Return {
11794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11795                    Self {}
11796                }
11797            }
11798        }
11799        impl newFinalizedState_0Return {
11800            fn _tokenize(
11801                &self,
11802            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11803                ()
11804            }
11805        }
11806        #[automatically_derived]
11807        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11808            type Parameters<'a> = (
11809                LightClient::LightClientState,
11810                IPlonkVerifier::PlonkProof,
11811            );
11812            type Token<'a> = <Self::Parameters<
11813                'a,
11814            > as alloy_sol_types::SolType>::Token<'a>;
11815            type Return = newFinalizedState_0Return;
11816            type ReturnTuple<'a> = ();
11817            type ReturnToken<'a> = <Self::ReturnTuple<
11818                'a,
11819            > as alloy_sol_types::SolType>::Token<'a>;
11820            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))";
11821            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11822            #[inline]
11823            fn new<'a>(
11824                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11825            ) -> Self {
11826                tuple.into()
11827            }
11828            #[inline]
11829            fn tokenize(&self) -> Self::Token<'_> {
11830                (
11831                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11832                        &self._0,
11833                    ),
11834                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11835                        &self._1,
11836                    ),
11837                )
11838            }
11839            #[inline]
11840            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11841                newFinalizedState_0Return::_tokenize(ret)
11842            }
11843            #[inline]
11844            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11845                <Self::ReturnTuple<
11846                    '_,
11847                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11848                    .map(Into::into)
11849            }
11850            #[inline]
11851            fn abi_decode_returns_with_config(
11852                data: &[u8],
11853                config: alloy_sol_types::abi::AbiDecoderConfig,
11854            ) -> alloy_sol_types::Result<Self::Return> {
11855                <Self::ReturnTuple<
11856                    '_,
11857                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11858                        data,
11859                        config,
11860                    )
11861                    .map(Into::into)
11862            }
11863            #[inline]
11864            fn abi_decode_returns_validate(
11865                data: &[u8],
11866            ) -> alloy_sol_types::Result<Self::Return> {
11867                Self::abi_decode_returns_with_config(
11868                    data,
11869                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11870                )
11871            }
11872        }
11873    };
11874    #[derive(serde::Serialize, serde::Deserialize)]
11875    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11876    /**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`.
11877```solidity
11878function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11879```*/
11880    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11881    #[derive(Clone)]
11882    pub struct newFinalizedState_1Call {
11883        #[allow(missing_docs)]
11884        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11885        #[allow(missing_docs)]
11886        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11887        #[allow(missing_docs)]
11888        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11889    }
11890    ///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.
11891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11892    #[derive(Clone)]
11893    pub struct newFinalizedState_1Return {}
11894    #[allow(
11895        non_camel_case_types,
11896        non_snake_case,
11897        clippy::pub_underscore_fields,
11898        clippy::style
11899    )]
11900    const _: () = {
11901        use alloy::sol_types as alloy_sol_types;
11902        {
11903            #[doc(hidden)]
11904            #[allow(dead_code)]
11905            type UnderlyingSolTuple<'a> = (
11906                LightClient::LightClientState,
11907                LightClient::StakeTableState,
11908                IPlonkVerifier::PlonkProof,
11909            );
11910            #[doc(hidden)]
11911            type UnderlyingRustTuple<'a> = (
11912                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11913                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11914                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11915            );
11916            #[cfg(test)]
11917            #[allow(dead_code, unreachable_patterns)]
11918            fn _type_assertion(
11919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11920            ) {
11921                match _t {
11922                    alloy_sol_types::private::AssertTypeEq::<
11923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11924                    >(_) => {}
11925                }
11926            }
11927            #[automatically_derived]
11928            #[doc(hidden)]
11929            impl ::core::convert::From<newFinalizedState_1Call>
11930            for UnderlyingRustTuple<'_> {
11931                fn from(value: newFinalizedState_1Call) -> Self {
11932                    (value.newState, value.nextStakeTable, value.proof)
11933                }
11934            }
11935            #[automatically_derived]
11936            #[doc(hidden)]
11937            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11938            for newFinalizedState_1Call {
11939                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11940                    Self {
11941                        newState: tuple.0,
11942                        nextStakeTable: tuple.1,
11943                        proof: tuple.2,
11944                    }
11945                }
11946            }
11947        }
11948        {
11949            #[doc(hidden)]
11950            #[allow(dead_code)]
11951            type UnderlyingSolTuple<'a> = ();
11952            #[doc(hidden)]
11953            type UnderlyingRustTuple<'a> = ();
11954            #[cfg(test)]
11955            #[allow(dead_code, unreachable_patterns)]
11956            fn _type_assertion(
11957                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11958            ) {
11959                match _t {
11960                    alloy_sol_types::private::AssertTypeEq::<
11961                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11962                    >(_) => {}
11963                }
11964            }
11965            #[automatically_derived]
11966            #[doc(hidden)]
11967            impl ::core::convert::From<newFinalizedState_1Return>
11968            for UnderlyingRustTuple<'_> {
11969                fn from(value: newFinalizedState_1Return) -> Self {
11970                    ()
11971                }
11972            }
11973            #[automatically_derived]
11974            #[doc(hidden)]
11975            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11976            for newFinalizedState_1Return {
11977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11978                    Self {}
11979                }
11980            }
11981        }
11982        impl newFinalizedState_1Return {
11983            fn _tokenize(
11984                &self,
11985            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11986                ()
11987            }
11988        }
11989        #[automatically_derived]
11990        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11991            type Parameters<'a> = (
11992                LightClient::LightClientState,
11993                LightClient::StakeTableState,
11994                IPlonkVerifier::PlonkProof,
11995            );
11996            type Token<'a> = <Self::Parameters<
11997                'a,
11998            > as alloy_sol_types::SolType>::Token<'a>;
11999            type Return = newFinalizedState_1Return;
12000            type ReturnTuple<'a> = ();
12001            type ReturnToken<'a> = <Self::ReturnTuple<
12002                'a,
12003            > as alloy_sol_types::SolType>::Token<'a>;
12004            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))";
12005            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12006            #[inline]
12007            fn new<'a>(
12008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12009            ) -> Self {
12010                tuple.into()
12011            }
12012            #[inline]
12013            fn tokenize(&self) -> Self::Token<'_> {
12014                (
12015                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12016                        &self.newState,
12017                    ),
12018                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12019                        &self.nextStakeTable,
12020                    ),
12021                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12022                        &self.proof,
12023                    ),
12024                )
12025            }
12026            #[inline]
12027            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12028                newFinalizedState_1Return::_tokenize(ret)
12029            }
12030            #[inline]
12031            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12032                <Self::ReturnTuple<
12033                    '_,
12034                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12035                    .map(Into::into)
12036            }
12037            #[inline]
12038            fn abi_decode_returns_with_config(
12039                data: &[u8],
12040                config: alloy_sol_types::abi::AbiDecoderConfig,
12041            ) -> alloy_sol_types::Result<Self::Return> {
12042                <Self::ReturnTuple<
12043                    '_,
12044                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12045                        data,
12046                        config,
12047                    )
12048                    .map(Into::into)
12049            }
12050            #[inline]
12051            fn abi_decode_returns_validate(
12052                data: &[u8],
12053            ) -> alloy_sol_types::Result<Self::Return> {
12054                Self::abi_decode_returns_with_config(
12055                    data,
12056                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12057                )
12058            }
12059        }
12060    };
12061    #[derive(serde::Serialize, serde::Deserialize)]
12062    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12063    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12064```solidity
12065function owner() external view returns (address);
12066```*/
12067    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12068    #[derive(Clone)]
12069    pub struct ownerCall;
12070    #[derive(serde::Serialize, serde::Deserialize)]
12071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12072    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12074    #[derive(Clone)]
12075    pub struct ownerReturn {
12076        #[allow(missing_docs)]
12077        pub _0: alloy::sol_types::private::Address,
12078    }
12079    #[allow(
12080        non_camel_case_types,
12081        non_snake_case,
12082        clippy::pub_underscore_fields,
12083        clippy::style
12084    )]
12085    const _: () = {
12086        use alloy::sol_types as alloy_sol_types;
12087        {
12088            #[doc(hidden)]
12089            #[allow(dead_code)]
12090            type UnderlyingSolTuple<'a> = ();
12091            #[doc(hidden)]
12092            type UnderlyingRustTuple<'a> = ();
12093            #[cfg(test)]
12094            #[allow(dead_code, unreachable_patterns)]
12095            fn _type_assertion(
12096                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12097            ) {
12098                match _t {
12099                    alloy_sol_types::private::AssertTypeEq::<
12100                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12101                    >(_) => {}
12102                }
12103            }
12104            #[automatically_derived]
12105            #[doc(hidden)]
12106            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12107                fn from(value: ownerCall) -> Self {
12108                    ()
12109                }
12110            }
12111            #[automatically_derived]
12112            #[doc(hidden)]
12113            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12114                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12115                    Self
12116                }
12117            }
12118        }
12119        {
12120            #[doc(hidden)]
12121            #[allow(dead_code)]
12122            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12123            #[doc(hidden)]
12124            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12125            #[cfg(test)]
12126            #[allow(dead_code, unreachable_patterns)]
12127            fn _type_assertion(
12128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12129            ) {
12130                match _t {
12131                    alloy_sol_types::private::AssertTypeEq::<
12132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12133                    >(_) => {}
12134                }
12135            }
12136            #[automatically_derived]
12137            #[doc(hidden)]
12138            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12139                fn from(value: ownerReturn) -> Self {
12140                    (value._0,)
12141                }
12142            }
12143            #[automatically_derived]
12144            #[doc(hidden)]
12145            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12147                    Self { _0: tuple.0 }
12148                }
12149            }
12150        }
12151        #[automatically_derived]
12152        impl alloy_sol_types::SolCall for ownerCall {
12153            type Parameters<'a> = ();
12154            type Token<'a> = <Self::Parameters<
12155                'a,
12156            > as alloy_sol_types::SolType>::Token<'a>;
12157            type Return = alloy::sol_types::private::Address;
12158            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12159            type ReturnToken<'a> = <Self::ReturnTuple<
12160                'a,
12161            > as alloy_sol_types::SolType>::Token<'a>;
12162            const SIGNATURE: &'static str = "owner()";
12163            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12164            #[inline]
12165            fn new<'a>(
12166                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12167            ) -> Self {
12168                tuple.into()
12169            }
12170            #[inline]
12171            fn tokenize(&self) -> Self::Token<'_> {
12172                ()
12173            }
12174            #[inline]
12175            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12176                (
12177                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12178                        ret,
12179                    ),
12180                )
12181            }
12182            #[inline]
12183            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12184                <Self::ReturnTuple<
12185                    '_,
12186                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12187                    .map(|r| {
12188                        let r: ownerReturn = r.into();
12189                        r._0
12190                    })
12191            }
12192            #[inline]
12193            fn abi_decode_returns_with_config(
12194                data: &[u8],
12195                config: alloy_sol_types::abi::AbiDecoderConfig,
12196            ) -> alloy_sol_types::Result<Self::Return> {
12197                <Self::ReturnTuple<
12198                    '_,
12199                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12200                        data,
12201                        config,
12202                    )
12203                    .map(|r| {
12204                        let r: ownerReturn = r.into();
12205                        r._0
12206                    })
12207            }
12208            #[inline]
12209            fn abi_decode_returns_validate(
12210                data: &[u8],
12211            ) -> alloy_sol_types::Result<Self::Return> {
12212                Self::abi_decode_returns_with_config(
12213                    data,
12214                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12215                )
12216            }
12217        }
12218    };
12219    #[derive(serde::Serialize, serde::Deserialize)]
12220    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12221    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12222```solidity
12223function permissionedProver() external view returns (address);
12224```*/
12225    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12226    #[derive(Clone)]
12227    pub struct permissionedProverCall;
12228    #[derive(serde::Serialize, serde::Deserialize)]
12229    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12230    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12232    #[derive(Clone)]
12233    pub struct permissionedProverReturn {
12234        #[allow(missing_docs)]
12235        pub _0: alloy::sol_types::private::Address,
12236    }
12237    #[allow(
12238        non_camel_case_types,
12239        non_snake_case,
12240        clippy::pub_underscore_fields,
12241        clippy::style
12242    )]
12243    const _: () = {
12244        use alloy::sol_types as alloy_sol_types;
12245        {
12246            #[doc(hidden)]
12247            #[allow(dead_code)]
12248            type UnderlyingSolTuple<'a> = ();
12249            #[doc(hidden)]
12250            type UnderlyingRustTuple<'a> = ();
12251            #[cfg(test)]
12252            #[allow(dead_code, unreachable_patterns)]
12253            fn _type_assertion(
12254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12255            ) {
12256                match _t {
12257                    alloy_sol_types::private::AssertTypeEq::<
12258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12259                    >(_) => {}
12260                }
12261            }
12262            #[automatically_derived]
12263            #[doc(hidden)]
12264            impl ::core::convert::From<permissionedProverCall>
12265            for UnderlyingRustTuple<'_> {
12266                fn from(value: permissionedProverCall) -> Self {
12267                    ()
12268                }
12269            }
12270            #[automatically_derived]
12271            #[doc(hidden)]
12272            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12273            for permissionedProverCall {
12274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12275                    Self
12276                }
12277            }
12278        }
12279        {
12280            #[doc(hidden)]
12281            #[allow(dead_code)]
12282            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12283            #[doc(hidden)]
12284            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12285            #[cfg(test)]
12286            #[allow(dead_code, unreachable_patterns)]
12287            fn _type_assertion(
12288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12289            ) {
12290                match _t {
12291                    alloy_sol_types::private::AssertTypeEq::<
12292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12293                    >(_) => {}
12294                }
12295            }
12296            #[automatically_derived]
12297            #[doc(hidden)]
12298            impl ::core::convert::From<permissionedProverReturn>
12299            for UnderlyingRustTuple<'_> {
12300                fn from(value: permissionedProverReturn) -> Self {
12301                    (value._0,)
12302                }
12303            }
12304            #[automatically_derived]
12305            #[doc(hidden)]
12306            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12307            for permissionedProverReturn {
12308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12309                    Self { _0: tuple.0 }
12310                }
12311            }
12312        }
12313        #[automatically_derived]
12314        impl alloy_sol_types::SolCall for permissionedProverCall {
12315            type Parameters<'a> = ();
12316            type Token<'a> = <Self::Parameters<
12317                'a,
12318            > as alloy_sol_types::SolType>::Token<'a>;
12319            type Return = alloy::sol_types::private::Address;
12320            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12321            type ReturnToken<'a> = <Self::ReturnTuple<
12322                'a,
12323            > as alloy_sol_types::SolType>::Token<'a>;
12324            const SIGNATURE: &'static str = "permissionedProver()";
12325            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12326            #[inline]
12327            fn new<'a>(
12328                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12329            ) -> Self {
12330                tuple.into()
12331            }
12332            #[inline]
12333            fn tokenize(&self) -> Self::Token<'_> {
12334                ()
12335            }
12336            #[inline]
12337            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12338                (
12339                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12340                        ret,
12341                    ),
12342                )
12343            }
12344            #[inline]
12345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12346                <Self::ReturnTuple<
12347                    '_,
12348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12349                    .map(|r| {
12350                        let r: permissionedProverReturn = r.into();
12351                        r._0
12352                    })
12353            }
12354            #[inline]
12355            fn abi_decode_returns_with_config(
12356                data: &[u8],
12357                config: alloy_sol_types::abi::AbiDecoderConfig,
12358            ) -> alloy_sol_types::Result<Self::Return> {
12359                <Self::ReturnTuple<
12360                    '_,
12361                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12362                        data,
12363                        config,
12364                    )
12365                    .map(|r| {
12366                        let r: permissionedProverReturn = r.into();
12367                        r._0
12368                    })
12369            }
12370            #[inline]
12371            fn abi_decode_returns_validate(
12372                data: &[u8],
12373            ) -> alloy_sol_types::Result<Self::Return> {
12374                Self::abi_decode_returns_with_config(
12375                    data,
12376                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12377                )
12378            }
12379        }
12380    };
12381    #[derive(serde::Serialize, serde::Deserialize)]
12382    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12383    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12384```solidity
12385function proxiableUUID() external view returns (bytes32);
12386```*/
12387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12388    #[derive(Clone)]
12389    pub struct proxiableUUIDCall;
12390    #[derive(serde::Serialize, serde::Deserialize)]
12391    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12392    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12394    #[derive(Clone)]
12395    pub struct proxiableUUIDReturn {
12396        #[allow(missing_docs)]
12397        pub _0: alloy::sol_types::private::FixedBytes<32>,
12398    }
12399    #[allow(
12400        non_camel_case_types,
12401        non_snake_case,
12402        clippy::pub_underscore_fields,
12403        clippy::style
12404    )]
12405    const _: () = {
12406        use alloy::sol_types as alloy_sol_types;
12407        {
12408            #[doc(hidden)]
12409            #[allow(dead_code)]
12410            type UnderlyingSolTuple<'a> = ();
12411            #[doc(hidden)]
12412            type UnderlyingRustTuple<'a> = ();
12413            #[cfg(test)]
12414            #[allow(dead_code, unreachable_patterns)]
12415            fn _type_assertion(
12416                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12417            ) {
12418                match _t {
12419                    alloy_sol_types::private::AssertTypeEq::<
12420                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12421                    >(_) => {}
12422                }
12423            }
12424            #[automatically_derived]
12425            #[doc(hidden)]
12426            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12427                fn from(value: proxiableUUIDCall) -> Self {
12428                    ()
12429                }
12430            }
12431            #[automatically_derived]
12432            #[doc(hidden)]
12433            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12435                    Self
12436                }
12437            }
12438        }
12439        {
12440            #[doc(hidden)]
12441            #[allow(dead_code)]
12442            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12443            #[doc(hidden)]
12444            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12445            #[cfg(test)]
12446            #[allow(dead_code, unreachable_patterns)]
12447            fn _type_assertion(
12448                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12449            ) {
12450                match _t {
12451                    alloy_sol_types::private::AssertTypeEq::<
12452                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12453                    >(_) => {}
12454                }
12455            }
12456            #[automatically_derived]
12457            #[doc(hidden)]
12458            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12459                fn from(value: proxiableUUIDReturn) -> Self {
12460                    (value._0,)
12461                }
12462            }
12463            #[automatically_derived]
12464            #[doc(hidden)]
12465            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12467                    Self { _0: tuple.0 }
12468                }
12469            }
12470        }
12471        #[automatically_derived]
12472        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12473            type Parameters<'a> = ();
12474            type Token<'a> = <Self::Parameters<
12475                'a,
12476            > as alloy_sol_types::SolType>::Token<'a>;
12477            type Return = alloy::sol_types::private::FixedBytes<32>;
12478            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12479            type ReturnToken<'a> = <Self::ReturnTuple<
12480                'a,
12481            > as alloy_sol_types::SolType>::Token<'a>;
12482            const SIGNATURE: &'static str = "proxiableUUID()";
12483            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12484            #[inline]
12485            fn new<'a>(
12486                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12487            ) -> Self {
12488                tuple.into()
12489            }
12490            #[inline]
12491            fn tokenize(&self) -> Self::Token<'_> {
12492                ()
12493            }
12494            #[inline]
12495            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12496                (
12497                    <alloy::sol_types::sol_data::FixedBytes<
12498                        32,
12499                    > as alloy_sol_types::SolType>::tokenize(ret),
12500                )
12501            }
12502            #[inline]
12503            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12504                <Self::ReturnTuple<
12505                    '_,
12506                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12507                    .map(|r| {
12508                        let r: proxiableUUIDReturn = r.into();
12509                        r._0
12510                    })
12511            }
12512            #[inline]
12513            fn abi_decode_returns_with_config(
12514                data: &[u8],
12515                config: alloy_sol_types::abi::AbiDecoderConfig,
12516            ) -> alloy_sol_types::Result<Self::Return> {
12517                <Self::ReturnTuple<
12518                    '_,
12519                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12520                        data,
12521                        config,
12522                    )
12523                    .map(|r| {
12524                        let r: proxiableUUIDReturn = r.into();
12525                        r._0
12526                    })
12527            }
12528            #[inline]
12529            fn abi_decode_returns_validate(
12530                data: &[u8],
12531            ) -> alloy_sol_types::Result<Self::Return> {
12532                Self::abi_decode_returns_with_config(
12533                    data,
12534                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12535                )
12536            }
12537        }
12538    };
12539    #[derive(serde::Serialize, serde::Deserialize)]
12540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12541    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12542```solidity
12543function renounceOwnership() external;
12544```*/
12545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12546    #[derive(Clone)]
12547    pub struct renounceOwnershipCall;
12548    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12550    #[derive(Clone)]
12551    pub struct renounceOwnershipReturn {}
12552    #[allow(
12553        non_camel_case_types,
12554        non_snake_case,
12555        clippy::pub_underscore_fields,
12556        clippy::style
12557    )]
12558    const _: () = {
12559        use alloy::sol_types as alloy_sol_types;
12560        {
12561            #[doc(hidden)]
12562            #[allow(dead_code)]
12563            type UnderlyingSolTuple<'a> = ();
12564            #[doc(hidden)]
12565            type UnderlyingRustTuple<'a> = ();
12566            #[cfg(test)]
12567            #[allow(dead_code, unreachable_patterns)]
12568            fn _type_assertion(
12569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12570            ) {
12571                match _t {
12572                    alloy_sol_types::private::AssertTypeEq::<
12573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12574                    >(_) => {}
12575                }
12576            }
12577            #[automatically_derived]
12578            #[doc(hidden)]
12579            impl ::core::convert::From<renounceOwnershipCall>
12580            for UnderlyingRustTuple<'_> {
12581                fn from(value: renounceOwnershipCall) -> Self {
12582                    ()
12583                }
12584            }
12585            #[automatically_derived]
12586            #[doc(hidden)]
12587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12588            for renounceOwnershipCall {
12589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12590                    Self
12591                }
12592            }
12593        }
12594        {
12595            #[doc(hidden)]
12596            #[allow(dead_code)]
12597            type UnderlyingSolTuple<'a> = ();
12598            #[doc(hidden)]
12599            type UnderlyingRustTuple<'a> = ();
12600            #[cfg(test)]
12601            #[allow(dead_code, unreachable_patterns)]
12602            fn _type_assertion(
12603                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12604            ) {
12605                match _t {
12606                    alloy_sol_types::private::AssertTypeEq::<
12607                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12608                    >(_) => {}
12609                }
12610            }
12611            #[automatically_derived]
12612            #[doc(hidden)]
12613            impl ::core::convert::From<renounceOwnershipReturn>
12614            for UnderlyingRustTuple<'_> {
12615                fn from(value: renounceOwnershipReturn) -> Self {
12616                    ()
12617                }
12618            }
12619            #[automatically_derived]
12620            #[doc(hidden)]
12621            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12622            for renounceOwnershipReturn {
12623                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12624                    Self {}
12625                }
12626            }
12627        }
12628        impl renounceOwnershipReturn {
12629            fn _tokenize(
12630                &self,
12631            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12632                ()
12633            }
12634        }
12635        #[automatically_derived]
12636        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12637            type Parameters<'a> = ();
12638            type Token<'a> = <Self::Parameters<
12639                'a,
12640            > as alloy_sol_types::SolType>::Token<'a>;
12641            type Return = renounceOwnershipReturn;
12642            type ReturnTuple<'a> = ();
12643            type ReturnToken<'a> = <Self::ReturnTuple<
12644                'a,
12645            > as alloy_sol_types::SolType>::Token<'a>;
12646            const SIGNATURE: &'static str = "renounceOwnership()";
12647            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12648            #[inline]
12649            fn new<'a>(
12650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12651            ) -> Self {
12652                tuple.into()
12653            }
12654            #[inline]
12655            fn tokenize(&self) -> Self::Token<'_> {
12656                ()
12657            }
12658            #[inline]
12659            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12660                renounceOwnershipReturn::_tokenize(ret)
12661            }
12662            #[inline]
12663            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12664                <Self::ReturnTuple<
12665                    '_,
12666                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12667                    .map(Into::into)
12668            }
12669            #[inline]
12670            fn abi_decode_returns_with_config(
12671                data: &[u8],
12672                config: alloy_sol_types::abi::AbiDecoderConfig,
12673            ) -> alloy_sol_types::Result<Self::Return> {
12674                <Self::ReturnTuple<
12675                    '_,
12676                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12677                        data,
12678                        config,
12679                    )
12680                    .map(Into::into)
12681            }
12682            #[inline]
12683            fn abi_decode_returns_validate(
12684                data: &[u8],
12685            ) -> alloy_sol_types::Result<Self::Return> {
12686                Self::abi_decode_returns_with_config(
12687                    data,
12688                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12689                )
12690            }
12691        }
12692    };
12693    #[derive(serde::Serialize, serde::Deserialize)]
12694    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12695    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
12696```solidity
12697function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
12698```*/
12699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12700    #[derive(Clone)]
12701    pub struct setBlocksPerEpochCall {
12702        #[allow(missing_docs)]
12703        pub newBlocksPerEpoch: u64,
12704    }
12705    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
12706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12707    #[derive(Clone)]
12708    pub struct setBlocksPerEpochReturn {}
12709    #[allow(
12710        non_camel_case_types,
12711        non_snake_case,
12712        clippy::pub_underscore_fields,
12713        clippy::style
12714    )]
12715    const _: () = {
12716        use alloy::sol_types as alloy_sol_types;
12717        {
12718            #[doc(hidden)]
12719            #[allow(dead_code)]
12720            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12721            #[doc(hidden)]
12722            type UnderlyingRustTuple<'a> = (u64,);
12723            #[cfg(test)]
12724            #[allow(dead_code, unreachable_patterns)]
12725            fn _type_assertion(
12726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12727            ) {
12728                match _t {
12729                    alloy_sol_types::private::AssertTypeEq::<
12730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12731                    >(_) => {}
12732                }
12733            }
12734            #[automatically_derived]
12735            #[doc(hidden)]
12736            impl ::core::convert::From<setBlocksPerEpochCall>
12737            for UnderlyingRustTuple<'_> {
12738                fn from(value: setBlocksPerEpochCall) -> Self {
12739                    (value.newBlocksPerEpoch,)
12740                }
12741            }
12742            #[automatically_derived]
12743            #[doc(hidden)]
12744            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12745            for setBlocksPerEpochCall {
12746                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12747                    Self { newBlocksPerEpoch: tuple.0 }
12748                }
12749            }
12750        }
12751        {
12752            #[doc(hidden)]
12753            #[allow(dead_code)]
12754            type UnderlyingSolTuple<'a> = ();
12755            #[doc(hidden)]
12756            type UnderlyingRustTuple<'a> = ();
12757            #[cfg(test)]
12758            #[allow(dead_code, unreachable_patterns)]
12759            fn _type_assertion(
12760                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12761            ) {
12762                match _t {
12763                    alloy_sol_types::private::AssertTypeEq::<
12764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12765                    >(_) => {}
12766                }
12767            }
12768            #[automatically_derived]
12769            #[doc(hidden)]
12770            impl ::core::convert::From<setBlocksPerEpochReturn>
12771            for UnderlyingRustTuple<'_> {
12772                fn from(value: setBlocksPerEpochReturn) -> Self {
12773                    ()
12774                }
12775            }
12776            #[automatically_derived]
12777            #[doc(hidden)]
12778            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12779            for setBlocksPerEpochReturn {
12780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12781                    Self {}
12782                }
12783            }
12784        }
12785        impl setBlocksPerEpochReturn {
12786            fn _tokenize(
12787                &self,
12788            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12789                ()
12790            }
12791        }
12792        #[automatically_derived]
12793        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
12794            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12795            type Token<'a> = <Self::Parameters<
12796                'a,
12797            > as alloy_sol_types::SolType>::Token<'a>;
12798            type Return = setBlocksPerEpochReturn;
12799            type ReturnTuple<'a> = ();
12800            type ReturnToken<'a> = <Self::ReturnTuple<
12801                'a,
12802            > as alloy_sol_types::SolType>::Token<'a>;
12803            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
12804            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
12805            #[inline]
12806            fn new<'a>(
12807                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12808            ) -> Self {
12809                tuple.into()
12810            }
12811            #[inline]
12812            fn tokenize(&self) -> Self::Token<'_> {
12813                (
12814                    <alloy::sol_types::sol_data::Uint<
12815                        64,
12816                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
12817                )
12818            }
12819            #[inline]
12820            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12821                setBlocksPerEpochReturn::_tokenize(ret)
12822            }
12823            #[inline]
12824            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12825                <Self::ReturnTuple<
12826                    '_,
12827                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12828                    .map(Into::into)
12829            }
12830            #[inline]
12831            fn abi_decode_returns_with_config(
12832                data: &[u8],
12833                config: alloy_sol_types::abi::AbiDecoderConfig,
12834            ) -> alloy_sol_types::Result<Self::Return> {
12835                <Self::ReturnTuple<
12836                    '_,
12837                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12838                        data,
12839                        config,
12840                    )
12841                    .map(Into::into)
12842            }
12843            #[inline]
12844            fn abi_decode_returns_validate(
12845                data: &[u8],
12846            ) -> alloy_sol_types::Result<Self::Return> {
12847                Self::abi_decode_returns_with_config(
12848                    data,
12849                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12850                )
12851            }
12852        }
12853    };
12854    #[derive(serde::Serialize, serde::Deserialize)]
12855    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12856    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
12857```solidity
12858function setFinalizedState(LightClient.LightClientState memory state) external;
12859```*/
12860    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12861    #[derive(Clone)]
12862    pub struct setFinalizedStateCall {
12863        #[allow(missing_docs)]
12864        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12865    }
12866    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
12867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12868    #[derive(Clone)]
12869    pub struct setFinalizedStateReturn {}
12870    #[allow(
12871        non_camel_case_types,
12872        non_snake_case,
12873        clippy::pub_underscore_fields,
12874        clippy::style
12875    )]
12876    const _: () = {
12877        use alloy::sol_types as alloy_sol_types;
12878        {
12879            #[doc(hidden)]
12880            #[allow(dead_code)]
12881            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
12882            #[doc(hidden)]
12883            type UnderlyingRustTuple<'a> = (
12884                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12885            );
12886            #[cfg(test)]
12887            #[allow(dead_code, unreachable_patterns)]
12888            fn _type_assertion(
12889                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12890            ) {
12891                match _t {
12892                    alloy_sol_types::private::AssertTypeEq::<
12893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12894                    >(_) => {}
12895                }
12896            }
12897            #[automatically_derived]
12898            #[doc(hidden)]
12899            impl ::core::convert::From<setFinalizedStateCall>
12900            for UnderlyingRustTuple<'_> {
12901                fn from(value: setFinalizedStateCall) -> Self {
12902                    (value.state,)
12903                }
12904            }
12905            #[automatically_derived]
12906            #[doc(hidden)]
12907            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12908            for setFinalizedStateCall {
12909                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12910                    Self { state: tuple.0 }
12911                }
12912            }
12913        }
12914        {
12915            #[doc(hidden)]
12916            #[allow(dead_code)]
12917            type UnderlyingSolTuple<'a> = ();
12918            #[doc(hidden)]
12919            type UnderlyingRustTuple<'a> = ();
12920            #[cfg(test)]
12921            #[allow(dead_code, unreachable_patterns)]
12922            fn _type_assertion(
12923                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12924            ) {
12925                match _t {
12926                    alloy_sol_types::private::AssertTypeEq::<
12927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12928                    >(_) => {}
12929                }
12930            }
12931            #[automatically_derived]
12932            #[doc(hidden)]
12933            impl ::core::convert::From<setFinalizedStateReturn>
12934            for UnderlyingRustTuple<'_> {
12935                fn from(value: setFinalizedStateReturn) -> Self {
12936                    ()
12937                }
12938            }
12939            #[automatically_derived]
12940            #[doc(hidden)]
12941            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12942            for setFinalizedStateReturn {
12943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12944                    Self {}
12945                }
12946            }
12947        }
12948        impl setFinalizedStateReturn {
12949            fn _tokenize(
12950                &self,
12951            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12952                ()
12953            }
12954        }
12955        #[automatically_derived]
12956        impl alloy_sol_types::SolCall for setFinalizedStateCall {
12957            type Parameters<'a> = (LightClient::LightClientState,);
12958            type Token<'a> = <Self::Parameters<
12959                'a,
12960            > as alloy_sol_types::SolType>::Token<'a>;
12961            type Return = setFinalizedStateReturn;
12962            type ReturnTuple<'a> = ();
12963            type ReturnToken<'a> = <Self::ReturnTuple<
12964                'a,
12965            > as alloy_sol_types::SolType>::Token<'a>;
12966            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
12967            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
12968            #[inline]
12969            fn new<'a>(
12970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12971            ) -> Self {
12972                tuple.into()
12973            }
12974            #[inline]
12975            fn tokenize(&self) -> Self::Token<'_> {
12976                (
12977                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12978                        &self.state,
12979                    ),
12980                )
12981            }
12982            #[inline]
12983            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12984                setFinalizedStateReturn::_tokenize(ret)
12985            }
12986            #[inline]
12987            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12988                <Self::ReturnTuple<
12989                    '_,
12990                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12991                    .map(Into::into)
12992            }
12993            #[inline]
12994            fn abi_decode_returns_with_config(
12995                data: &[u8],
12996                config: alloy_sol_types::abi::AbiDecoderConfig,
12997            ) -> alloy_sol_types::Result<Self::Return> {
12998                <Self::ReturnTuple<
12999                    '_,
13000                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13001                        data,
13002                        config,
13003                    )
13004                    .map(Into::into)
13005            }
13006            #[inline]
13007            fn abi_decode_returns_validate(
13008                data: &[u8],
13009            ) -> alloy_sol_types::Result<Self::Return> {
13010                Self::abi_decode_returns_with_config(
13011                    data,
13012                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13013                )
13014            }
13015        }
13016    };
13017    #[derive(serde::Serialize, serde::Deserialize)]
13018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13019    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
13020```solidity
13021function setHotShotDownSince(uint256 l1Height) external;
13022```*/
13023    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13024    #[derive(Clone)]
13025    pub struct setHotShotDownSinceCall {
13026        #[allow(missing_docs)]
13027        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
13028    }
13029    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
13030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13031    #[derive(Clone)]
13032    pub struct setHotShotDownSinceReturn {}
13033    #[allow(
13034        non_camel_case_types,
13035        non_snake_case,
13036        clippy::pub_underscore_fields,
13037        clippy::style
13038    )]
13039    const _: () = {
13040        use alloy::sol_types as alloy_sol_types;
13041        {
13042            #[doc(hidden)]
13043            #[allow(dead_code)]
13044            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13045            #[doc(hidden)]
13046            type UnderlyingRustTuple<'a> = (
13047                alloy::sol_types::private::primitives::aliases::U256,
13048            );
13049            #[cfg(test)]
13050            #[allow(dead_code, unreachable_patterns)]
13051            fn _type_assertion(
13052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13053            ) {
13054                match _t {
13055                    alloy_sol_types::private::AssertTypeEq::<
13056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13057                    >(_) => {}
13058                }
13059            }
13060            #[automatically_derived]
13061            #[doc(hidden)]
13062            impl ::core::convert::From<setHotShotDownSinceCall>
13063            for UnderlyingRustTuple<'_> {
13064                fn from(value: setHotShotDownSinceCall) -> Self {
13065                    (value.l1Height,)
13066                }
13067            }
13068            #[automatically_derived]
13069            #[doc(hidden)]
13070            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13071            for setHotShotDownSinceCall {
13072                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13073                    Self { l1Height: tuple.0 }
13074                }
13075            }
13076        }
13077        {
13078            #[doc(hidden)]
13079            #[allow(dead_code)]
13080            type UnderlyingSolTuple<'a> = ();
13081            #[doc(hidden)]
13082            type UnderlyingRustTuple<'a> = ();
13083            #[cfg(test)]
13084            #[allow(dead_code, unreachable_patterns)]
13085            fn _type_assertion(
13086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13087            ) {
13088                match _t {
13089                    alloy_sol_types::private::AssertTypeEq::<
13090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13091                    >(_) => {}
13092                }
13093            }
13094            #[automatically_derived]
13095            #[doc(hidden)]
13096            impl ::core::convert::From<setHotShotDownSinceReturn>
13097            for UnderlyingRustTuple<'_> {
13098                fn from(value: setHotShotDownSinceReturn) -> Self {
13099                    ()
13100                }
13101            }
13102            #[automatically_derived]
13103            #[doc(hidden)]
13104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13105            for setHotShotDownSinceReturn {
13106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13107                    Self {}
13108                }
13109            }
13110        }
13111        impl setHotShotDownSinceReturn {
13112            fn _tokenize(
13113                &self,
13114            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13115                ()
13116            }
13117        }
13118        #[automatically_derived]
13119        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
13120            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13121            type Token<'a> = <Self::Parameters<
13122                'a,
13123            > as alloy_sol_types::SolType>::Token<'a>;
13124            type Return = setHotShotDownSinceReturn;
13125            type ReturnTuple<'a> = ();
13126            type ReturnToken<'a> = <Self::ReturnTuple<
13127                'a,
13128            > as alloy_sol_types::SolType>::Token<'a>;
13129            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
13130            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
13131            #[inline]
13132            fn new<'a>(
13133                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13134            ) -> Self {
13135                tuple.into()
13136            }
13137            #[inline]
13138            fn tokenize(&self) -> Self::Token<'_> {
13139                (
13140                    <alloy::sol_types::sol_data::Uint<
13141                        256,
13142                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
13143                )
13144            }
13145            #[inline]
13146            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13147                setHotShotDownSinceReturn::_tokenize(ret)
13148            }
13149            #[inline]
13150            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13151                <Self::ReturnTuple<
13152                    '_,
13153                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13154                    .map(Into::into)
13155            }
13156            #[inline]
13157            fn abi_decode_returns_with_config(
13158                data: &[u8],
13159                config: alloy_sol_types::abi::AbiDecoderConfig,
13160            ) -> alloy_sol_types::Result<Self::Return> {
13161                <Self::ReturnTuple<
13162                    '_,
13163                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13164                        data,
13165                        config,
13166                    )
13167                    .map(Into::into)
13168            }
13169            #[inline]
13170            fn abi_decode_returns_validate(
13171                data: &[u8],
13172            ) -> alloy_sol_types::Result<Self::Return> {
13173                Self::abi_decode_returns_with_config(
13174                    data,
13175                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13176                )
13177            }
13178        }
13179    };
13180    #[derive(serde::Serialize, serde::Deserialize)]
13181    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13182    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
13183```solidity
13184function setHotShotUp() external;
13185```*/
13186    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13187    #[derive(Clone)]
13188    pub struct setHotShotUpCall;
13189    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
13190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13191    #[derive(Clone)]
13192    pub struct setHotShotUpReturn {}
13193    #[allow(
13194        non_camel_case_types,
13195        non_snake_case,
13196        clippy::pub_underscore_fields,
13197        clippy::style
13198    )]
13199    const _: () = {
13200        use alloy::sol_types as alloy_sol_types;
13201        {
13202            #[doc(hidden)]
13203            #[allow(dead_code)]
13204            type UnderlyingSolTuple<'a> = ();
13205            #[doc(hidden)]
13206            type UnderlyingRustTuple<'a> = ();
13207            #[cfg(test)]
13208            #[allow(dead_code, unreachable_patterns)]
13209            fn _type_assertion(
13210                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13211            ) {
13212                match _t {
13213                    alloy_sol_types::private::AssertTypeEq::<
13214                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13215                    >(_) => {}
13216                }
13217            }
13218            #[automatically_derived]
13219            #[doc(hidden)]
13220            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
13221                fn from(value: setHotShotUpCall) -> Self {
13222                    ()
13223                }
13224            }
13225            #[automatically_derived]
13226            #[doc(hidden)]
13227            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
13228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13229                    Self
13230                }
13231            }
13232        }
13233        {
13234            #[doc(hidden)]
13235            #[allow(dead_code)]
13236            type UnderlyingSolTuple<'a> = ();
13237            #[doc(hidden)]
13238            type UnderlyingRustTuple<'a> = ();
13239            #[cfg(test)]
13240            #[allow(dead_code, unreachable_patterns)]
13241            fn _type_assertion(
13242                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13243            ) {
13244                match _t {
13245                    alloy_sol_types::private::AssertTypeEq::<
13246                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13247                    >(_) => {}
13248                }
13249            }
13250            #[automatically_derived]
13251            #[doc(hidden)]
13252            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
13253                fn from(value: setHotShotUpReturn) -> Self {
13254                    ()
13255                }
13256            }
13257            #[automatically_derived]
13258            #[doc(hidden)]
13259            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
13260                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13261                    Self {}
13262                }
13263            }
13264        }
13265        impl setHotShotUpReturn {
13266            fn _tokenize(
13267                &self,
13268            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13269                ()
13270            }
13271        }
13272        #[automatically_derived]
13273        impl alloy_sol_types::SolCall for setHotShotUpCall {
13274            type Parameters<'a> = ();
13275            type Token<'a> = <Self::Parameters<
13276                'a,
13277            > as alloy_sol_types::SolType>::Token<'a>;
13278            type Return = setHotShotUpReturn;
13279            type ReturnTuple<'a> = ();
13280            type ReturnToken<'a> = <Self::ReturnTuple<
13281                'a,
13282            > as alloy_sol_types::SolType>::Token<'a>;
13283            const SIGNATURE: &'static str = "setHotShotUp()";
13284            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
13285            #[inline]
13286            fn new<'a>(
13287                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13288            ) -> Self {
13289                tuple.into()
13290            }
13291            #[inline]
13292            fn tokenize(&self) -> Self::Token<'_> {
13293                ()
13294            }
13295            #[inline]
13296            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13297                setHotShotUpReturn::_tokenize(ret)
13298            }
13299            #[inline]
13300            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13301                <Self::ReturnTuple<
13302                    '_,
13303                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13304                    .map(Into::into)
13305            }
13306            #[inline]
13307            fn abi_decode_returns_with_config(
13308                data: &[u8],
13309                config: alloy_sol_types::abi::AbiDecoderConfig,
13310            ) -> alloy_sol_types::Result<Self::Return> {
13311                <Self::ReturnTuple<
13312                    '_,
13313                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13314                        data,
13315                        config,
13316                    )
13317                    .map(Into::into)
13318            }
13319            #[inline]
13320            fn abi_decode_returns_validate(
13321                data: &[u8],
13322            ) -> alloy_sol_types::Result<Self::Return> {
13323                Self::abi_decode_returns_with_config(
13324                    data,
13325                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13326                )
13327            }
13328        }
13329    };
13330    #[derive(serde::Serialize, serde::Deserialize)]
13331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13332    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
13333```solidity
13334function setPermissionedProver(address prover) external;
13335```*/
13336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13337    #[derive(Clone)]
13338    pub struct setPermissionedProverCall {
13339        #[allow(missing_docs)]
13340        pub prover: alloy::sol_types::private::Address,
13341    }
13342    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
13343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13344    #[derive(Clone)]
13345    pub struct setPermissionedProverReturn {}
13346    #[allow(
13347        non_camel_case_types,
13348        non_snake_case,
13349        clippy::pub_underscore_fields,
13350        clippy::style
13351    )]
13352    const _: () = {
13353        use alloy::sol_types as alloy_sol_types;
13354        {
13355            #[doc(hidden)]
13356            #[allow(dead_code)]
13357            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13358            #[doc(hidden)]
13359            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13360            #[cfg(test)]
13361            #[allow(dead_code, unreachable_patterns)]
13362            fn _type_assertion(
13363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13364            ) {
13365                match _t {
13366                    alloy_sol_types::private::AssertTypeEq::<
13367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13368                    >(_) => {}
13369                }
13370            }
13371            #[automatically_derived]
13372            #[doc(hidden)]
13373            impl ::core::convert::From<setPermissionedProverCall>
13374            for UnderlyingRustTuple<'_> {
13375                fn from(value: setPermissionedProverCall) -> Self {
13376                    (value.prover,)
13377                }
13378            }
13379            #[automatically_derived]
13380            #[doc(hidden)]
13381            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13382            for setPermissionedProverCall {
13383                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13384                    Self { prover: tuple.0 }
13385                }
13386            }
13387        }
13388        {
13389            #[doc(hidden)]
13390            #[allow(dead_code)]
13391            type UnderlyingSolTuple<'a> = ();
13392            #[doc(hidden)]
13393            type UnderlyingRustTuple<'a> = ();
13394            #[cfg(test)]
13395            #[allow(dead_code, unreachable_patterns)]
13396            fn _type_assertion(
13397                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13398            ) {
13399                match _t {
13400                    alloy_sol_types::private::AssertTypeEq::<
13401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13402                    >(_) => {}
13403                }
13404            }
13405            #[automatically_derived]
13406            #[doc(hidden)]
13407            impl ::core::convert::From<setPermissionedProverReturn>
13408            for UnderlyingRustTuple<'_> {
13409                fn from(value: setPermissionedProverReturn) -> Self {
13410                    ()
13411                }
13412            }
13413            #[automatically_derived]
13414            #[doc(hidden)]
13415            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13416            for setPermissionedProverReturn {
13417                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13418                    Self {}
13419                }
13420            }
13421        }
13422        impl setPermissionedProverReturn {
13423            fn _tokenize(
13424                &self,
13425            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
13426                '_,
13427            > {
13428                ()
13429            }
13430        }
13431        #[automatically_derived]
13432        impl alloy_sol_types::SolCall for setPermissionedProverCall {
13433            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13434            type Token<'a> = <Self::Parameters<
13435                'a,
13436            > as alloy_sol_types::SolType>::Token<'a>;
13437            type Return = setPermissionedProverReturn;
13438            type ReturnTuple<'a> = ();
13439            type ReturnToken<'a> = <Self::ReturnTuple<
13440                'a,
13441            > as alloy_sol_types::SolType>::Token<'a>;
13442            const SIGNATURE: &'static str = "setPermissionedProver(address)";
13443            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
13444            #[inline]
13445            fn new<'a>(
13446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13447            ) -> Self {
13448                tuple.into()
13449            }
13450            #[inline]
13451            fn tokenize(&self) -> Self::Token<'_> {
13452                (
13453                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13454                        &self.prover,
13455                    ),
13456                )
13457            }
13458            #[inline]
13459            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13460                setPermissionedProverReturn::_tokenize(ret)
13461            }
13462            #[inline]
13463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13464                <Self::ReturnTuple<
13465                    '_,
13466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13467                    .map(Into::into)
13468            }
13469            #[inline]
13470            fn abi_decode_returns_with_config(
13471                data: &[u8],
13472                config: alloy_sol_types::abi::AbiDecoderConfig,
13473            ) -> alloy_sol_types::Result<Self::Return> {
13474                <Self::ReturnTuple<
13475                    '_,
13476                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13477                        data,
13478                        config,
13479                    )
13480                    .map(Into::into)
13481            }
13482            #[inline]
13483            fn abi_decode_returns_validate(
13484                data: &[u8],
13485            ) -> alloy_sol_types::Result<Self::Return> {
13486                Self::abi_decode_returns_with_config(
13487                    data,
13488                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13489                )
13490            }
13491        }
13492    };
13493    #[derive(serde::Serialize, serde::Deserialize)]
13494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13495    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
13496```solidity
13497function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
13498```*/
13499    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13500    #[derive(Clone)]
13501    pub struct setStateHistoryCall {
13502        #[allow(missing_docs)]
13503        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13504            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13505        >,
13506    }
13507    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13508    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13509    #[derive(Clone)]
13510    pub struct setStateHistoryReturn {}
13511    #[allow(
13512        non_camel_case_types,
13513        non_snake_case,
13514        clippy::pub_underscore_fields,
13515        clippy::style
13516    )]
13517    const _: () = {
13518        use alloy::sol_types as alloy_sol_types;
13519        {
13520            #[doc(hidden)]
13521            #[allow(dead_code)]
13522            type UnderlyingSolTuple<'a> = (
13523                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13524            );
13525            #[doc(hidden)]
13526            type UnderlyingRustTuple<'a> = (
13527                alloy::sol_types::private::Vec<
13528                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13529                >,
13530            );
13531            #[cfg(test)]
13532            #[allow(dead_code, unreachable_patterns)]
13533            fn _type_assertion(
13534                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13535            ) {
13536                match _t {
13537                    alloy_sol_types::private::AssertTypeEq::<
13538                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13539                    >(_) => {}
13540                }
13541            }
13542            #[automatically_derived]
13543            #[doc(hidden)]
13544            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
13545                fn from(value: setStateHistoryCall) -> Self {
13546                    (value._stateHistoryCommitments,)
13547                }
13548            }
13549            #[automatically_derived]
13550            #[doc(hidden)]
13551            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
13552                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13553                    Self {
13554                        _stateHistoryCommitments: tuple.0,
13555                    }
13556                }
13557            }
13558        }
13559        {
13560            #[doc(hidden)]
13561            #[allow(dead_code)]
13562            type UnderlyingSolTuple<'a> = ();
13563            #[doc(hidden)]
13564            type UnderlyingRustTuple<'a> = ();
13565            #[cfg(test)]
13566            #[allow(dead_code, unreachable_patterns)]
13567            fn _type_assertion(
13568                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13569            ) {
13570                match _t {
13571                    alloy_sol_types::private::AssertTypeEq::<
13572                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13573                    >(_) => {}
13574                }
13575            }
13576            #[automatically_derived]
13577            #[doc(hidden)]
13578            impl ::core::convert::From<setStateHistoryReturn>
13579            for UnderlyingRustTuple<'_> {
13580                fn from(value: setStateHistoryReturn) -> Self {
13581                    ()
13582                }
13583            }
13584            #[automatically_derived]
13585            #[doc(hidden)]
13586            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13587            for setStateHistoryReturn {
13588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13589                    Self {}
13590                }
13591            }
13592        }
13593        impl setStateHistoryReturn {
13594            fn _tokenize(
13595                &self,
13596            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13597                ()
13598            }
13599        }
13600        #[automatically_derived]
13601        impl alloy_sol_types::SolCall for setStateHistoryCall {
13602            type Parameters<'a> = (
13603                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13604            );
13605            type Token<'a> = <Self::Parameters<
13606                'a,
13607            > as alloy_sol_types::SolType>::Token<'a>;
13608            type Return = setStateHistoryReturn;
13609            type ReturnTuple<'a> = ();
13610            type ReturnToken<'a> = <Self::ReturnTuple<
13611                'a,
13612            > as alloy_sol_types::SolType>::Token<'a>;
13613            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
13614            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
13615            #[inline]
13616            fn new<'a>(
13617                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13618            ) -> Self {
13619                tuple.into()
13620            }
13621            #[inline]
13622            fn tokenize(&self) -> Self::Token<'_> {
13623                (
13624                    <alloy::sol_types::sol_data::Array<
13625                        LightClient::StateHistoryCommitment,
13626                    > as alloy_sol_types::SolType>::tokenize(
13627                        &self._stateHistoryCommitments,
13628                    ),
13629                )
13630            }
13631            #[inline]
13632            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13633                setStateHistoryReturn::_tokenize(ret)
13634            }
13635            #[inline]
13636            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13637                <Self::ReturnTuple<
13638                    '_,
13639                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13640                    .map(Into::into)
13641            }
13642            #[inline]
13643            fn abi_decode_returns_with_config(
13644                data: &[u8],
13645                config: alloy_sol_types::abi::AbiDecoderConfig,
13646            ) -> alloy_sol_types::Result<Self::Return> {
13647                <Self::ReturnTuple<
13648                    '_,
13649                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13650                        data,
13651                        config,
13652                    )
13653                    .map(Into::into)
13654            }
13655            #[inline]
13656            fn abi_decode_returns_validate(
13657                data: &[u8],
13658            ) -> alloy_sol_types::Result<Self::Return> {
13659                Self::abi_decode_returns_with_config(
13660                    data,
13661                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13662                )
13663            }
13664        }
13665    };
13666    #[derive(serde::Serialize, serde::Deserialize)]
13667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13668    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
13669```solidity
13670function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
13671```*/
13672    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13673    #[derive(Clone)]
13674    pub struct setStateHistoryRetentionPeriodCall {
13675        #[allow(missing_docs)]
13676        pub historySeconds: u32,
13677    }
13678    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
13679    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13680    #[derive(Clone)]
13681    pub struct setStateHistoryRetentionPeriodReturn {}
13682    #[allow(
13683        non_camel_case_types,
13684        non_snake_case,
13685        clippy::pub_underscore_fields,
13686        clippy::style
13687    )]
13688    const _: () = {
13689        use alloy::sol_types as alloy_sol_types;
13690        {
13691            #[doc(hidden)]
13692            #[allow(dead_code)]
13693            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13694            #[doc(hidden)]
13695            type UnderlyingRustTuple<'a> = (u32,);
13696            #[cfg(test)]
13697            #[allow(dead_code, unreachable_patterns)]
13698            fn _type_assertion(
13699                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13700            ) {
13701                match _t {
13702                    alloy_sol_types::private::AssertTypeEq::<
13703                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13704                    >(_) => {}
13705                }
13706            }
13707            #[automatically_derived]
13708            #[doc(hidden)]
13709            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
13710            for UnderlyingRustTuple<'_> {
13711                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
13712                    (value.historySeconds,)
13713                }
13714            }
13715            #[automatically_derived]
13716            #[doc(hidden)]
13717            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13718            for setStateHistoryRetentionPeriodCall {
13719                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13720                    Self { historySeconds: tuple.0 }
13721                }
13722            }
13723        }
13724        {
13725            #[doc(hidden)]
13726            #[allow(dead_code)]
13727            type UnderlyingSolTuple<'a> = ();
13728            #[doc(hidden)]
13729            type UnderlyingRustTuple<'a> = ();
13730            #[cfg(test)]
13731            #[allow(dead_code, unreachable_patterns)]
13732            fn _type_assertion(
13733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13734            ) {
13735                match _t {
13736                    alloy_sol_types::private::AssertTypeEq::<
13737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13738                    >(_) => {}
13739                }
13740            }
13741            #[automatically_derived]
13742            #[doc(hidden)]
13743            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
13744            for UnderlyingRustTuple<'_> {
13745                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
13746                    ()
13747                }
13748            }
13749            #[automatically_derived]
13750            #[doc(hidden)]
13751            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13752            for setStateHistoryRetentionPeriodReturn {
13753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13754                    Self {}
13755                }
13756            }
13757        }
13758        impl setStateHistoryRetentionPeriodReturn {
13759            fn _tokenize(
13760                &self,
13761            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13762                '_,
13763            > {
13764                ()
13765            }
13766        }
13767        #[automatically_derived]
13768        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
13769            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13770            type Token<'a> = <Self::Parameters<
13771                'a,
13772            > as alloy_sol_types::SolType>::Token<'a>;
13773            type Return = setStateHistoryRetentionPeriodReturn;
13774            type ReturnTuple<'a> = ();
13775            type ReturnToken<'a> = <Self::ReturnTuple<
13776                'a,
13777            > as alloy_sol_types::SolType>::Token<'a>;
13778            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
13779            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
13780            #[inline]
13781            fn new<'a>(
13782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13783            ) -> Self {
13784                tuple.into()
13785            }
13786            #[inline]
13787            fn tokenize(&self) -> Self::Token<'_> {
13788                (
13789                    <alloy::sol_types::sol_data::Uint<
13790                        32,
13791                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13792                )
13793            }
13794            #[inline]
13795            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13796                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
13797            }
13798            #[inline]
13799            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13800                <Self::ReturnTuple<
13801                    '_,
13802                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13803                    .map(Into::into)
13804            }
13805            #[inline]
13806            fn abi_decode_returns_with_config(
13807                data: &[u8],
13808                config: alloy_sol_types::abi::AbiDecoderConfig,
13809            ) -> alloy_sol_types::Result<Self::Return> {
13810                <Self::ReturnTuple<
13811                    '_,
13812                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13813                        data,
13814                        config,
13815                    )
13816                    .map(Into::into)
13817            }
13818            #[inline]
13819            fn abi_decode_returns_validate(
13820                data: &[u8],
13821            ) -> alloy_sol_types::Result<Self::Return> {
13822                Self::abi_decode_returns_with_config(
13823                    data,
13824                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13825                )
13826            }
13827        }
13828    };
13829    #[derive(serde::Serialize, serde::Deserialize)]
13830    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13831    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
13832```solidity
13833function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
13834```*/
13835    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13836    #[derive(Clone)]
13837    pub struct setVotingStakeTableStateCall {
13838        #[allow(missing_docs)]
13839        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13840    }
13841    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
13842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13843    #[derive(Clone)]
13844    pub struct setVotingStakeTableStateReturn {}
13845    #[allow(
13846        non_camel_case_types,
13847        non_snake_case,
13848        clippy::pub_underscore_fields,
13849        clippy::style
13850    )]
13851    const _: () = {
13852        use alloy::sol_types as alloy_sol_types;
13853        {
13854            #[doc(hidden)]
13855            #[allow(dead_code)]
13856            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
13857            #[doc(hidden)]
13858            type UnderlyingRustTuple<'a> = (
13859                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13860            );
13861            #[cfg(test)]
13862            #[allow(dead_code, unreachable_patterns)]
13863            fn _type_assertion(
13864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13865            ) {
13866                match _t {
13867                    alloy_sol_types::private::AssertTypeEq::<
13868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13869                    >(_) => {}
13870                }
13871            }
13872            #[automatically_derived]
13873            #[doc(hidden)]
13874            impl ::core::convert::From<setVotingStakeTableStateCall>
13875            for UnderlyingRustTuple<'_> {
13876                fn from(value: setVotingStakeTableStateCall) -> Self {
13877                    (value.stake,)
13878                }
13879            }
13880            #[automatically_derived]
13881            #[doc(hidden)]
13882            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13883            for setVotingStakeTableStateCall {
13884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13885                    Self { stake: tuple.0 }
13886                }
13887            }
13888        }
13889        {
13890            #[doc(hidden)]
13891            #[allow(dead_code)]
13892            type UnderlyingSolTuple<'a> = ();
13893            #[doc(hidden)]
13894            type UnderlyingRustTuple<'a> = ();
13895            #[cfg(test)]
13896            #[allow(dead_code, unreachable_patterns)]
13897            fn _type_assertion(
13898                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13899            ) {
13900                match _t {
13901                    alloy_sol_types::private::AssertTypeEq::<
13902                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13903                    >(_) => {}
13904                }
13905            }
13906            #[automatically_derived]
13907            #[doc(hidden)]
13908            impl ::core::convert::From<setVotingStakeTableStateReturn>
13909            for UnderlyingRustTuple<'_> {
13910                fn from(value: setVotingStakeTableStateReturn) -> Self {
13911                    ()
13912                }
13913            }
13914            #[automatically_derived]
13915            #[doc(hidden)]
13916            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13917            for setVotingStakeTableStateReturn {
13918                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13919                    Self {}
13920                }
13921            }
13922        }
13923        impl setVotingStakeTableStateReturn {
13924            fn _tokenize(
13925                &self,
13926            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13927                '_,
13928            > {
13929                ()
13930            }
13931        }
13932        #[automatically_derived]
13933        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
13934            type Parameters<'a> = (LightClient::StakeTableState,);
13935            type Token<'a> = <Self::Parameters<
13936                'a,
13937            > as alloy_sol_types::SolType>::Token<'a>;
13938            type Return = setVotingStakeTableStateReturn;
13939            type ReturnTuple<'a> = ();
13940            type ReturnToken<'a> = <Self::ReturnTuple<
13941                'a,
13942            > as alloy_sol_types::SolType>::Token<'a>;
13943            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
13944            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
13945            #[inline]
13946            fn new<'a>(
13947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13948            ) -> Self {
13949                tuple.into()
13950            }
13951            #[inline]
13952            fn tokenize(&self) -> Self::Token<'_> {
13953                (
13954                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
13955                        &self.stake,
13956                    ),
13957                )
13958            }
13959            #[inline]
13960            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13961                setVotingStakeTableStateReturn::_tokenize(ret)
13962            }
13963            #[inline]
13964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13965                <Self::ReturnTuple<
13966                    '_,
13967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13968                    .map(Into::into)
13969            }
13970            #[inline]
13971            fn abi_decode_returns_with_config(
13972                data: &[u8],
13973                config: alloy_sol_types::abi::AbiDecoderConfig,
13974            ) -> alloy_sol_types::Result<Self::Return> {
13975                <Self::ReturnTuple<
13976                    '_,
13977                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13978                        data,
13979                        config,
13980                    )
13981                    .map(Into::into)
13982            }
13983            #[inline]
13984            fn abi_decode_returns_validate(
13985                data: &[u8],
13986            ) -> alloy_sol_types::Result<Self::Return> {
13987                Self::abi_decode_returns_with_config(
13988                    data,
13989                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13990                )
13991            }
13992        }
13993    };
13994    #[derive(serde::Serialize, serde::Deserialize)]
13995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13996    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13997```solidity
13998function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13999```*/
14000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14001    #[derive(Clone)]
14002    pub struct setstateHistoryRetentionPeriodCall {
14003        #[allow(missing_docs)]
14004        pub historySeconds: u32,
14005    }
14006    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
14007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14008    #[derive(Clone)]
14009    pub struct setstateHistoryRetentionPeriodReturn {}
14010    #[allow(
14011        non_camel_case_types,
14012        non_snake_case,
14013        clippy::pub_underscore_fields,
14014        clippy::style
14015    )]
14016    const _: () = {
14017        use alloy::sol_types as alloy_sol_types;
14018        {
14019            #[doc(hidden)]
14020            #[allow(dead_code)]
14021            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14022            #[doc(hidden)]
14023            type UnderlyingRustTuple<'a> = (u32,);
14024            #[cfg(test)]
14025            #[allow(dead_code, unreachable_patterns)]
14026            fn _type_assertion(
14027                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14028            ) {
14029                match _t {
14030                    alloy_sol_types::private::AssertTypeEq::<
14031                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14032                    >(_) => {}
14033                }
14034            }
14035            #[automatically_derived]
14036            #[doc(hidden)]
14037            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
14038            for UnderlyingRustTuple<'_> {
14039                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
14040                    (value.historySeconds,)
14041                }
14042            }
14043            #[automatically_derived]
14044            #[doc(hidden)]
14045            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14046            for setstateHistoryRetentionPeriodCall {
14047                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14048                    Self { historySeconds: tuple.0 }
14049                }
14050            }
14051        }
14052        {
14053            #[doc(hidden)]
14054            #[allow(dead_code)]
14055            type UnderlyingSolTuple<'a> = ();
14056            #[doc(hidden)]
14057            type UnderlyingRustTuple<'a> = ();
14058            #[cfg(test)]
14059            #[allow(dead_code, unreachable_patterns)]
14060            fn _type_assertion(
14061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14062            ) {
14063                match _t {
14064                    alloy_sol_types::private::AssertTypeEq::<
14065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14066                    >(_) => {}
14067                }
14068            }
14069            #[automatically_derived]
14070            #[doc(hidden)]
14071            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
14072            for UnderlyingRustTuple<'_> {
14073                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
14074                    ()
14075                }
14076            }
14077            #[automatically_derived]
14078            #[doc(hidden)]
14079            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14080            for setstateHistoryRetentionPeriodReturn {
14081                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14082                    Self {}
14083                }
14084            }
14085        }
14086        impl setstateHistoryRetentionPeriodReturn {
14087            fn _tokenize(
14088                &self,
14089            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14090                '_,
14091            > {
14092                ()
14093            }
14094        }
14095        #[automatically_derived]
14096        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
14097            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14098            type Token<'a> = <Self::Parameters<
14099                'a,
14100            > as alloy_sol_types::SolType>::Token<'a>;
14101            type Return = setstateHistoryRetentionPeriodReturn;
14102            type ReturnTuple<'a> = ();
14103            type ReturnToken<'a> = <Self::ReturnTuple<
14104                'a,
14105            > as alloy_sol_types::SolType>::Token<'a>;
14106            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
14107            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
14108            #[inline]
14109            fn new<'a>(
14110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14111            ) -> Self {
14112                tuple.into()
14113            }
14114            #[inline]
14115            fn tokenize(&self) -> Self::Token<'_> {
14116                (
14117                    <alloy::sol_types::sol_data::Uint<
14118                        32,
14119                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14120                )
14121            }
14122            #[inline]
14123            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14124                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
14125            }
14126            #[inline]
14127            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14128                <Self::ReturnTuple<
14129                    '_,
14130                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14131                    .map(Into::into)
14132            }
14133            #[inline]
14134            fn abi_decode_returns_with_config(
14135                data: &[u8],
14136                config: alloy_sol_types::abi::AbiDecoderConfig,
14137            ) -> alloy_sol_types::Result<Self::Return> {
14138                <Self::ReturnTuple<
14139                    '_,
14140                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14141                        data,
14142                        config,
14143                    )
14144                    .map(Into::into)
14145            }
14146            #[inline]
14147            fn abi_decode_returns_validate(
14148                data: &[u8],
14149            ) -> alloy_sol_types::Result<Self::Return> {
14150                Self::abi_decode_returns_with_config(
14151                    data,
14152                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14153                )
14154            }
14155        }
14156    };
14157    #[derive(serde::Serialize, serde::Deserialize)]
14158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14159    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
14160```solidity
14161function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
14162```*/
14163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14164    #[derive(Clone)]
14165    pub struct stateHistoryCommitmentsCall(
14166        pub alloy::sol_types::private::primitives::aliases::U256,
14167    );
14168    #[derive(serde::Serialize, serde::Deserialize)]
14169    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14170    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
14171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14172    #[derive(Clone)]
14173    pub struct stateHistoryCommitmentsReturn {
14174        #[allow(missing_docs)]
14175        pub l1BlockHeight: u64,
14176        #[allow(missing_docs)]
14177        pub l1BlockTimestamp: u64,
14178        #[allow(missing_docs)]
14179        pub hotShotBlockHeight: u64,
14180        #[allow(missing_docs)]
14181        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14182    }
14183    #[allow(
14184        non_camel_case_types,
14185        non_snake_case,
14186        clippy::pub_underscore_fields,
14187        clippy::style
14188    )]
14189    const _: () = {
14190        use alloy::sol_types as alloy_sol_types;
14191        {
14192            #[doc(hidden)]
14193            #[allow(dead_code)]
14194            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14195            #[doc(hidden)]
14196            type UnderlyingRustTuple<'a> = (
14197                alloy::sol_types::private::primitives::aliases::U256,
14198            );
14199            #[cfg(test)]
14200            #[allow(dead_code, unreachable_patterns)]
14201            fn _type_assertion(
14202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14203            ) {
14204                match _t {
14205                    alloy_sol_types::private::AssertTypeEq::<
14206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14207                    >(_) => {}
14208                }
14209            }
14210            #[automatically_derived]
14211            #[doc(hidden)]
14212            impl ::core::convert::From<stateHistoryCommitmentsCall>
14213            for UnderlyingRustTuple<'_> {
14214                fn from(value: stateHistoryCommitmentsCall) -> Self {
14215                    (value.0,)
14216                }
14217            }
14218            #[automatically_derived]
14219            #[doc(hidden)]
14220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14221            for stateHistoryCommitmentsCall {
14222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14223                    Self(tuple.0)
14224                }
14225            }
14226        }
14227        {
14228            #[doc(hidden)]
14229            #[allow(dead_code)]
14230            type UnderlyingSolTuple<'a> = (
14231                alloy::sol_types::sol_data::Uint<64>,
14232                alloy::sol_types::sol_data::Uint<64>,
14233                alloy::sol_types::sol_data::Uint<64>,
14234                BN254::ScalarField,
14235            );
14236            #[doc(hidden)]
14237            type UnderlyingRustTuple<'a> = (
14238                u64,
14239                u64,
14240                u64,
14241                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14242            );
14243            #[cfg(test)]
14244            #[allow(dead_code, unreachable_patterns)]
14245            fn _type_assertion(
14246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14247            ) {
14248                match _t {
14249                    alloy_sol_types::private::AssertTypeEq::<
14250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14251                    >(_) => {}
14252                }
14253            }
14254            #[automatically_derived]
14255            #[doc(hidden)]
14256            impl ::core::convert::From<stateHistoryCommitmentsReturn>
14257            for UnderlyingRustTuple<'_> {
14258                fn from(value: stateHistoryCommitmentsReturn) -> Self {
14259                    (
14260                        value.l1BlockHeight,
14261                        value.l1BlockTimestamp,
14262                        value.hotShotBlockHeight,
14263                        value.hotShotBlockCommRoot,
14264                    )
14265                }
14266            }
14267            #[automatically_derived]
14268            #[doc(hidden)]
14269            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14270            for stateHistoryCommitmentsReturn {
14271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14272                    Self {
14273                        l1BlockHeight: tuple.0,
14274                        l1BlockTimestamp: tuple.1,
14275                        hotShotBlockHeight: tuple.2,
14276                        hotShotBlockCommRoot: tuple.3,
14277                    }
14278                }
14279            }
14280        }
14281        impl stateHistoryCommitmentsReturn {
14282            fn _tokenize(
14283                &self,
14284            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
14285                '_,
14286            > {
14287                (
14288                    <alloy::sol_types::sol_data::Uint<
14289                        64,
14290                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
14291                    <alloy::sol_types::sol_data::Uint<
14292                        64,
14293                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
14294                    <alloy::sol_types::sol_data::Uint<
14295                        64,
14296                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
14297                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14298                        &self.hotShotBlockCommRoot,
14299                    ),
14300                )
14301            }
14302        }
14303        #[automatically_derived]
14304        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
14305            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14306            type Token<'a> = <Self::Parameters<
14307                'a,
14308            > as alloy_sol_types::SolType>::Token<'a>;
14309            type Return = stateHistoryCommitmentsReturn;
14310            type ReturnTuple<'a> = (
14311                alloy::sol_types::sol_data::Uint<64>,
14312                alloy::sol_types::sol_data::Uint<64>,
14313                alloy::sol_types::sol_data::Uint<64>,
14314                BN254::ScalarField,
14315            );
14316            type ReturnToken<'a> = <Self::ReturnTuple<
14317                'a,
14318            > as alloy_sol_types::SolType>::Token<'a>;
14319            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
14320            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
14321            #[inline]
14322            fn new<'a>(
14323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14324            ) -> Self {
14325                tuple.into()
14326            }
14327            #[inline]
14328            fn tokenize(&self) -> Self::Token<'_> {
14329                (
14330                    <alloy::sol_types::sol_data::Uint<
14331                        256,
14332                    > as alloy_sol_types::SolType>::tokenize(&self.0),
14333                )
14334            }
14335            #[inline]
14336            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14337                stateHistoryCommitmentsReturn::_tokenize(ret)
14338            }
14339            #[inline]
14340            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14341                <Self::ReturnTuple<
14342                    '_,
14343                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14344                    .map(Into::into)
14345            }
14346            #[inline]
14347            fn abi_decode_returns_with_config(
14348                data: &[u8],
14349                config: alloy_sol_types::abi::AbiDecoderConfig,
14350            ) -> alloy_sol_types::Result<Self::Return> {
14351                <Self::ReturnTuple<
14352                    '_,
14353                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14354                        data,
14355                        config,
14356                    )
14357                    .map(Into::into)
14358            }
14359            #[inline]
14360            fn abi_decode_returns_validate(
14361                data: &[u8],
14362            ) -> alloy_sol_types::Result<Self::Return> {
14363                Self::abi_decode_returns_with_config(
14364                    data,
14365                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14366                )
14367            }
14368        }
14369    };
14370    #[derive(serde::Serialize, serde::Deserialize)]
14371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14372    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
14373```solidity
14374function stateHistoryFirstIndex() external view returns (uint64);
14375```*/
14376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14377    #[derive(Clone)]
14378    pub struct stateHistoryFirstIndexCall;
14379    #[derive(serde::Serialize, serde::Deserialize)]
14380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14381    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
14382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14383    #[derive(Clone)]
14384    pub struct stateHistoryFirstIndexReturn {
14385        #[allow(missing_docs)]
14386        pub _0: u64,
14387    }
14388    #[allow(
14389        non_camel_case_types,
14390        non_snake_case,
14391        clippy::pub_underscore_fields,
14392        clippy::style
14393    )]
14394    const _: () = {
14395        use alloy::sol_types as alloy_sol_types;
14396        {
14397            #[doc(hidden)]
14398            #[allow(dead_code)]
14399            type UnderlyingSolTuple<'a> = ();
14400            #[doc(hidden)]
14401            type UnderlyingRustTuple<'a> = ();
14402            #[cfg(test)]
14403            #[allow(dead_code, unreachable_patterns)]
14404            fn _type_assertion(
14405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14406            ) {
14407                match _t {
14408                    alloy_sol_types::private::AssertTypeEq::<
14409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14410                    >(_) => {}
14411                }
14412            }
14413            #[automatically_derived]
14414            #[doc(hidden)]
14415            impl ::core::convert::From<stateHistoryFirstIndexCall>
14416            for UnderlyingRustTuple<'_> {
14417                fn from(value: stateHistoryFirstIndexCall) -> Self {
14418                    ()
14419                }
14420            }
14421            #[automatically_derived]
14422            #[doc(hidden)]
14423            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14424            for stateHistoryFirstIndexCall {
14425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14426                    Self
14427                }
14428            }
14429        }
14430        {
14431            #[doc(hidden)]
14432            #[allow(dead_code)]
14433            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14434            #[doc(hidden)]
14435            type UnderlyingRustTuple<'a> = (u64,);
14436            #[cfg(test)]
14437            #[allow(dead_code, unreachable_patterns)]
14438            fn _type_assertion(
14439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14440            ) {
14441                match _t {
14442                    alloy_sol_types::private::AssertTypeEq::<
14443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14444                    >(_) => {}
14445                }
14446            }
14447            #[automatically_derived]
14448            #[doc(hidden)]
14449            impl ::core::convert::From<stateHistoryFirstIndexReturn>
14450            for UnderlyingRustTuple<'_> {
14451                fn from(value: stateHistoryFirstIndexReturn) -> Self {
14452                    (value._0,)
14453                }
14454            }
14455            #[automatically_derived]
14456            #[doc(hidden)]
14457            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14458            for stateHistoryFirstIndexReturn {
14459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14460                    Self { _0: tuple.0 }
14461                }
14462            }
14463        }
14464        #[automatically_derived]
14465        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
14466            type Parameters<'a> = ();
14467            type Token<'a> = <Self::Parameters<
14468                'a,
14469            > as alloy_sol_types::SolType>::Token<'a>;
14470            type Return = u64;
14471            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14472            type ReturnToken<'a> = <Self::ReturnTuple<
14473                'a,
14474            > as alloy_sol_types::SolType>::Token<'a>;
14475            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
14476            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
14477            #[inline]
14478            fn new<'a>(
14479                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14480            ) -> Self {
14481                tuple.into()
14482            }
14483            #[inline]
14484            fn tokenize(&self) -> Self::Token<'_> {
14485                ()
14486            }
14487            #[inline]
14488            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14489                (
14490                    <alloy::sol_types::sol_data::Uint<
14491                        64,
14492                    > as alloy_sol_types::SolType>::tokenize(ret),
14493                )
14494            }
14495            #[inline]
14496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14497                <Self::ReturnTuple<
14498                    '_,
14499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14500                    .map(|r| {
14501                        let r: stateHistoryFirstIndexReturn = r.into();
14502                        r._0
14503                    })
14504            }
14505            #[inline]
14506            fn abi_decode_returns_with_config(
14507                data: &[u8],
14508                config: alloy_sol_types::abi::AbiDecoderConfig,
14509            ) -> alloy_sol_types::Result<Self::Return> {
14510                <Self::ReturnTuple<
14511                    '_,
14512                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14513                        data,
14514                        config,
14515                    )
14516                    .map(|r| {
14517                        let r: stateHistoryFirstIndexReturn = r.into();
14518                        r._0
14519                    })
14520            }
14521            #[inline]
14522            fn abi_decode_returns_validate(
14523                data: &[u8],
14524            ) -> alloy_sol_types::Result<Self::Return> {
14525                Self::abi_decode_returns_with_config(
14526                    data,
14527                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14528                )
14529            }
14530        }
14531    };
14532    #[derive(serde::Serialize, serde::Deserialize)]
14533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14534    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
14535```solidity
14536function stateHistoryRetentionPeriod() external view returns (uint32);
14537```*/
14538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14539    #[derive(Clone)]
14540    pub struct stateHistoryRetentionPeriodCall;
14541    #[derive(serde::Serialize, serde::Deserialize)]
14542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14543    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
14544    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14545    #[derive(Clone)]
14546    pub struct stateHistoryRetentionPeriodReturn {
14547        #[allow(missing_docs)]
14548        pub _0: u32,
14549    }
14550    #[allow(
14551        non_camel_case_types,
14552        non_snake_case,
14553        clippy::pub_underscore_fields,
14554        clippy::style
14555    )]
14556    const _: () = {
14557        use alloy::sol_types as alloy_sol_types;
14558        {
14559            #[doc(hidden)]
14560            #[allow(dead_code)]
14561            type UnderlyingSolTuple<'a> = ();
14562            #[doc(hidden)]
14563            type UnderlyingRustTuple<'a> = ();
14564            #[cfg(test)]
14565            #[allow(dead_code, unreachable_patterns)]
14566            fn _type_assertion(
14567                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14568            ) {
14569                match _t {
14570                    alloy_sol_types::private::AssertTypeEq::<
14571                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14572                    >(_) => {}
14573                }
14574            }
14575            #[automatically_derived]
14576            #[doc(hidden)]
14577            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
14578            for UnderlyingRustTuple<'_> {
14579                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
14580                    ()
14581                }
14582            }
14583            #[automatically_derived]
14584            #[doc(hidden)]
14585            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14586            for stateHistoryRetentionPeriodCall {
14587                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14588                    Self
14589                }
14590            }
14591        }
14592        {
14593            #[doc(hidden)]
14594            #[allow(dead_code)]
14595            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14596            #[doc(hidden)]
14597            type UnderlyingRustTuple<'a> = (u32,);
14598            #[cfg(test)]
14599            #[allow(dead_code, unreachable_patterns)]
14600            fn _type_assertion(
14601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14602            ) {
14603                match _t {
14604                    alloy_sol_types::private::AssertTypeEq::<
14605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14606                    >(_) => {}
14607                }
14608            }
14609            #[automatically_derived]
14610            #[doc(hidden)]
14611            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
14612            for UnderlyingRustTuple<'_> {
14613                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
14614                    (value._0,)
14615                }
14616            }
14617            #[automatically_derived]
14618            #[doc(hidden)]
14619            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14620            for stateHistoryRetentionPeriodReturn {
14621                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14622                    Self { _0: tuple.0 }
14623                }
14624            }
14625        }
14626        #[automatically_derived]
14627        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
14628            type Parameters<'a> = ();
14629            type Token<'a> = <Self::Parameters<
14630                'a,
14631            > as alloy_sol_types::SolType>::Token<'a>;
14632            type Return = u32;
14633            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14634            type ReturnToken<'a> = <Self::ReturnTuple<
14635                'a,
14636            > as alloy_sol_types::SolType>::Token<'a>;
14637            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
14638            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
14639            #[inline]
14640            fn new<'a>(
14641                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14642            ) -> Self {
14643                tuple.into()
14644            }
14645            #[inline]
14646            fn tokenize(&self) -> Self::Token<'_> {
14647                ()
14648            }
14649            #[inline]
14650            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14651                (
14652                    <alloy::sol_types::sol_data::Uint<
14653                        32,
14654                    > as alloy_sol_types::SolType>::tokenize(ret),
14655                )
14656            }
14657            #[inline]
14658            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14659                <Self::ReturnTuple<
14660                    '_,
14661                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14662                    .map(|r| {
14663                        let r: stateHistoryRetentionPeriodReturn = r.into();
14664                        r._0
14665                    })
14666            }
14667            #[inline]
14668            fn abi_decode_returns_with_config(
14669                data: &[u8],
14670                config: alloy_sol_types::abi::AbiDecoderConfig,
14671            ) -> alloy_sol_types::Result<Self::Return> {
14672                <Self::ReturnTuple<
14673                    '_,
14674                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14675                        data,
14676                        config,
14677                    )
14678                    .map(|r| {
14679                        let r: stateHistoryRetentionPeriodReturn = r.into();
14680                        r._0
14681                    })
14682            }
14683            #[inline]
14684            fn abi_decode_returns_validate(
14685                data: &[u8],
14686            ) -> alloy_sol_types::Result<Self::Return> {
14687                Self::abi_decode_returns_with_config(
14688                    data,
14689                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14690                )
14691            }
14692        }
14693    };
14694    #[derive(serde::Serialize, serde::Deserialize)]
14695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14696    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14697```solidity
14698function transferOwnership(address newOwner) external;
14699```*/
14700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14701    #[derive(Clone)]
14702    pub struct transferOwnershipCall {
14703        #[allow(missing_docs)]
14704        pub newOwner: alloy::sol_types::private::Address,
14705    }
14706    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14708    #[derive(Clone)]
14709    pub struct transferOwnershipReturn {}
14710    #[allow(
14711        non_camel_case_types,
14712        non_snake_case,
14713        clippy::pub_underscore_fields,
14714        clippy::style
14715    )]
14716    const _: () = {
14717        use alloy::sol_types as alloy_sol_types;
14718        {
14719            #[doc(hidden)]
14720            #[allow(dead_code)]
14721            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14722            #[doc(hidden)]
14723            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14724            #[cfg(test)]
14725            #[allow(dead_code, unreachable_patterns)]
14726            fn _type_assertion(
14727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14728            ) {
14729                match _t {
14730                    alloy_sol_types::private::AssertTypeEq::<
14731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14732                    >(_) => {}
14733                }
14734            }
14735            #[automatically_derived]
14736            #[doc(hidden)]
14737            impl ::core::convert::From<transferOwnershipCall>
14738            for UnderlyingRustTuple<'_> {
14739                fn from(value: transferOwnershipCall) -> Self {
14740                    (value.newOwner,)
14741                }
14742            }
14743            #[automatically_derived]
14744            #[doc(hidden)]
14745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14746            for transferOwnershipCall {
14747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14748                    Self { newOwner: tuple.0 }
14749                }
14750            }
14751        }
14752        {
14753            #[doc(hidden)]
14754            #[allow(dead_code)]
14755            type UnderlyingSolTuple<'a> = ();
14756            #[doc(hidden)]
14757            type UnderlyingRustTuple<'a> = ();
14758            #[cfg(test)]
14759            #[allow(dead_code, unreachable_patterns)]
14760            fn _type_assertion(
14761                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14762            ) {
14763                match _t {
14764                    alloy_sol_types::private::AssertTypeEq::<
14765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14766                    >(_) => {}
14767                }
14768            }
14769            #[automatically_derived]
14770            #[doc(hidden)]
14771            impl ::core::convert::From<transferOwnershipReturn>
14772            for UnderlyingRustTuple<'_> {
14773                fn from(value: transferOwnershipReturn) -> Self {
14774                    ()
14775                }
14776            }
14777            #[automatically_derived]
14778            #[doc(hidden)]
14779            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14780            for transferOwnershipReturn {
14781                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14782                    Self {}
14783                }
14784            }
14785        }
14786        impl transferOwnershipReturn {
14787            fn _tokenize(
14788                &self,
14789            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14790                ()
14791            }
14792        }
14793        #[automatically_derived]
14794        impl alloy_sol_types::SolCall for transferOwnershipCall {
14795            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14796            type Token<'a> = <Self::Parameters<
14797                'a,
14798            > as alloy_sol_types::SolType>::Token<'a>;
14799            type Return = transferOwnershipReturn;
14800            type ReturnTuple<'a> = ();
14801            type ReturnToken<'a> = <Self::ReturnTuple<
14802                'a,
14803            > as alloy_sol_types::SolType>::Token<'a>;
14804            const SIGNATURE: &'static str = "transferOwnership(address)";
14805            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14806            #[inline]
14807            fn new<'a>(
14808                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14809            ) -> Self {
14810                tuple.into()
14811            }
14812            #[inline]
14813            fn tokenize(&self) -> Self::Token<'_> {
14814                (
14815                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14816                        &self.newOwner,
14817                    ),
14818                )
14819            }
14820            #[inline]
14821            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14822                transferOwnershipReturn::_tokenize(ret)
14823            }
14824            #[inline]
14825            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14826                <Self::ReturnTuple<
14827                    '_,
14828                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14829                    .map(Into::into)
14830            }
14831            #[inline]
14832            fn abi_decode_returns_with_config(
14833                data: &[u8],
14834                config: alloy_sol_types::abi::AbiDecoderConfig,
14835            ) -> alloy_sol_types::Result<Self::Return> {
14836                <Self::ReturnTuple<
14837                    '_,
14838                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14839                        data,
14840                        config,
14841                    )
14842                    .map(Into::into)
14843            }
14844            #[inline]
14845            fn abi_decode_returns_validate(
14846                data: &[u8],
14847            ) -> alloy_sol_types::Result<Self::Return> {
14848                Self::abi_decode_returns_with_config(
14849                    data,
14850                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14851                )
14852            }
14853        }
14854    };
14855    #[derive(serde::Serialize, serde::Deserialize)]
14856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14857    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
14858```solidity
14859function updateEpochStartBlock(uint64 newEpochStartBlock) external;
14860```*/
14861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14862    #[derive(Clone)]
14863    pub struct updateEpochStartBlockCall {
14864        #[allow(missing_docs)]
14865        pub newEpochStartBlock: u64,
14866    }
14867    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
14868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14869    #[derive(Clone)]
14870    pub struct updateEpochStartBlockReturn {}
14871    #[allow(
14872        non_camel_case_types,
14873        non_snake_case,
14874        clippy::pub_underscore_fields,
14875        clippy::style
14876    )]
14877    const _: () = {
14878        use alloy::sol_types as alloy_sol_types;
14879        {
14880            #[doc(hidden)]
14881            #[allow(dead_code)]
14882            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14883            #[doc(hidden)]
14884            type UnderlyingRustTuple<'a> = (u64,);
14885            #[cfg(test)]
14886            #[allow(dead_code, unreachable_patterns)]
14887            fn _type_assertion(
14888                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14889            ) {
14890                match _t {
14891                    alloy_sol_types::private::AssertTypeEq::<
14892                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14893                    >(_) => {}
14894                }
14895            }
14896            #[automatically_derived]
14897            #[doc(hidden)]
14898            impl ::core::convert::From<updateEpochStartBlockCall>
14899            for UnderlyingRustTuple<'_> {
14900                fn from(value: updateEpochStartBlockCall) -> Self {
14901                    (value.newEpochStartBlock,)
14902                }
14903            }
14904            #[automatically_derived]
14905            #[doc(hidden)]
14906            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14907            for updateEpochStartBlockCall {
14908                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14909                    Self {
14910                        newEpochStartBlock: tuple.0,
14911                    }
14912                }
14913            }
14914        }
14915        {
14916            #[doc(hidden)]
14917            #[allow(dead_code)]
14918            type UnderlyingSolTuple<'a> = ();
14919            #[doc(hidden)]
14920            type UnderlyingRustTuple<'a> = ();
14921            #[cfg(test)]
14922            #[allow(dead_code, unreachable_patterns)]
14923            fn _type_assertion(
14924                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14925            ) {
14926                match _t {
14927                    alloy_sol_types::private::AssertTypeEq::<
14928                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14929                    >(_) => {}
14930                }
14931            }
14932            #[automatically_derived]
14933            #[doc(hidden)]
14934            impl ::core::convert::From<updateEpochStartBlockReturn>
14935            for UnderlyingRustTuple<'_> {
14936                fn from(value: updateEpochStartBlockReturn) -> Self {
14937                    ()
14938                }
14939            }
14940            #[automatically_derived]
14941            #[doc(hidden)]
14942            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14943            for updateEpochStartBlockReturn {
14944                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14945                    Self {}
14946                }
14947            }
14948        }
14949        impl updateEpochStartBlockReturn {
14950            fn _tokenize(
14951                &self,
14952            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
14953                '_,
14954            > {
14955                ()
14956            }
14957        }
14958        #[automatically_derived]
14959        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
14960            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14961            type Token<'a> = <Self::Parameters<
14962                'a,
14963            > as alloy_sol_types::SolType>::Token<'a>;
14964            type Return = updateEpochStartBlockReturn;
14965            type ReturnTuple<'a> = ();
14966            type ReturnToken<'a> = <Self::ReturnTuple<
14967                'a,
14968            > as alloy_sol_types::SolType>::Token<'a>;
14969            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
14970            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
14971            #[inline]
14972            fn new<'a>(
14973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14974            ) -> Self {
14975                tuple.into()
14976            }
14977            #[inline]
14978            fn tokenize(&self) -> Self::Token<'_> {
14979                (
14980                    <alloy::sol_types::sol_data::Uint<
14981                        64,
14982                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
14983                )
14984            }
14985            #[inline]
14986            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14987                updateEpochStartBlockReturn::_tokenize(ret)
14988            }
14989            #[inline]
14990            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14991                <Self::ReturnTuple<
14992                    '_,
14993                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14994                    .map(Into::into)
14995            }
14996            #[inline]
14997            fn abi_decode_returns_with_config(
14998                data: &[u8],
14999                config: alloy_sol_types::abi::AbiDecoderConfig,
15000            ) -> alloy_sol_types::Result<Self::Return> {
15001                <Self::ReturnTuple<
15002                    '_,
15003                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15004                        data,
15005                        config,
15006                    )
15007                    .map(Into::into)
15008            }
15009            #[inline]
15010            fn abi_decode_returns_validate(
15011                data: &[u8],
15012            ) -> alloy_sol_types::Result<Self::Return> {
15013                Self::abi_decode_returns_with_config(
15014                    data,
15015                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15016                )
15017            }
15018        }
15019    };
15020    #[derive(serde::Serialize, serde::Deserialize)]
15021    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15022    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
15023```solidity
15024function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
15025```*/
15026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15027    #[derive(Clone)]
15028    pub struct upgradeToAndCallCall {
15029        #[allow(missing_docs)]
15030        pub newImplementation: alloy::sol_types::private::Address,
15031        #[allow(missing_docs)]
15032        pub data: alloy::sol_types::private::Bytes,
15033    }
15034    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
15035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15036    #[derive(Clone)]
15037    pub struct upgradeToAndCallReturn {}
15038    #[allow(
15039        non_camel_case_types,
15040        non_snake_case,
15041        clippy::pub_underscore_fields,
15042        clippy::style
15043    )]
15044    const _: () = {
15045        use alloy::sol_types as alloy_sol_types;
15046        {
15047            #[doc(hidden)]
15048            #[allow(dead_code)]
15049            type UnderlyingSolTuple<'a> = (
15050                alloy::sol_types::sol_data::Address,
15051                alloy::sol_types::sol_data::Bytes,
15052            );
15053            #[doc(hidden)]
15054            type UnderlyingRustTuple<'a> = (
15055                alloy::sol_types::private::Address,
15056                alloy::sol_types::private::Bytes,
15057            );
15058            #[cfg(test)]
15059            #[allow(dead_code, unreachable_patterns)]
15060            fn _type_assertion(
15061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15062            ) {
15063                match _t {
15064                    alloy_sol_types::private::AssertTypeEq::<
15065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15066                    >(_) => {}
15067                }
15068            }
15069            #[automatically_derived]
15070            #[doc(hidden)]
15071            impl ::core::convert::From<upgradeToAndCallCall>
15072            for UnderlyingRustTuple<'_> {
15073                fn from(value: upgradeToAndCallCall) -> Self {
15074                    (value.newImplementation, value.data)
15075                }
15076            }
15077            #[automatically_derived]
15078            #[doc(hidden)]
15079            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15080            for upgradeToAndCallCall {
15081                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15082                    Self {
15083                        newImplementation: tuple.0,
15084                        data: tuple.1,
15085                    }
15086                }
15087            }
15088        }
15089        {
15090            #[doc(hidden)]
15091            #[allow(dead_code)]
15092            type UnderlyingSolTuple<'a> = ();
15093            #[doc(hidden)]
15094            type UnderlyingRustTuple<'a> = ();
15095            #[cfg(test)]
15096            #[allow(dead_code, unreachable_patterns)]
15097            fn _type_assertion(
15098                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15099            ) {
15100                match _t {
15101                    alloy_sol_types::private::AssertTypeEq::<
15102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15103                    >(_) => {}
15104                }
15105            }
15106            #[automatically_derived]
15107            #[doc(hidden)]
15108            impl ::core::convert::From<upgradeToAndCallReturn>
15109            for UnderlyingRustTuple<'_> {
15110                fn from(value: upgradeToAndCallReturn) -> Self {
15111                    ()
15112                }
15113            }
15114            #[automatically_derived]
15115            #[doc(hidden)]
15116            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15117            for upgradeToAndCallReturn {
15118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15119                    Self {}
15120                }
15121            }
15122        }
15123        impl upgradeToAndCallReturn {
15124            fn _tokenize(
15125                &self,
15126            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15127                ()
15128            }
15129        }
15130        #[automatically_derived]
15131        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
15132            type Parameters<'a> = (
15133                alloy::sol_types::sol_data::Address,
15134                alloy::sol_types::sol_data::Bytes,
15135            );
15136            type Token<'a> = <Self::Parameters<
15137                'a,
15138            > as alloy_sol_types::SolType>::Token<'a>;
15139            type Return = upgradeToAndCallReturn;
15140            type ReturnTuple<'a> = ();
15141            type ReturnToken<'a> = <Self::ReturnTuple<
15142                'a,
15143            > as alloy_sol_types::SolType>::Token<'a>;
15144            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
15145            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
15146            #[inline]
15147            fn new<'a>(
15148                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15149            ) -> Self {
15150                tuple.into()
15151            }
15152            #[inline]
15153            fn tokenize(&self) -> Self::Token<'_> {
15154                (
15155                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15156                        &self.newImplementation,
15157                    ),
15158                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
15159                        &self.data,
15160                    ),
15161                )
15162            }
15163            #[inline]
15164            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15165                upgradeToAndCallReturn::_tokenize(ret)
15166            }
15167            #[inline]
15168            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15169                <Self::ReturnTuple<
15170                    '_,
15171                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15172                    .map(Into::into)
15173            }
15174            #[inline]
15175            fn abi_decode_returns_with_config(
15176                data: &[u8],
15177                config: alloy_sol_types::abi::AbiDecoderConfig,
15178            ) -> alloy_sol_types::Result<Self::Return> {
15179                <Self::ReturnTuple<
15180                    '_,
15181                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15182                        data,
15183                        config,
15184                    )
15185                    .map(Into::into)
15186            }
15187            #[inline]
15188            fn abi_decode_returns_validate(
15189                data: &[u8],
15190            ) -> alloy_sol_types::Result<Self::Return> {
15191                Self::abi_decode_returns_with_config(
15192                    data,
15193                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15194                )
15195            }
15196        }
15197    };
15198    #[derive(serde::Serialize, serde::Deserialize)]
15199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15200    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
15201```solidity
15202function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
15203```*/
15204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15205    #[derive(Clone)]
15206    pub struct votingStakeTableStateCall;
15207    #[derive(serde::Serialize, serde::Deserialize)]
15208    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15209    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
15210    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15211    #[derive(Clone)]
15212    pub struct votingStakeTableStateReturn {
15213        #[allow(missing_docs)]
15214        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
15215        #[allow(missing_docs)]
15216        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15217        #[allow(missing_docs)]
15218        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15219        #[allow(missing_docs)]
15220        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15221    }
15222    #[allow(
15223        non_camel_case_types,
15224        non_snake_case,
15225        clippy::pub_underscore_fields,
15226        clippy::style
15227    )]
15228    const _: () = {
15229        use alloy::sol_types as alloy_sol_types;
15230        {
15231            #[doc(hidden)]
15232            #[allow(dead_code)]
15233            type UnderlyingSolTuple<'a> = ();
15234            #[doc(hidden)]
15235            type UnderlyingRustTuple<'a> = ();
15236            #[cfg(test)]
15237            #[allow(dead_code, unreachable_patterns)]
15238            fn _type_assertion(
15239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15240            ) {
15241                match _t {
15242                    alloy_sol_types::private::AssertTypeEq::<
15243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15244                    >(_) => {}
15245                }
15246            }
15247            #[automatically_derived]
15248            #[doc(hidden)]
15249            impl ::core::convert::From<votingStakeTableStateCall>
15250            for UnderlyingRustTuple<'_> {
15251                fn from(value: votingStakeTableStateCall) -> Self {
15252                    ()
15253                }
15254            }
15255            #[automatically_derived]
15256            #[doc(hidden)]
15257            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15258            for votingStakeTableStateCall {
15259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15260                    Self
15261                }
15262            }
15263        }
15264        {
15265            #[doc(hidden)]
15266            #[allow(dead_code)]
15267            type UnderlyingSolTuple<'a> = (
15268                alloy::sol_types::sol_data::Uint<256>,
15269                BN254::ScalarField,
15270                BN254::ScalarField,
15271                BN254::ScalarField,
15272            );
15273            #[doc(hidden)]
15274            type UnderlyingRustTuple<'a> = (
15275                alloy::sol_types::private::primitives::aliases::U256,
15276                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15277                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15278                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15279            );
15280            #[cfg(test)]
15281            #[allow(dead_code, unreachable_patterns)]
15282            fn _type_assertion(
15283                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15284            ) {
15285                match _t {
15286                    alloy_sol_types::private::AssertTypeEq::<
15287                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15288                    >(_) => {}
15289                }
15290            }
15291            #[automatically_derived]
15292            #[doc(hidden)]
15293            impl ::core::convert::From<votingStakeTableStateReturn>
15294            for UnderlyingRustTuple<'_> {
15295                fn from(value: votingStakeTableStateReturn) -> Self {
15296                    (
15297                        value.threshold,
15298                        value.blsKeyComm,
15299                        value.schnorrKeyComm,
15300                        value.amountComm,
15301                    )
15302                }
15303            }
15304            #[automatically_derived]
15305            #[doc(hidden)]
15306            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15307            for votingStakeTableStateReturn {
15308                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15309                    Self {
15310                        threshold: tuple.0,
15311                        blsKeyComm: tuple.1,
15312                        schnorrKeyComm: tuple.2,
15313                        amountComm: tuple.3,
15314                    }
15315                }
15316            }
15317        }
15318        impl votingStakeTableStateReturn {
15319            fn _tokenize(
15320                &self,
15321            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
15322                '_,
15323            > {
15324                (
15325                    <alloy::sol_types::sol_data::Uint<
15326                        256,
15327                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
15328                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15329                        &self.blsKeyComm,
15330                    ),
15331                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15332                        &self.schnorrKeyComm,
15333                    ),
15334                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15335                        &self.amountComm,
15336                    ),
15337                )
15338            }
15339        }
15340        #[automatically_derived]
15341        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
15342            type Parameters<'a> = ();
15343            type Token<'a> = <Self::Parameters<
15344                'a,
15345            > as alloy_sol_types::SolType>::Token<'a>;
15346            type Return = votingStakeTableStateReturn;
15347            type ReturnTuple<'a> = (
15348                alloy::sol_types::sol_data::Uint<256>,
15349                BN254::ScalarField,
15350                BN254::ScalarField,
15351                BN254::ScalarField,
15352            );
15353            type ReturnToken<'a> = <Self::ReturnTuple<
15354                'a,
15355            > as alloy_sol_types::SolType>::Token<'a>;
15356            const SIGNATURE: &'static str = "votingStakeTableState()";
15357            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
15358            #[inline]
15359            fn new<'a>(
15360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15361            ) -> Self {
15362                tuple.into()
15363            }
15364            #[inline]
15365            fn tokenize(&self) -> Self::Token<'_> {
15366                ()
15367            }
15368            #[inline]
15369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15370                votingStakeTableStateReturn::_tokenize(ret)
15371            }
15372            #[inline]
15373            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15374                <Self::ReturnTuple<
15375                    '_,
15376                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15377                    .map(Into::into)
15378            }
15379            #[inline]
15380            fn abi_decode_returns_with_config(
15381                data: &[u8],
15382                config: alloy_sol_types::abi::AbiDecoderConfig,
15383            ) -> alloy_sol_types::Result<Self::Return> {
15384                <Self::ReturnTuple<
15385                    '_,
15386                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15387                        data,
15388                        config,
15389                    )
15390                    .map(Into::into)
15391            }
15392            #[inline]
15393            fn abi_decode_returns_validate(
15394                data: &[u8],
15395            ) -> alloy_sol_types::Result<Self::Return> {
15396                Self::abi_decode_returns_with_config(
15397                    data,
15398                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15399                )
15400            }
15401        }
15402    };
15403    ///Container for all the [`LightClientV2Mock`](self) function calls.
15404    #[derive(Clone)]
15405    #[derive(serde::Serialize, serde::Deserialize)]
15406    #[derive(Debug, PartialEq, Eq, Hash)]
15407    pub enum LightClientV2MockCalls {
15408        #[allow(missing_docs)]
15409        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
15410        #[allow(missing_docs)]
15411        _getVk(_getVkCall),
15412        #[allow(missing_docs)]
15413        blocksPerEpoch(blocksPerEpochCall),
15414        #[allow(missing_docs)]
15415        currentBlockNumber(currentBlockNumberCall),
15416        #[allow(missing_docs)]
15417        currentEpoch(currentEpochCall),
15418        #[allow(missing_docs)]
15419        disablePermissionedProverMode(disablePermissionedProverModeCall),
15420        #[allow(missing_docs)]
15421        epochFromBlockNumber(epochFromBlockNumberCall),
15422        #[allow(missing_docs)]
15423        epochStartBlock(epochStartBlockCall),
15424        #[allow(missing_docs)]
15425        finalizedState(finalizedStateCall),
15426        #[allow(missing_docs)]
15427        genesisStakeTableState(genesisStakeTableStateCall),
15428        #[allow(missing_docs)]
15429        genesisState(genesisStateCall),
15430        #[allow(missing_docs)]
15431        getFirstEpoch(getFirstEpochCall),
15432        #[allow(missing_docs)]
15433        getHotShotCommitment(getHotShotCommitmentCall),
15434        #[allow(missing_docs)]
15435        getStateHistoryCount(getStateHistoryCountCall),
15436        #[allow(missing_docs)]
15437        getVersion(getVersionCall),
15438        #[allow(missing_docs)]
15439        initialize(initializeCall),
15440        #[allow(missing_docs)]
15441        initializeV2(initializeV2Call),
15442        #[allow(missing_docs)]
15443        isEpochRoot(isEpochRootCall),
15444        #[allow(missing_docs)]
15445        isGtEpochRoot(isGtEpochRootCall),
15446        #[allow(missing_docs)]
15447        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
15448        #[allow(missing_docs)]
15449        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
15450        #[allow(missing_docs)]
15451        newFinalizedState_0(newFinalizedState_0Call),
15452        #[allow(missing_docs)]
15453        newFinalizedState_1(newFinalizedState_1Call),
15454        #[allow(missing_docs)]
15455        owner(ownerCall),
15456        #[allow(missing_docs)]
15457        permissionedProver(permissionedProverCall),
15458        #[allow(missing_docs)]
15459        proxiableUUID(proxiableUUIDCall),
15460        #[allow(missing_docs)]
15461        renounceOwnership(renounceOwnershipCall),
15462        #[allow(missing_docs)]
15463        setBlocksPerEpoch(setBlocksPerEpochCall),
15464        #[allow(missing_docs)]
15465        setFinalizedState(setFinalizedStateCall),
15466        #[allow(missing_docs)]
15467        setHotShotDownSince(setHotShotDownSinceCall),
15468        #[allow(missing_docs)]
15469        setHotShotUp(setHotShotUpCall),
15470        #[allow(missing_docs)]
15471        setPermissionedProver(setPermissionedProverCall),
15472        #[allow(missing_docs)]
15473        setStateHistory(setStateHistoryCall),
15474        #[allow(missing_docs)]
15475        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
15476        #[allow(missing_docs)]
15477        setVotingStakeTableState(setVotingStakeTableStateCall),
15478        #[allow(missing_docs)]
15479        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
15480        #[allow(missing_docs)]
15481        stateHistoryCommitments(stateHistoryCommitmentsCall),
15482        #[allow(missing_docs)]
15483        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
15484        #[allow(missing_docs)]
15485        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
15486        #[allow(missing_docs)]
15487        transferOwnership(transferOwnershipCall),
15488        #[allow(missing_docs)]
15489        updateEpochStartBlock(updateEpochStartBlockCall),
15490        #[allow(missing_docs)]
15491        upgradeToAndCall(upgradeToAndCallCall),
15492        #[allow(missing_docs)]
15493        votingStakeTableState(votingStakeTableStateCall),
15494    }
15495    impl LightClientV2MockCalls {
15496        /// All the selectors of this enum.
15497        ///
15498        /// Note that the selectors might not be in the same order as the variants.
15499        /// No guarantees are made about the order of the selectors.
15500        ///
15501        /// Prefer using `SolInterface` methods instead.
15502        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15503            [1u8, 63u8, 165u8, 252u8],
15504            [2u8, 181u8, 146u8, 243u8],
15505            [6u8, 37u8, 225u8, 155u8],
15506            [13u8, 142u8, 110u8, 44u8],
15507            [18u8, 23u8, 60u8, 44u8],
15508            [22u8, 122u8, 198u8, 24u8],
15509            [32u8, 99u8, 212u8, 247u8],
15510            [37u8, 41u8, 116u8, 39u8],
15511            [45u8, 82u8, 170u8, 214u8],
15512            [47u8, 121u8, 136u8, 157u8],
15513            [48u8, 12u8, 137u8, 221u8],
15514            [49u8, 61u8, 247u8, 177u8],
15515            [55u8, 142u8, 194u8, 59u8],
15516            [60u8, 35u8, 182u8, 219u8],
15517            [62u8, 213u8, 91u8, 123u8],
15518            [66u8, 109u8, 49u8, 148u8],
15519            [67u8, 61u8, 186u8, 159u8],
15520            [79u8, 30u8, 242u8, 134u8],
15521            [82u8, 209u8, 144u8, 45u8],
15522            [98u8, 58u8, 19u8, 56u8],
15523            [105u8, 204u8, 106u8, 4u8],
15524            [113u8, 80u8, 24u8, 166u8],
15525            [117u8, 124u8, 55u8, 173u8],
15526            [118u8, 103u8, 24u8, 8u8],
15527            [130u8, 110u8, 65u8, 252u8],
15528            [133u8, 132u8, 210u8, 63u8],
15529            [141u8, 165u8, 203u8, 91u8],
15530            [144u8, 193u8, 67u8, 144u8],
15531            [150u8, 193u8, 202u8, 97u8],
15532            [155u8, 170u8, 60u8, 201u8],
15533            [159u8, 219u8, 84u8, 167u8],
15534            [173u8, 60u8, 177u8, 204u8],
15535            [179u8, 59u8, 196u8, 145u8],
15536            [179u8, 218u8, 242u8, 84u8],
15537            [181u8, 173u8, 234u8, 60u8],
15538            [194u8, 59u8, 158u8, 158u8],
15539            [200u8, 229u8, 228u8, 152u8],
15540            [210u8, 77u8, 147u8, 61u8],
15541            [224u8, 48u8, 51u8, 1u8],
15542            [240u8, 104u8, 32u8, 84u8],
15543            [242u8, 253u8, 227u8, 139u8],
15544            [245u8, 103u8, 97u8, 96u8],
15545            [249u8, 229u8, 13u8, 25u8],
15546        ];
15547        /// The names of the variants in the same order as `SELECTORS`.
15548        pub const VARIANT_NAMES: &'static [&'static str] = &[
15549            ::core::stringify!(setPermissionedProver),
15550            ::core::stringify!(stateHistoryCommitments),
15551            ::core::stringify!(votingStakeTableState),
15552            ::core::stringify!(getVersion),
15553            ::core::stringify!(_getVk),
15554            ::core::stringify!(updateEpochStartBlock),
15555            ::core::stringify!(newFinalizedState_0),
15556            ::core::stringify!(isEpochRoot),
15557            ::core::stringify!(setHotShotDownSince),
15558            ::core::stringify!(stateHistoryFirstIndex),
15559            ::core::stringify!(isGtEpochRoot),
15560            ::core::stringify!(permissionedProver),
15561            ::core::stringify!(currentBlockNumber),
15562            ::core::stringify!(setBlocksPerEpoch),
15563            ::core::stringify!(epochStartBlock),
15564            ::core::stringify!(genesisStakeTableState),
15565            ::core::stringify!(setStateHistoryRetentionPeriod),
15566            ::core::stringify!(upgradeToAndCall),
15567            ::core::stringify!(proxiableUUID),
15568            ::core::stringify!(setVotingStakeTableState),
15569            ::core::stringify!(disablePermissionedProverMode),
15570            ::core::stringify!(renounceOwnership),
15571            ::core::stringify!(newFinalizedState_1),
15572            ::core::stringify!(currentEpoch),
15573            ::core::stringify!(isPermissionedProverEnabled),
15574            ::core::stringify!(getHotShotCommitment),
15575            ::core::stringify!(owner),
15576            ::core::stringify!(epochFromBlockNumber),
15577            ::core::stringify!(setstateHistoryRetentionPeriod),
15578            ::core::stringify!(initialize),
15579            ::core::stringify!(finalizedState),
15580            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
15581            ::core::stringify!(initializeV2),
15582            ::core::stringify!(getFirstEpoch),
15583            ::core::stringify!(setFinalizedState),
15584            ::core::stringify!(stateHistoryRetentionPeriod),
15585            ::core::stringify!(setHotShotUp),
15586            ::core::stringify!(genesisState),
15587            ::core::stringify!(lagOverEscapeHatchThreshold),
15588            ::core::stringify!(blocksPerEpoch),
15589            ::core::stringify!(transferOwnership),
15590            ::core::stringify!(setStateHistory),
15591            ::core::stringify!(getStateHistoryCount),
15592        ];
15593        /// The signatures in the same order as `SELECTORS`.
15594        pub const SIGNATURES: &'static [&'static str] = &[
15595            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
15596            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
15597            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15598            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
15599            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
15600            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
15601            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
15602            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
15603            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
15604            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
15605            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
15606            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
15607            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
15608            <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15609            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
15610            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15611            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15612            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
15613            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
15614            <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15615            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
15616            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
15617            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
15618            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15619            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
15620            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
15621            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
15622            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
15623            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15624            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
15625            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15626            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
15627            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
15628            <getFirstEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15629            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15630            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
15631            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
15632            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
15633            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
15634            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
15635            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
15636            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
15637            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
15638        ];
15639        /// Returns the signature for the given selector, if known.
15640        #[inline]
15641        pub fn signature_by_selector(
15642            selector: [u8; 4usize],
15643        ) -> ::core::option::Option<&'static str> {
15644            match Self::SELECTORS.binary_search(&selector) {
15645                ::core::result::Result::Ok(idx) => {
15646                    ::core::option::Option::Some(Self::SIGNATURES[idx])
15647                }
15648                ::core::result::Result::Err(_) => ::core::option::Option::None,
15649            }
15650        }
15651        /// Returns the enum variant name for the given selector, if known.
15652        #[inline]
15653        pub fn name_by_selector(
15654            selector: [u8; 4usize],
15655        ) -> ::core::option::Option<&'static str> {
15656            let sig = Self::signature_by_selector(selector)?;
15657            sig.split_once('(').map(|(name, _)| name)
15658        }
15659    }
15660    #[automatically_derived]
15661    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
15662        const NAME: &'static str = "LightClientV2MockCalls";
15663        const MIN_DATA_LENGTH: usize = 0usize;
15664        const COUNT: usize = 43usize;
15665        #[inline]
15666        fn selector(&self) -> [u8; 4] {
15667            match self {
15668                Self::UPGRADE_INTERFACE_VERSION(_) => {
15669                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
15670                }
15671                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
15672                Self::blocksPerEpoch(_) => {
15673                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15674                }
15675                Self::currentBlockNumber(_) => {
15676                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15677                }
15678                Self::currentEpoch(_) => {
15679                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
15680                }
15681                Self::disablePermissionedProverMode(_) => {
15682                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
15683                }
15684                Self::epochFromBlockNumber(_) => {
15685                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
15686                }
15687                Self::epochStartBlock(_) => {
15688                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15689                }
15690                Self::finalizedState(_) => {
15691                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15692                }
15693                Self::genesisStakeTableState(_) => {
15694                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15695                }
15696                Self::genesisState(_) => {
15697                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
15698                }
15699                Self::getFirstEpoch(_) => {
15700                    <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR
15701                }
15702                Self::getHotShotCommitment(_) => {
15703                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
15704                }
15705                Self::getStateHistoryCount(_) => {
15706                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
15707                }
15708                Self::getVersion(_) => {
15709                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
15710                }
15711                Self::initialize(_) => {
15712                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
15713                }
15714                Self::initializeV2(_) => {
15715                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
15716                }
15717                Self::isEpochRoot(_) => {
15718                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15719                }
15720                Self::isGtEpochRoot(_) => {
15721                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15722                }
15723                Self::isPermissionedProverEnabled(_) => {
15724                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
15725                }
15726                Self::lagOverEscapeHatchThreshold(_) => {
15727                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
15728                }
15729                Self::newFinalizedState_0(_) => {
15730                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
15731                }
15732                Self::newFinalizedState_1(_) => {
15733                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
15734                }
15735                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15736                Self::permissionedProver(_) => {
15737                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15738                }
15739                Self::proxiableUUID(_) => {
15740                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
15741                }
15742                Self::renounceOwnership(_) => {
15743                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15744                }
15745                Self::setBlocksPerEpoch(_) => {
15746                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15747                }
15748                Self::setFinalizedState(_) => {
15749                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15750                }
15751                Self::setHotShotDownSince(_) => {
15752                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
15753                }
15754                Self::setHotShotUp(_) => {
15755                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
15756                }
15757                Self::setPermissionedProver(_) => {
15758                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15759                }
15760                Self::setStateHistory(_) => {
15761                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
15762                }
15763                Self::setStateHistoryRetentionPeriod(_) => {
15764                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15765                }
15766                Self::setVotingStakeTableState(_) => {
15767                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15768                }
15769                Self::setstateHistoryRetentionPeriod(_) => {
15770                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15771                }
15772                Self::stateHistoryCommitments(_) => {
15773                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
15774                }
15775                Self::stateHistoryFirstIndex(_) => {
15776                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15777                }
15778                Self::stateHistoryRetentionPeriod(_) => {
15779                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15780                }
15781                Self::transferOwnership(_) => {
15782                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15783                }
15784                Self::updateEpochStartBlock(_) => {
15785                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15786                }
15787                Self::upgradeToAndCall(_) => {
15788                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15789                }
15790                Self::votingStakeTableState(_) => {
15791                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15792                }
15793            }
15794        }
15795        #[inline]
15796        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15797            Self::SELECTORS.get(i).copied()
15798        }
15799        #[inline]
15800        fn valid_selector(selector: [u8; 4]) -> bool {
15801            Self::SELECTORS.binary_search(&selector).is_ok()
15802        }
15803        #[inline]
15804        #[allow(non_snake_case)]
15805        fn abi_decode_raw(
15806            selector: [u8; 4],
15807            data: &[u8],
15808        ) -> alloy_sol_types::Result<Self> {
15809            Self::abi_decode_raw_with_config(
15810                selector,
15811                data,
15812                alloy_sol_types::abi::AbiDecoderConfig::default(),
15813            )
15814        }
15815        #[inline]
15816        #[allow(non_snake_case)]
15817        fn abi_decode_raw_with_config(
15818            selector: [u8; 4],
15819            data: &[u8],
15820            config: alloy_sol_types::abi::AbiDecoderConfig,
15821        ) -> alloy_sol_types::Result<Self> {
15822            static DECODE_SHIMS: &[fn(
15823                &[u8],
15824                alloy_sol_types::abi::AbiDecoderConfig,
15825            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15826                {
15827                    fn setPermissionedProver(
15828                        data: &[u8],
15829                        config: alloy_sol_types::abi::AbiDecoderConfig,
15830                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15831                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15832                                data,
15833                                config,
15834                            )
15835                            .map(LightClientV2MockCalls::setPermissionedProver)
15836                    }
15837                    setPermissionedProver
15838                },
15839                {
15840                    fn stateHistoryCommitments(
15841                        data: &[u8],
15842                        config: alloy_sol_types::abi::AbiDecoderConfig,
15843                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15844                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15845                                data,
15846                                config,
15847                            )
15848                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15849                    }
15850                    stateHistoryCommitments
15851                },
15852                {
15853                    fn votingStakeTableState(
15854                        data: &[u8],
15855                        config: alloy_sol_types::abi::AbiDecoderConfig,
15856                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15857                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15858                                data,
15859                                config,
15860                            )
15861                            .map(LightClientV2MockCalls::votingStakeTableState)
15862                    }
15863                    votingStakeTableState
15864                },
15865                {
15866                    fn getVersion(
15867                        data: &[u8],
15868                        config: alloy_sol_types::abi::AbiDecoderConfig,
15869                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15870                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15871                                data,
15872                                config,
15873                            )
15874                            .map(LightClientV2MockCalls::getVersion)
15875                    }
15876                    getVersion
15877                },
15878                {
15879                    fn _getVk(
15880                        data: &[u8],
15881                        config: alloy_sol_types::abi::AbiDecoderConfig,
15882                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15883                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15884                                data,
15885                                config,
15886                            )
15887                            .map(LightClientV2MockCalls::_getVk)
15888                    }
15889                    _getVk
15890                },
15891                {
15892                    fn updateEpochStartBlock(
15893                        data: &[u8],
15894                        config: alloy_sol_types::abi::AbiDecoderConfig,
15895                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15896                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15897                                data,
15898                                config,
15899                            )
15900                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15901                    }
15902                    updateEpochStartBlock
15903                },
15904                {
15905                    fn newFinalizedState_0(
15906                        data: &[u8],
15907                        config: alloy_sol_types::abi::AbiDecoderConfig,
15908                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15909                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15910                                data,
15911                                config,
15912                            )
15913                            .map(LightClientV2MockCalls::newFinalizedState_0)
15914                    }
15915                    newFinalizedState_0
15916                },
15917                {
15918                    fn isEpochRoot(
15919                        data: &[u8],
15920                        config: alloy_sol_types::abi::AbiDecoderConfig,
15921                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15922                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15923                                data,
15924                                config,
15925                            )
15926                            .map(LightClientV2MockCalls::isEpochRoot)
15927                    }
15928                    isEpochRoot
15929                },
15930                {
15931                    fn setHotShotDownSince(
15932                        data: &[u8],
15933                        config: alloy_sol_types::abi::AbiDecoderConfig,
15934                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15935                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15936                                data,
15937                                config,
15938                            )
15939                            .map(LightClientV2MockCalls::setHotShotDownSince)
15940                    }
15941                    setHotShotDownSince
15942                },
15943                {
15944                    fn stateHistoryFirstIndex(
15945                        data: &[u8],
15946                        config: alloy_sol_types::abi::AbiDecoderConfig,
15947                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15948                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15949                                data,
15950                                config,
15951                            )
15952                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15953                    }
15954                    stateHistoryFirstIndex
15955                },
15956                {
15957                    fn isGtEpochRoot(
15958                        data: &[u8],
15959                        config: alloy_sol_types::abi::AbiDecoderConfig,
15960                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15961                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15962                                data,
15963                                config,
15964                            )
15965                            .map(LightClientV2MockCalls::isGtEpochRoot)
15966                    }
15967                    isGtEpochRoot
15968                },
15969                {
15970                    fn permissionedProver(
15971                        data: &[u8],
15972                        config: alloy_sol_types::abi::AbiDecoderConfig,
15973                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15974                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15975                                data,
15976                                config,
15977                            )
15978                            .map(LightClientV2MockCalls::permissionedProver)
15979                    }
15980                    permissionedProver
15981                },
15982                {
15983                    fn currentBlockNumber(
15984                        data: &[u8],
15985                        config: alloy_sol_types::abi::AbiDecoderConfig,
15986                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15987                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15988                                data,
15989                                config,
15990                            )
15991                            .map(LightClientV2MockCalls::currentBlockNumber)
15992                    }
15993                    currentBlockNumber
15994                },
15995                {
15996                    fn setBlocksPerEpoch(
15997                        data: &[u8],
15998                        config: alloy_sol_types::abi::AbiDecoderConfig,
15999                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16000                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16001                                data,
16002                                config,
16003                            )
16004                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
16005                    }
16006                    setBlocksPerEpoch
16007                },
16008                {
16009                    fn epochStartBlock(
16010                        data: &[u8],
16011                        config: alloy_sol_types::abi::AbiDecoderConfig,
16012                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16013                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16014                                data,
16015                                config,
16016                            )
16017                            .map(LightClientV2MockCalls::epochStartBlock)
16018                    }
16019                    epochStartBlock
16020                },
16021                {
16022                    fn genesisStakeTableState(
16023                        data: &[u8],
16024                        config: alloy_sol_types::abi::AbiDecoderConfig,
16025                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16026                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16027                                data,
16028                                config,
16029                            )
16030                            .map(LightClientV2MockCalls::genesisStakeTableState)
16031                    }
16032                    genesisStakeTableState
16033                },
16034                {
16035                    fn setStateHistoryRetentionPeriod(
16036                        data: &[u8],
16037                        config: alloy_sol_types::abi::AbiDecoderConfig,
16038                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16039                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16040                                data,
16041                                config,
16042                            )
16043                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
16044                    }
16045                    setStateHistoryRetentionPeriod
16046                },
16047                {
16048                    fn upgradeToAndCall(
16049                        data: &[u8],
16050                        config: alloy_sol_types::abi::AbiDecoderConfig,
16051                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16052                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16053                                data,
16054                                config,
16055                            )
16056                            .map(LightClientV2MockCalls::upgradeToAndCall)
16057                    }
16058                    upgradeToAndCall
16059                },
16060                {
16061                    fn proxiableUUID(
16062                        data: &[u8],
16063                        config: alloy_sol_types::abi::AbiDecoderConfig,
16064                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16065                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16066                                data,
16067                                config,
16068                            )
16069                            .map(LightClientV2MockCalls::proxiableUUID)
16070                    }
16071                    proxiableUUID
16072                },
16073                {
16074                    fn setVotingStakeTableState(
16075                        data: &[u8],
16076                        config: alloy_sol_types::abi::AbiDecoderConfig,
16077                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16078                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16079                                data,
16080                                config,
16081                            )
16082                            .map(LightClientV2MockCalls::setVotingStakeTableState)
16083                    }
16084                    setVotingStakeTableState
16085                },
16086                {
16087                    fn disablePermissionedProverMode(
16088                        data: &[u8],
16089                        config: alloy_sol_types::abi::AbiDecoderConfig,
16090                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16091                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16092                                data,
16093                                config,
16094                            )
16095                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
16096                    }
16097                    disablePermissionedProverMode
16098                },
16099                {
16100                    fn renounceOwnership(
16101                        data: &[u8],
16102                        config: alloy_sol_types::abi::AbiDecoderConfig,
16103                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16104                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16105                                data,
16106                                config,
16107                            )
16108                            .map(LightClientV2MockCalls::renounceOwnership)
16109                    }
16110                    renounceOwnership
16111                },
16112                {
16113                    fn newFinalizedState_1(
16114                        data: &[u8],
16115                        config: alloy_sol_types::abi::AbiDecoderConfig,
16116                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16117                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16118                                data,
16119                                config,
16120                            )
16121                            .map(LightClientV2MockCalls::newFinalizedState_1)
16122                    }
16123                    newFinalizedState_1
16124                },
16125                {
16126                    fn currentEpoch(
16127                        data: &[u8],
16128                        config: alloy_sol_types::abi::AbiDecoderConfig,
16129                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16130                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16131                                data,
16132                                config,
16133                            )
16134                            .map(LightClientV2MockCalls::currentEpoch)
16135                    }
16136                    currentEpoch
16137                },
16138                {
16139                    fn isPermissionedProverEnabled(
16140                        data: &[u8],
16141                        config: alloy_sol_types::abi::AbiDecoderConfig,
16142                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16143                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16144                                data,
16145                                config,
16146                            )
16147                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
16148                    }
16149                    isPermissionedProverEnabled
16150                },
16151                {
16152                    fn getHotShotCommitment(
16153                        data: &[u8],
16154                        config: alloy_sol_types::abi::AbiDecoderConfig,
16155                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16156                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16157                                data,
16158                                config,
16159                            )
16160                            .map(LightClientV2MockCalls::getHotShotCommitment)
16161                    }
16162                    getHotShotCommitment
16163                },
16164                {
16165                    fn owner(
16166                        data: &[u8],
16167                        config: alloy_sol_types::abi::AbiDecoderConfig,
16168                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16169                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16170                                data,
16171                                config,
16172                            )
16173                            .map(LightClientV2MockCalls::owner)
16174                    }
16175                    owner
16176                },
16177                {
16178                    fn epochFromBlockNumber(
16179                        data: &[u8],
16180                        config: alloy_sol_types::abi::AbiDecoderConfig,
16181                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16182                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16183                                data,
16184                                config,
16185                            )
16186                            .map(LightClientV2MockCalls::epochFromBlockNumber)
16187                    }
16188                    epochFromBlockNumber
16189                },
16190                {
16191                    fn setstateHistoryRetentionPeriod(
16192                        data: &[u8],
16193                        config: alloy_sol_types::abi::AbiDecoderConfig,
16194                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16195                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16196                                data,
16197                                config,
16198                            )
16199                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
16200                    }
16201                    setstateHistoryRetentionPeriod
16202                },
16203                {
16204                    fn initialize(
16205                        data: &[u8],
16206                        config: alloy_sol_types::abi::AbiDecoderConfig,
16207                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16208                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16209                                data,
16210                                config,
16211                            )
16212                            .map(LightClientV2MockCalls::initialize)
16213                    }
16214                    initialize
16215                },
16216                {
16217                    fn finalizedState(
16218                        data: &[u8],
16219                        config: alloy_sol_types::abi::AbiDecoderConfig,
16220                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16221                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16222                                data,
16223                                config,
16224                            )
16225                            .map(LightClientV2MockCalls::finalizedState)
16226                    }
16227                    finalizedState
16228                },
16229                {
16230                    fn UPGRADE_INTERFACE_VERSION(
16231                        data: &[u8],
16232                        config: alloy_sol_types::abi::AbiDecoderConfig,
16233                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16234                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16235                                data,
16236                                config,
16237                            )
16238                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
16239                    }
16240                    UPGRADE_INTERFACE_VERSION
16241                },
16242                {
16243                    fn initializeV2(
16244                        data: &[u8],
16245                        config: alloy_sol_types::abi::AbiDecoderConfig,
16246                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16247                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16248                                data,
16249                                config,
16250                            )
16251                            .map(LightClientV2MockCalls::initializeV2)
16252                    }
16253                    initializeV2
16254                },
16255                {
16256                    fn getFirstEpoch(
16257                        data: &[u8],
16258                        config: alloy_sol_types::abi::AbiDecoderConfig,
16259                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16260                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16261                                data,
16262                                config,
16263                            )
16264                            .map(LightClientV2MockCalls::getFirstEpoch)
16265                    }
16266                    getFirstEpoch
16267                },
16268                {
16269                    fn setFinalizedState(
16270                        data: &[u8],
16271                        config: alloy_sol_types::abi::AbiDecoderConfig,
16272                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16273                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16274                                data,
16275                                config,
16276                            )
16277                            .map(LightClientV2MockCalls::setFinalizedState)
16278                    }
16279                    setFinalizedState
16280                },
16281                {
16282                    fn stateHistoryRetentionPeriod(
16283                        data: &[u8],
16284                        config: alloy_sol_types::abi::AbiDecoderConfig,
16285                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16286                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16287                                data,
16288                                config,
16289                            )
16290                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
16291                    }
16292                    stateHistoryRetentionPeriod
16293                },
16294                {
16295                    fn setHotShotUp(
16296                        data: &[u8],
16297                        config: alloy_sol_types::abi::AbiDecoderConfig,
16298                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16299                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16300                                data,
16301                                config,
16302                            )
16303                            .map(LightClientV2MockCalls::setHotShotUp)
16304                    }
16305                    setHotShotUp
16306                },
16307                {
16308                    fn genesisState(
16309                        data: &[u8],
16310                        config: alloy_sol_types::abi::AbiDecoderConfig,
16311                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16312                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16313                                data,
16314                                config,
16315                            )
16316                            .map(LightClientV2MockCalls::genesisState)
16317                    }
16318                    genesisState
16319                },
16320                {
16321                    fn lagOverEscapeHatchThreshold(
16322                        data: &[u8],
16323                        config: alloy_sol_types::abi::AbiDecoderConfig,
16324                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16325                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16326                                data,
16327                                config,
16328                            )
16329                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
16330                    }
16331                    lagOverEscapeHatchThreshold
16332                },
16333                {
16334                    fn blocksPerEpoch(
16335                        data: &[u8],
16336                        config: alloy_sol_types::abi::AbiDecoderConfig,
16337                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16338                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16339                                data,
16340                                config,
16341                            )
16342                            .map(LightClientV2MockCalls::blocksPerEpoch)
16343                    }
16344                    blocksPerEpoch
16345                },
16346                {
16347                    fn transferOwnership(
16348                        data: &[u8],
16349                        config: alloy_sol_types::abi::AbiDecoderConfig,
16350                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16351                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16352                                data,
16353                                config,
16354                            )
16355                            .map(LightClientV2MockCalls::transferOwnership)
16356                    }
16357                    transferOwnership
16358                },
16359                {
16360                    fn setStateHistory(
16361                        data: &[u8],
16362                        config: alloy_sol_types::abi::AbiDecoderConfig,
16363                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16364                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16365                                data,
16366                                config,
16367                            )
16368                            .map(LightClientV2MockCalls::setStateHistory)
16369                    }
16370                    setStateHistory
16371                },
16372                {
16373                    fn getStateHistoryCount(
16374                        data: &[u8],
16375                        config: alloy_sol_types::abi::AbiDecoderConfig,
16376                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16377                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16378                                data,
16379                                config,
16380                            )
16381                            .map(LightClientV2MockCalls::getStateHistoryCount)
16382                    }
16383                    getStateHistoryCount
16384                },
16385            ];
16386            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16387                return Err(
16388                    alloy_sol_types::Error::unknown_selector(
16389                        <Self as alloy_sol_types::SolInterface>::NAME,
16390                        selector,
16391                    ),
16392                );
16393            };
16394            DECODE_SHIMS[idx](data, config)
16395        }
16396        #[inline]
16397        #[allow(non_snake_case)]
16398        fn abi_decode_raw_validate(
16399            selector: [u8; 4],
16400            data: &[u8],
16401        ) -> alloy_sol_types::Result<Self> {
16402            Self::abi_decode_raw_with_config(
16403                selector,
16404                data,
16405                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16406            )
16407        }
16408        #[inline]
16409        fn abi_encoded_size(&self) -> usize {
16410            match self {
16411                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16412                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
16413                        inner,
16414                    )
16415                }
16416                Self::_getVk(inner) => {
16417                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16418                }
16419                Self::blocksPerEpoch(inner) => {
16420                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16421                        inner,
16422                    )
16423                }
16424                Self::currentBlockNumber(inner) => {
16425                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16426                        inner,
16427                    )
16428                }
16429                Self::currentEpoch(inner) => {
16430                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16431                        inner,
16432                    )
16433                }
16434                Self::disablePermissionedProverMode(inner) => {
16435                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
16436                        inner,
16437                    )
16438                }
16439                Self::epochFromBlockNumber(inner) => {
16440                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16441                        inner,
16442                    )
16443                }
16444                Self::epochStartBlock(inner) => {
16445                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16446                        inner,
16447                    )
16448                }
16449                Self::finalizedState(inner) => {
16450                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16451                        inner,
16452                    )
16453                }
16454                Self::genesisStakeTableState(inner) => {
16455                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16456                        inner,
16457                    )
16458                }
16459                Self::genesisState(inner) => {
16460                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16461                        inner,
16462                    )
16463                }
16464                Self::getFirstEpoch(inner) => {
16465                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16466                        inner,
16467                    )
16468                }
16469                Self::getHotShotCommitment(inner) => {
16470                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
16471                        inner,
16472                    )
16473                }
16474                Self::getStateHistoryCount(inner) => {
16475                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
16476                        inner,
16477                    )
16478                }
16479                Self::getVersion(inner) => {
16480                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16481                }
16482                Self::initialize(inner) => {
16483                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16484                }
16485                Self::initializeV2(inner) => {
16486                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
16487                        inner,
16488                    )
16489                }
16490                Self::isEpochRoot(inner) => {
16491                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16492                        inner,
16493                    )
16494                }
16495                Self::isGtEpochRoot(inner) => {
16496                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16497                        inner,
16498                    )
16499                }
16500                Self::isPermissionedProverEnabled(inner) => {
16501                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
16502                        inner,
16503                    )
16504                }
16505                Self::lagOverEscapeHatchThreshold(inner) => {
16506                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
16507                        inner,
16508                    )
16509                }
16510                Self::newFinalizedState_0(inner) => {
16511                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
16512                        inner,
16513                    )
16514                }
16515                Self::newFinalizedState_1(inner) => {
16516                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
16517                        inner,
16518                    )
16519                }
16520                Self::owner(inner) => {
16521                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16522                }
16523                Self::permissionedProver(inner) => {
16524                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16525                        inner,
16526                    )
16527                }
16528                Self::proxiableUUID(inner) => {
16529                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
16530                        inner,
16531                    )
16532                }
16533                Self::renounceOwnership(inner) => {
16534                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16535                        inner,
16536                    )
16537                }
16538                Self::setBlocksPerEpoch(inner) => {
16539                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16540                        inner,
16541                    )
16542                }
16543                Self::setFinalizedState(inner) => {
16544                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16545                        inner,
16546                    )
16547                }
16548                Self::setHotShotDownSince(inner) => {
16549                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
16550                        inner,
16551                    )
16552                }
16553                Self::setHotShotUp(inner) => {
16554                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
16555                        inner,
16556                    )
16557                }
16558                Self::setPermissionedProver(inner) => {
16559                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16560                        inner,
16561                    )
16562                }
16563                Self::setStateHistory(inner) => {
16564                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
16565                        inner,
16566                    )
16567                }
16568                Self::setStateHistoryRetentionPeriod(inner) => {
16569                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16570                        inner,
16571                    )
16572                }
16573                Self::setVotingStakeTableState(inner) => {
16574                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16575                        inner,
16576                    )
16577                }
16578                Self::setstateHistoryRetentionPeriod(inner) => {
16579                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16580                        inner,
16581                    )
16582                }
16583                Self::stateHistoryCommitments(inner) => {
16584                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
16585                        inner,
16586                    )
16587                }
16588                Self::stateHistoryFirstIndex(inner) => {
16589                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
16590                        inner,
16591                    )
16592                }
16593                Self::stateHistoryRetentionPeriod(inner) => {
16594                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16595                        inner,
16596                    )
16597                }
16598                Self::transferOwnership(inner) => {
16599                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16600                        inner,
16601                    )
16602                }
16603                Self::updateEpochStartBlock(inner) => {
16604                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16605                        inner,
16606                    )
16607                }
16608                Self::upgradeToAndCall(inner) => {
16609                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
16610                        inner,
16611                    )
16612                }
16613                Self::votingStakeTableState(inner) => {
16614                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16615                        inner,
16616                    )
16617                }
16618            }
16619        }
16620        #[inline]
16621        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16622            match self {
16623                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16624                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
16625                        inner,
16626                        out,
16627                    )
16628                }
16629                Self::_getVk(inner) => {
16630                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16631                }
16632                Self::blocksPerEpoch(inner) => {
16633                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16634                        inner,
16635                        out,
16636                    )
16637                }
16638                Self::currentBlockNumber(inner) => {
16639                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16640                        inner,
16641                        out,
16642                    )
16643                }
16644                Self::currentEpoch(inner) => {
16645                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16646                        inner,
16647                        out,
16648                    )
16649                }
16650                Self::disablePermissionedProverMode(inner) => {
16651                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16652                        inner,
16653                        out,
16654                    )
16655                }
16656                Self::epochFromBlockNumber(inner) => {
16657                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16658                        inner,
16659                        out,
16660                    )
16661                }
16662                Self::epochStartBlock(inner) => {
16663                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16664                        inner,
16665                        out,
16666                    )
16667                }
16668                Self::finalizedState(inner) => {
16669                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16670                        inner,
16671                        out,
16672                    )
16673                }
16674                Self::genesisStakeTableState(inner) => {
16675                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16676                        inner,
16677                        out,
16678                    )
16679                }
16680                Self::genesisState(inner) => {
16681                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16682                        inner,
16683                        out,
16684                    )
16685                }
16686                Self::getFirstEpoch(inner) => {
16687                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16688                        inner,
16689                        out,
16690                    )
16691                }
16692                Self::getHotShotCommitment(inner) => {
16693                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
16694                        inner,
16695                        out,
16696                    )
16697                }
16698                Self::getStateHistoryCount(inner) => {
16699                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
16700                        inner,
16701                        out,
16702                    )
16703                }
16704                Self::getVersion(inner) => {
16705                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
16706                        inner,
16707                        out,
16708                    )
16709                }
16710                Self::initialize(inner) => {
16711                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16712                        inner,
16713                        out,
16714                    )
16715                }
16716                Self::initializeV2(inner) => {
16717                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
16718                        inner,
16719                        out,
16720                    )
16721                }
16722                Self::isEpochRoot(inner) => {
16723                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16724                        inner,
16725                        out,
16726                    )
16727                }
16728                Self::isGtEpochRoot(inner) => {
16729                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16730                        inner,
16731                        out,
16732                    )
16733                }
16734                Self::isPermissionedProverEnabled(inner) => {
16735                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
16736                        inner,
16737                        out,
16738                    )
16739                }
16740                Self::lagOverEscapeHatchThreshold(inner) => {
16741                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
16742                        inner,
16743                        out,
16744                    )
16745                }
16746                Self::newFinalizedState_0(inner) => {
16747                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
16748                        inner,
16749                        out,
16750                    )
16751                }
16752                Self::newFinalizedState_1(inner) => {
16753                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
16754                        inner,
16755                        out,
16756                    )
16757                }
16758                Self::owner(inner) => {
16759                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16760                }
16761                Self::permissionedProver(inner) => {
16762                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16763                        inner,
16764                        out,
16765                    )
16766                }
16767                Self::proxiableUUID(inner) => {
16768                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
16769                        inner,
16770                        out,
16771                    )
16772                }
16773                Self::renounceOwnership(inner) => {
16774                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16775                        inner,
16776                        out,
16777                    )
16778                }
16779                Self::setBlocksPerEpoch(inner) => {
16780                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16781                        inner,
16782                        out,
16783                    )
16784                }
16785                Self::setFinalizedState(inner) => {
16786                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16787                        inner,
16788                        out,
16789                    )
16790                }
16791                Self::setHotShotDownSince(inner) => {
16792                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
16793                        inner,
16794                        out,
16795                    )
16796                }
16797                Self::setHotShotUp(inner) => {
16798                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
16799                        inner,
16800                        out,
16801                    )
16802                }
16803                Self::setPermissionedProver(inner) => {
16804                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16805                        inner,
16806                        out,
16807                    )
16808                }
16809                Self::setStateHistory(inner) => {
16810                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
16811                        inner,
16812                        out,
16813                    )
16814                }
16815                Self::setStateHistoryRetentionPeriod(inner) => {
16816                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16817                        inner,
16818                        out,
16819                    )
16820                }
16821                Self::setVotingStakeTableState(inner) => {
16822                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16823                        inner,
16824                        out,
16825                    )
16826                }
16827                Self::setstateHistoryRetentionPeriod(inner) => {
16828                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16829                        inner,
16830                        out,
16831                    )
16832                }
16833                Self::stateHistoryCommitments(inner) => {
16834                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
16835                        inner,
16836                        out,
16837                    )
16838                }
16839                Self::stateHistoryFirstIndex(inner) => {
16840                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
16841                        inner,
16842                        out,
16843                    )
16844                }
16845                Self::stateHistoryRetentionPeriod(inner) => {
16846                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16847                        inner,
16848                        out,
16849                    )
16850                }
16851                Self::transferOwnership(inner) => {
16852                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16853                        inner,
16854                        out,
16855                    )
16856                }
16857                Self::updateEpochStartBlock(inner) => {
16858                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16859                        inner,
16860                        out,
16861                    )
16862                }
16863                Self::upgradeToAndCall(inner) => {
16864                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
16865                        inner,
16866                        out,
16867                    )
16868                }
16869                Self::votingStakeTableState(inner) => {
16870                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16871                        inner,
16872                        out,
16873                    )
16874                }
16875            }
16876        }
16877    }
16878    ///Container for all the [`LightClientV2Mock`](self) custom errors.
16879    #[derive(Clone)]
16880    #[derive(serde::Serialize, serde::Deserialize)]
16881    #[derive(Debug, PartialEq, Eq, Hash)]
16882    pub enum LightClientV2MockErrors {
16883        #[allow(missing_docs)]
16884        AddressEmptyCode(AddressEmptyCode),
16885        #[allow(missing_docs)]
16886        DeprecatedApi(DeprecatedApi),
16887        #[allow(missing_docs)]
16888        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
16889        #[allow(missing_docs)]
16890        ERC1967NonPayable(ERC1967NonPayable),
16891        #[allow(missing_docs)]
16892        FailedInnerCall(FailedInnerCall),
16893        #[allow(missing_docs)]
16894        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
16895        #[allow(missing_docs)]
16896        InvalidAddress(InvalidAddress),
16897        #[allow(missing_docs)]
16898        InvalidArgs(InvalidArgs),
16899        #[allow(missing_docs)]
16900        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
16901        #[allow(missing_docs)]
16902        InvalidInitialization(InvalidInitialization),
16903        #[allow(missing_docs)]
16904        InvalidMaxStateHistory(InvalidMaxStateHistory),
16905        #[allow(missing_docs)]
16906        InvalidProof(InvalidProof),
16907        #[allow(missing_docs)]
16908        InvalidScalar(InvalidScalar),
16909        #[allow(missing_docs)]
16910        MissingEpochRootUpdate(MissingEpochRootUpdate),
16911        #[allow(missing_docs)]
16912        NoChangeRequired(NoChangeRequired),
16913        #[allow(missing_docs)]
16914        NotInitializing(NotInitializing),
16915        #[allow(missing_docs)]
16916        OutdatedState(OutdatedState),
16917        #[allow(missing_docs)]
16918        OwnableInvalidOwner(OwnableInvalidOwner),
16919        #[allow(missing_docs)]
16920        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
16921        #[allow(missing_docs)]
16922        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
16923        #[allow(missing_docs)]
16924        ProverNotPermissioned(ProverNotPermissioned),
16925        #[allow(missing_docs)]
16926        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
16927        #[allow(missing_docs)]
16928        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
16929        #[allow(missing_docs)]
16930        WrongStakeTableUsed(WrongStakeTableUsed),
16931    }
16932    impl LightClientV2MockErrors {
16933        /// All the selectors of this enum.
16934        ///
16935        /// Note that the selectors might not be in the same order as the variants.
16936        /// No guarantees are made about the order of the selectors.
16937        ///
16938        /// Prefer using `SolInterface` methods instead.
16939        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16940            [5u8, 28u8, 70u8, 239u8],
16941            [5u8, 176u8, 92u8, 204u8],
16942            [8u8, 10u8, 232u8, 217u8],
16943            [9u8, 189u8, 227u8, 57u8],
16944            [17u8, 140u8, 218u8, 167u8],
16945            [20u8, 37u8, 234u8, 66u8],
16946            [30u8, 79u8, 189u8, 247u8],
16947            [47u8, 171u8, 146u8, 202u8],
16948            [76u8, 156u8, 140u8, 227u8],
16949            [78u8, 64u8, 92u8, 141u8],
16950            [81u8, 97u8, 128u8, 137u8],
16951            [97u8, 90u8, 146u8, 100u8],
16952            [153u8, 150u8, 179u8, 21u8],
16953            [161u8, 186u8, 7u8, 238u8],
16954            [163u8, 166u8, 71u8, 128u8],
16955            [168u8, 99u8, 174u8, 201u8],
16956            [170u8, 29u8, 73u8, 164u8],
16957            [176u8, 180u8, 56u8, 119u8],
16958            [179u8, 152u8, 151u8, 159u8],
16959            [215u8, 230u8, 188u8, 248u8],
16960            [224u8, 124u8, 141u8, 186u8],
16961            [230u8, 196u8, 36u8, 123u8],
16962            [244u8, 160u8, 238u8, 224u8],
16963            [249u8, 46u8, 232u8, 169u8],
16964        ];
16965        /// The names of the variants in the same order as `SELECTORS`.
16966        pub const VARIANT_NAMES: &'static [&'static str] = &[
16967            ::core::stringify!(OutdatedState),
16968            ::core::stringify!(InvalidScalar),
16969            ::core::stringify!(MissingEpochRootUpdate),
16970            ::core::stringify!(InvalidProof),
16971            ::core::stringify!(OwnableUnauthorizedAccount),
16972            ::core::stringify!(FailedInnerCall),
16973            ::core::stringify!(OwnableInvalidOwner),
16974            ::core::stringify!(OwnershipCannotBeRenounced),
16975            ::core::stringify!(ERC1967InvalidImplementation),
16976            ::core::stringify!(DeprecatedApi),
16977            ::core::stringify!(WrongStakeTableUsed),
16978            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
16979            ::core::stringify!(AddressEmptyCode),
16980            ::core::stringify!(InvalidArgs),
16981            ::core::stringify!(ProverNotPermissioned),
16982            ::core::stringify!(NoChangeRequired),
16983            ::core::stringify!(UUPSUnsupportedProxiableUUID),
16984            ::core::stringify!(InsufficientSnapshotHistory),
16985            ::core::stringify!(ERC1967NonPayable),
16986            ::core::stringify!(NotInitializing),
16987            ::core::stringify!(UUPSUnauthorizedCallContext),
16988            ::core::stringify!(InvalidAddress),
16989            ::core::stringify!(InvalidMaxStateHistory),
16990            ::core::stringify!(InvalidInitialization),
16991        ];
16992        /// The signatures in the same order as `SELECTORS`.
16993        pub const SIGNATURES: &'static [&'static str] = &[
16994            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
16995            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
16996            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
16997            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
16998            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
16999            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
17000            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
17001            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
17002            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
17003            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
17004            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
17005            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
17006            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
17007            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
17008            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
17009            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
17010            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
17011            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
17012            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
17013            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
17014            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
17015            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
17016            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
17017            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
17018        ];
17019        /// Returns the signature for the given selector, if known.
17020        #[inline]
17021        pub fn signature_by_selector(
17022            selector: [u8; 4usize],
17023        ) -> ::core::option::Option<&'static str> {
17024            match Self::SELECTORS.binary_search(&selector) {
17025                ::core::result::Result::Ok(idx) => {
17026                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17027                }
17028                ::core::result::Result::Err(_) => ::core::option::Option::None,
17029            }
17030        }
17031        /// Returns the enum variant name for the given selector, if known.
17032        #[inline]
17033        pub fn name_by_selector(
17034            selector: [u8; 4usize],
17035        ) -> ::core::option::Option<&'static str> {
17036            let sig = Self::signature_by_selector(selector)?;
17037            sig.split_once('(').map(|(name, _)| name)
17038        }
17039    }
17040    #[automatically_derived]
17041    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
17042        const NAME: &'static str = "LightClientV2MockErrors";
17043        const MIN_DATA_LENGTH: usize = 0usize;
17044        const COUNT: usize = 24usize;
17045        #[inline]
17046        fn selector(&self) -> [u8; 4] {
17047            match self {
17048                Self::AddressEmptyCode(_) => {
17049                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
17050                }
17051                Self::DeprecatedApi(_) => {
17052                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
17053                }
17054                Self::ERC1967InvalidImplementation(_) => {
17055                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
17056                }
17057                Self::ERC1967NonPayable(_) => {
17058                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
17059                }
17060                Self::FailedInnerCall(_) => {
17061                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
17062                }
17063                Self::InsufficientSnapshotHistory(_) => {
17064                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
17065                }
17066                Self::InvalidAddress(_) => {
17067                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
17068                }
17069                Self::InvalidArgs(_) => {
17070                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
17071                }
17072                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
17073                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
17074                }
17075                Self::InvalidInitialization(_) => {
17076                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
17077                }
17078                Self::InvalidMaxStateHistory(_) => {
17079                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
17080                }
17081                Self::InvalidProof(_) => {
17082                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
17083                }
17084                Self::InvalidScalar(_) => {
17085                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
17086                }
17087                Self::MissingEpochRootUpdate(_) => {
17088                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
17089                }
17090                Self::NoChangeRequired(_) => {
17091                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
17092                }
17093                Self::NotInitializing(_) => {
17094                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
17095                }
17096                Self::OutdatedState(_) => {
17097                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
17098                }
17099                Self::OwnableInvalidOwner(_) => {
17100                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
17101                }
17102                Self::OwnableUnauthorizedAccount(_) => {
17103                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
17104                }
17105                Self::OwnershipCannotBeRenounced(_) => {
17106                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
17107                }
17108                Self::ProverNotPermissioned(_) => {
17109                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
17110                }
17111                Self::UUPSUnauthorizedCallContext(_) => {
17112                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
17113                }
17114                Self::UUPSUnsupportedProxiableUUID(_) => {
17115                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
17116                }
17117                Self::WrongStakeTableUsed(_) => {
17118                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
17119                }
17120            }
17121        }
17122        #[inline]
17123        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
17124            Self::SELECTORS.get(i).copied()
17125        }
17126        #[inline]
17127        fn valid_selector(selector: [u8; 4]) -> bool {
17128            Self::SELECTORS.binary_search(&selector).is_ok()
17129        }
17130        #[inline]
17131        #[allow(non_snake_case)]
17132        fn abi_decode_raw(
17133            selector: [u8; 4],
17134            data: &[u8],
17135        ) -> alloy_sol_types::Result<Self> {
17136            Self::abi_decode_raw_with_config(
17137                selector,
17138                data,
17139                alloy_sol_types::abi::AbiDecoderConfig::default(),
17140            )
17141        }
17142        #[inline]
17143        #[allow(non_snake_case)]
17144        fn abi_decode_raw_with_config(
17145            selector: [u8; 4],
17146            data: &[u8],
17147            config: alloy_sol_types::abi::AbiDecoderConfig,
17148        ) -> alloy_sol_types::Result<Self> {
17149            static DECODE_SHIMS: &[fn(
17150                &[u8],
17151                alloy_sol_types::abi::AbiDecoderConfig,
17152            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
17153                {
17154                    fn OutdatedState(
17155                        data: &[u8],
17156                        config: alloy_sol_types::abi::AbiDecoderConfig,
17157                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17158                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17159                                data,
17160                                config,
17161                            )
17162                            .map(LightClientV2MockErrors::OutdatedState)
17163                    }
17164                    OutdatedState
17165                },
17166                {
17167                    fn InvalidScalar(
17168                        data: &[u8],
17169                        config: alloy_sol_types::abi::AbiDecoderConfig,
17170                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17171                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17172                                data,
17173                                config,
17174                            )
17175                            .map(LightClientV2MockErrors::InvalidScalar)
17176                    }
17177                    InvalidScalar
17178                },
17179                {
17180                    fn MissingEpochRootUpdate(
17181                        data: &[u8],
17182                        config: alloy_sol_types::abi::AbiDecoderConfig,
17183                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17184                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17185                                data,
17186                                config,
17187                            )
17188                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
17189                    }
17190                    MissingEpochRootUpdate
17191                },
17192                {
17193                    fn InvalidProof(
17194                        data: &[u8],
17195                        config: alloy_sol_types::abi::AbiDecoderConfig,
17196                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17197                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17198                                data,
17199                                config,
17200                            )
17201                            .map(LightClientV2MockErrors::InvalidProof)
17202                    }
17203                    InvalidProof
17204                },
17205                {
17206                    fn OwnableUnauthorizedAccount(
17207                        data: &[u8],
17208                        config: alloy_sol_types::abi::AbiDecoderConfig,
17209                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17210                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17211                                data,
17212                                config,
17213                            )
17214                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
17215                    }
17216                    OwnableUnauthorizedAccount
17217                },
17218                {
17219                    fn FailedInnerCall(
17220                        data: &[u8],
17221                        config: alloy_sol_types::abi::AbiDecoderConfig,
17222                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17223                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17224                                data,
17225                                config,
17226                            )
17227                            .map(LightClientV2MockErrors::FailedInnerCall)
17228                    }
17229                    FailedInnerCall
17230                },
17231                {
17232                    fn OwnableInvalidOwner(
17233                        data: &[u8],
17234                        config: alloy_sol_types::abi::AbiDecoderConfig,
17235                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17236                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17237                                data,
17238                                config,
17239                            )
17240                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
17241                    }
17242                    OwnableInvalidOwner
17243                },
17244                {
17245                    fn OwnershipCannotBeRenounced(
17246                        data: &[u8],
17247                        config: alloy_sol_types::abi::AbiDecoderConfig,
17248                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17249                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17250                                data,
17251                                config,
17252                            )
17253                            .map(LightClientV2MockErrors::OwnershipCannotBeRenounced)
17254                    }
17255                    OwnershipCannotBeRenounced
17256                },
17257                {
17258                    fn ERC1967InvalidImplementation(
17259                        data: &[u8],
17260                        config: alloy_sol_types::abi::AbiDecoderConfig,
17261                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17262                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17263                                data,
17264                                config,
17265                            )
17266                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
17267                    }
17268                    ERC1967InvalidImplementation
17269                },
17270                {
17271                    fn DeprecatedApi(
17272                        data: &[u8],
17273                        config: alloy_sol_types::abi::AbiDecoderConfig,
17274                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17275                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17276                                data,
17277                                config,
17278                            )
17279                            .map(LightClientV2MockErrors::DeprecatedApi)
17280                    }
17281                    DeprecatedApi
17282                },
17283                {
17284                    fn WrongStakeTableUsed(
17285                        data: &[u8],
17286                        config: alloy_sol_types::abi::AbiDecoderConfig,
17287                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17288                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17289                                data,
17290                                config,
17291                            )
17292                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
17293                    }
17294                    WrongStakeTableUsed
17295                },
17296                {
17297                    fn InvalidHotShotBlockForCommitmentCheck(
17298                        data: &[u8],
17299                        config: alloy_sol_types::abi::AbiDecoderConfig,
17300                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17301                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17302                                data,
17303                                config,
17304                            )
17305                            .map(
17306                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
17307                            )
17308                    }
17309                    InvalidHotShotBlockForCommitmentCheck
17310                },
17311                {
17312                    fn AddressEmptyCode(
17313                        data: &[u8],
17314                        config: alloy_sol_types::abi::AbiDecoderConfig,
17315                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17316                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17317                                data,
17318                                config,
17319                            )
17320                            .map(LightClientV2MockErrors::AddressEmptyCode)
17321                    }
17322                    AddressEmptyCode
17323                },
17324                {
17325                    fn InvalidArgs(
17326                        data: &[u8],
17327                        config: alloy_sol_types::abi::AbiDecoderConfig,
17328                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17329                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17330                                data,
17331                                config,
17332                            )
17333                            .map(LightClientV2MockErrors::InvalidArgs)
17334                    }
17335                    InvalidArgs
17336                },
17337                {
17338                    fn ProverNotPermissioned(
17339                        data: &[u8],
17340                        config: alloy_sol_types::abi::AbiDecoderConfig,
17341                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17342                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17343                                data,
17344                                config,
17345                            )
17346                            .map(LightClientV2MockErrors::ProverNotPermissioned)
17347                    }
17348                    ProverNotPermissioned
17349                },
17350                {
17351                    fn NoChangeRequired(
17352                        data: &[u8],
17353                        config: alloy_sol_types::abi::AbiDecoderConfig,
17354                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17355                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17356                                data,
17357                                config,
17358                            )
17359                            .map(LightClientV2MockErrors::NoChangeRequired)
17360                    }
17361                    NoChangeRequired
17362                },
17363                {
17364                    fn UUPSUnsupportedProxiableUUID(
17365                        data: &[u8],
17366                        config: alloy_sol_types::abi::AbiDecoderConfig,
17367                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17368                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17369                                data,
17370                                config,
17371                            )
17372                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
17373                    }
17374                    UUPSUnsupportedProxiableUUID
17375                },
17376                {
17377                    fn InsufficientSnapshotHistory(
17378                        data: &[u8],
17379                        config: alloy_sol_types::abi::AbiDecoderConfig,
17380                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17381                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17382                                data,
17383                                config,
17384                            )
17385                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
17386                    }
17387                    InsufficientSnapshotHistory
17388                },
17389                {
17390                    fn ERC1967NonPayable(
17391                        data: &[u8],
17392                        config: alloy_sol_types::abi::AbiDecoderConfig,
17393                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17394                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17395                                data,
17396                                config,
17397                            )
17398                            .map(LightClientV2MockErrors::ERC1967NonPayable)
17399                    }
17400                    ERC1967NonPayable
17401                },
17402                {
17403                    fn NotInitializing(
17404                        data: &[u8],
17405                        config: alloy_sol_types::abi::AbiDecoderConfig,
17406                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17407                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17408                                data,
17409                                config,
17410                            )
17411                            .map(LightClientV2MockErrors::NotInitializing)
17412                    }
17413                    NotInitializing
17414                },
17415                {
17416                    fn UUPSUnauthorizedCallContext(
17417                        data: &[u8],
17418                        config: alloy_sol_types::abi::AbiDecoderConfig,
17419                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17420                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17421                                data,
17422                                config,
17423                            )
17424                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
17425                    }
17426                    UUPSUnauthorizedCallContext
17427                },
17428                {
17429                    fn InvalidAddress(
17430                        data: &[u8],
17431                        config: alloy_sol_types::abi::AbiDecoderConfig,
17432                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17433                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17434                                data,
17435                                config,
17436                            )
17437                            .map(LightClientV2MockErrors::InvalidAddress)
17438                    }
17439                    InvalidAddress
17440                },
17441                {
17442                    fn InvalidMaxStateHistory(
17443                        data: &[u8],
17444                        config: alloy_sol_types::abi::AbiDecoderConfig,
17445                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17446                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17447                                data,
17448                                config,
17449                            )
17450                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
17451                    }
17452                    InvalidMaxStateHistory
17453                },
17454                {
17455                    fn InvalidInitialization(
17456                        data: &[u8],
17457                        config: alloy_sol_types::abi::AbiDecoderConfig,
17458                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17459                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
17460                                data,
17461                                config,
17462                            )
17463                            .map(LightClientV2MockErrors::InvalidInitialization)
17464                    }
17465                    InvalidInitialization
17466                },
17467            ];
17468            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17469                return Err(
17470                    alloy_sol_types::Error::unknown_selector(
17471                        <Self as alloy_sol_types::SolInterface>::NAME,
17472                        selector,
17473                    ),
17474                );
17475            };
17476            DECODE_SHIMS[idx](data, config)
17477        }
17478        #[inline]
17479        #[allow(non_snake_case)]
17480        fn abi_decode_raw_validate(
17481            selector: [u8; 4],
17482            data: &[u8],
17483        ) -> alloy_sol_types::Result<Self> {
17484            Self::abi_decode_raw_with_config(
17485                selector,
17486                data,
17487                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17488            )
17489        }
17490        #[inline]
17491        fn abi_encoded_size(&self) -> usize {
17492            match self {
17493                Self::AddressEmptyCode(inner) => {
17494                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
17495                        inner,
17496                    )
17497                }
17498                Self::DeprecatedApi(inner) => {
17499                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
17500                }
17501                Self::ERC1967InvalidImplementation(inner) => {
17502                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
17503                        inner,
17504                    )
17505                }
17506                Self::ERC1967NonPayable(inner) => {
17507                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
17508                        inner,
17509                    )
17510                }
17511                Self::FailedInnerCall(inner) => {
17512                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
17513                        inner,
17514                    )
17515                }
17516                Self::InsufficientSnapshotHistory(inner) => {
17517                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
17518                        inner,
17519                    )
17520                }
17521                Self::InvalidAddress(inner) => {
17522                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
17523                        inner,
17524                    )
17525                }
17526                Self::InvalidArgs(inner) => {
17527                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
17528                }
17529                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17530                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
17531                        inner,
17532                    )
17533                }
17534                Self::InvalidInitialization(inner) => {
17535                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
17536                        inner,
17537                    )
17538                }
17539                Self::InvalidMaxStateHistory(inner) => {
17540                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
17541                        inner,
17542                    )
17543                }
17544                Self::InvalidProof(inner) => {
17545                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
17546                }
17547                Self::InvalidScalar(inner) => {
17548                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
17549                }
17550                Self::MissingEpochRootUpdate(inner) => {
17551                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
17552                        inner,
17553                    )
17554                }
17555                Self::NoChangeRequired(inner) => {
17556                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
17557                        inner,
17558                    )
17559                }
17560                Self::NotInitializing(inner) => {
17561                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
17562                        inner,
17563                    )
17564                }
17565                Self::OutdatedState(inner) => {
17566                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
17567                }
17568                Self::OwnableInvalidOwner(inner) => {
17569                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
17570                        inner,
17571                    )
17572                }
17573                Self::OwnableUnauthorizedAccount(inner) => {
17574                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
17575                        inner,
17576                    )
17577                }
17578                Self::OwnershipCannotBeRenounced(inner) => {
17579                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
17580                        inner,
17581                    )
17582                }
17583                Self::ProverNotPermissioned(inner) => {
17584                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
17585                        inner,
17586                    )
17587                }
17588                Self::UUPSUnauthorizedCallContext(inner) => {
17589                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
17590                        inner,
17591                    )
17592                }
17593                Self::UUPSUnsupportedProxiableUUID(inner) => {
17594                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
17595                        inner,
17596                    )
17597                }
17598                Self::WrongStakeTableUsed(inner) => {
17599                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
17600                        inner,
17601                    )
17602                }
17603            }
17604        }
17605        #[inline]
17606        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17607            match self {
17608                Self::AddressEmptyCode(inner) => {
17609                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
17610                        inner,
17611                        out,
17612                    )
17613                }
17614                Self::DeprecatedApi(inner) => {
17615                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
17616                        inner,
17617                        out,
17618                    )
17619                }
17620                Self::ERC1967InvalidImplementation(inner) => {
17621                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
17622                        inner,
17623                        out,
17624                    )
17625                }
17626                Self::ERC1967NonPayable(inner) => {
17627                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
17628                        inner,
17629                        out,
17630                    )
17631                }
17632                Self::FailedInnerCall(inner) => {
17633                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
17634                        inner,
17635                        out,
17636                    )
17637                }
17638                Self::InsufficientSnapshotHistory(inner) => {
17639                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
17640                        inner,
17641                        out,
17642                    )
17643                }
17644                Self::InvalidAddress(inner) => {
17645                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
17646                        inner,
17647                        out,
17648                    )
17649                }
17650                Self::InvalidArgs(inner) => {
17651                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
17652                        inner,
17653                        out,
17654                    )
17655                }
17656                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17657                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
17658                        inner,
17659                        out,
17660                    )
17661                }
17662                Self::InvalidInitialization(inner) => {
17663                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
17664                        inner,
17665                        out,
17666                    )
17667                }
17668                Self::InvalidMaxStateHistory(inner) => {
17669                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
17670                        inner,
17671                        out,
17672                    )
17673                }
17674                Self::InvalidProof(inner) => {
17675                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
17676                        inner,
17677                        out,
17678                    )
17679                }
17680                Self::InvalidScalar(inner) => {
17681                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
17682                        inner,
17683                        out,
17684                    )
17685                }
17686                Self::MissingEpochRootUpdate(inner) => {
17687                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
17688                        inner,
17689                        out,
17690                    )
17691                }
17692                Self::NoChangeRequired(inner) => {
17693                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
17694                        inner,
17695                        out,
17696                    )
17697                }
17698                Self::NotInitializing(inner) => {
17699                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
17700                        inner,
17701                        out,
17702                    )
17703                }
17704                Self::OutdatedState(inner) => {
17705                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
17706                        inner,
17707                        out,
17708                    )
17709                }
17710                Self::OwnableInvalidOwner(inner) => {
17711                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
17712                        inner,
17713                        out,
17714                    )
17715                }
17716                Self::OwnableUnauthorizedAccount(inner) => {
17717                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
17718                        inner,
17719                        out,
17720                    )
17721                }
17722                Self::OwnershipCannotBeRenounced(inner) => {
17723                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
17724                        inner,
17725                        out,
17726                    )
17727                }
17728                Self::ProverNotPermissioned(inner) => {
17729                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
17730                        inner,
17731                        out,
17732                    )
17733                }
17734                Self::UUPSUnauthorizedCallContext(inner) => {
17735                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
17736                        inner,
17737                        out,
17738                    )
17739                }
17740                Self::UUPSUnsupportedProxiableUUID(inner) => {
17741                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
17742                        inner,
17743                        out,
17744                    )
17745                }
17746                Self::WrongStakeTableUsed(inner) => {
17747                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
17748                        inner,
17749                        out,
17750                    )
17751                }
17752            }
17753        }
17754    }
17755    #[automatically_derived]
17756    impl LightClientV2MockErrors {
17757        /**Creates a [`AddressEmptyCode`] error.
17758
17759```solidity
17760error AddressEmptyCode(address)
17761```*/
17762        #[inline]
17763        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
17764            Self::AddressEmptyCode(AddressEmptyCode { target: target })
17765        }
17766        /**Creates a [`DeprecatedApi`] error.
17767
17768```solidity
17769error DeprecatedApi()
17770```*/
17771        #[inline]
17772        pub fn deprecated_api() -> Self {
17773            Self::DeprecatedApi(DeprecatedApi)
17774        }
17775        /**Creates a [`ERC1967InvalidImplementation`] error.
17776
17777```solidity
17778error ERC1967InvalidImplementation(address)
17779```*/
17780        #[inline]
17781        pub fn erc_1967_invalid_implementation(
17782            implementation: alloy::sol_types::private::Address,
17783        ) -> Self {
17784            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
17785                implementation: implementation,
17786            })
17787        }
17788        /**Creates a [`ERC1967NonPayable`] error.
17789
17790```solidity
17791error ERC1967NonPayable()
17792```*/
17793        #[inline]
17794        pub fn erc_1967_non_payable() -> Self {
17795            Self::ERC1967NonPayable(ERC1967NonPayable)
17796        }
17797        /**Creates a [`FailedInnerCall`] error.
17798
17799```solidity
17800error FailedInnerCall()
17801```*/
17802        #[inline]
17803        pub fn failed_inner_call() -> Self {
17804            Self::FailedInnerCall(FailedInnerCall)
17805        }
17806        /**Creates a [`InsufficientSnapshotHistory`] error.
17807
17808```solidity
17809error InsufficientSnapshotHistory()
17810```*/
17811        #[inline]
17812        pub fn insufficient_snapshot_history() -> Self {
17813            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
17814        }
17815        /**Creates a [`InvalidAddress`] error.
17816
17817```solidity
17818error InvalidAddress()
17819```*/
17820        #[inline]
17821        pub fn invalid_address() -> Self {
17822            Self::InvalidAddress(InvalidAddress)
17823        }
17824        /**Creates a [`InvalidArgs`] error.
17825
17826```solidity
17827error InvalidArgs()
17828```*/
17829        #[inline]
17830        pub fn invalid_args() -> Self {
17831            Self::InvalidArgs(InvalidArgs)
17832        }
17833        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
17834
17835```solidity
17836error InvalidHotShotBlockForCommitmentCheck()
17837```*/
17838        #[inline]
17839        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
17840            Self::InvalidHotShotBlockForCommitmentCheck(
17841                InvalidHotShotBlockForCommitmentCheck,
17842            )
17843        }
17844        /**Creates a [`InvalidInitialization`] error.
17845
17846```solidity
17847error InvalidInitialization()
17848```*/
17849        #[inline]
17850        pub fn invalid_initialization() -> Self {
17851            Self::InvalidInitialization(InvalidInitialization)
17852        }
17853        /**Creates a [`InvalidMaxStateHistory`] error.
17854
17855```solidity
17856error InvalidMaxStateHistory()
17857```*/
17858        #[inline]
17859        pub fn invalid_max_state_history() -> Self {
17860            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
17861        }
17862        /**Creates a [`InvalidProof`] error.
17863
17864```solidity
17865error InvalidProof()
17866```*/
17867        #[inline]
17868        pub fn invalid_proof() -> Self {
17869            Self::InvalidProof(InvalidProof)
17870        }
17871        /**Creates a [`InvalidScalar`] error.
17872
17873```solidity
17874error InvalidScalar()
17875```*/
17876        #[inline]
17877        pub fn invalid_scalar() -> Self {
17878            Self::InvalidScalar(InvalidScalar)
17879        }
17880        /**Creates a [`MissingEpochRootUpdate`] error.
17881
17882```solidity
17883error MissingEpochRootUpdate()
17884```*/
17885        #[inline]
17886        pub fn missing_epoch_root_update() -> Self {
17887            Self::MissingEpochRootUpdate(MissingEpochRootUpdate)
17888        }
17889        /**Creates a [`NoChangeRequired`] error.
17890
17891```solidity
17892error NoChangeRequired()
17893```*/
17894        #[inline]
17895        pub fn no_change_required() -> Self {
17896            Self::NoChangeRequired(NoChangeRequired)
17897        }
17898        /**Creates a [`NotInitializing`] error.
17899
17900```solidity
17901error NotInitializing()
17902```*/
17903        #[inline]
17904        pub fn not_initializing() -> Self {
17905            Self::NotInitializing(NotInitializing)
17906        }
17907        /**Creates a [`OutdatedState`] error.
17908
17909```solidity
17910error OutdatedState()
17911```*/
17912        #[inline]
17913        pub fn outdated_state() -> Self {
17914            Self::OutdatedState(OutdatedState)
17915        }
17916        /**Creates a [`OwnableInvalidOwner`] error.
17917
17918```solidity
17919error OwnableInvalidOwner(address)
17920```*/
17921        #[inline]
17922        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
17923            Self::OwnableInvalidOwner(OwnableInvalidOwner {
17924                owner: owner,
17925            })
17926        }
17927        /**Creates a [`OwnableUnauthorizedAccount`] error.
17928
17929```solidity
17930error OwnableUnauthorizedAccount(address)
17931```*/
17932        #[inline]
17933        pub fn ownable_unauthorized_account(
17934            account: alloy::sol_types::private::Address,
17935        ) -> Self {
17936            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
17937                account: account,
17938            })
17939        }
17940        /**Creates a [`OwnershipCannotBeRenounced`] error.
17941
17942```solidity
17943error OwnershipCannotBeRenounced()
17944```*/
17945        #[inline]
17946        pub fn ownership_cannot_be_renounced() -> Self {
17947            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
17948        }
17949        /**Creates a [`ProverNotPermissioned`] error.
17950
17951```solidity
17952error ProverNotPermissioned()
17953```*/
17954        #[inline]
17955        pub fn prover_not_permissioned() -> Self {
17956            Self::ProverNotPermissioned(ProverNotPermissioned)
17957        }
17958        /**Creates a [`UUPSUnauthorizedCallContext`] error.
17959
17960```solidity
17961error UUPSUnauthorizedCallContext()
17962```*/
17963        #[inline]
17964        pub fn uups_unauthorized_call_context() -> Self {
17965            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
17966        }
17967        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
17968
17969```solidity
17970error UUPSUnsupportedProxiableUUID(bytes32)
17971```*/
17972        #[inline]
17973        pub fn uups_unsupported_proxiable_uuid(
17974            slot: alloy::sol_types::private::FixedBytes<32>,
17975        ) -> Self {
17976            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
17977                slot: slot,
17978            })
17979        }
17980        /**Creates a [`WrongStakeTableUsed`] error.
17981
17982```solidity
17983error WrongStakeTableUsed()
17984```*/
17985        #[inline]
17986        pub fn wrong_stake_table_used() -> Self {
17987            Self::WrongStakeTableUsed(WrongStakeTableUsed)
17988        }
17989    }
17990    ///Container for all the [`LightClientV2Mock`](self) events.
17991    #[derive(Clone)]
17992    #[derive(serde::Serialize, serde::Deserialize)]
17993    #[derive(Debug, PartialEq, Eq, Hash)]
17994    pub enum LightClientV2MockEvents {
17995        #[allow(missing_docs)]
17996        Initialized(Initialized),
17997        #[allow(missing_docs)]
17998        NewEpoch(NewEpoch),
17999        #[allow(missing_docs)]
18000        NewState(NewState),
18001        #[allow(missing_docs)]
18002        OwnershipTransferred(OwnershipTransferred),
18003        #[allow(missing_docs)]
18004        PermissionedProverNotRequired(PermissionedProverNotRequired),
18005        #[allow(missing_docs)]
18006        PermissionedProverRequired(PermissionedProverRequired),
18007        #[allow(missing_docs)]
18008        Upgrade(Upgrade),
18009        #[allow(missing_docs)]
18010        Upgraded(Upgraded),
18011    }
18012    impl LightClientV2MockEvents {
18013        /// All the selectors of this enum.
18014        ///
18015        /// Note that the selectors might not be in the same order as the variants.
18016        /// No guarantees are made about the order of the selectors.
18017        ///
18018        /// Prefer using `SolInterface` methods instead.
18019        pub const SELECTORS: &'static [[u8; 32usize]] = &[
18020            [
18021                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
18022                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
18023                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
18024            ],
18025            [
18026                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
18027                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
18028                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
18029            ],
18030            [
18031                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
18032                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
18033                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
18034            ],
18035            [
18036                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
18037                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
18038                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
18039            ],
18040            [
18041                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
18042                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
18043                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
18044            ],
18045            [
18046                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
18047                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
18048                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
18049            ],
18050            [
18051                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
18052                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
18053                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
18054            ],
18055            [
18056                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
18057                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
18058                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
18059            ],
18060        ];
18061        /// The names of the variants in the same order as `SELECTORS`.
18062        pub const VARIANT_NAMES: &'static [&'static str] = &[
18063            ::core::stringify!(NewEpoch),
18064            ::core::stringify!(PermissionedProverRequired),
18065            ::core::stringify!(OwnershipTransferred),
18066            ::core::stringify!(PermissionedProverNotRequired),
18067            ::core::stringify!(NewState),
18068            ::core::stringify!(Upgraded),
18069            ::core::stringify!(Initialized),
18070            ::core::stringify!(Upgrade),
18071        ];
18072        /// The signatures in the same order as `SELECTORS`.
18073        pub const SIGNATURES: &'static [&'static str] = &[
18074            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
18075            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
18076            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
18077            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
18078            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
18079            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
18080            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
18081            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
18082        ];
18083        /// Returns the signature for the given selector, if known.
18084        #[inline]
18085        pub fn signature_by_selector(
18086            selector: [u8; 32usize],
18087        ) -> ::core::option::Option<&'static str> {
18088            match Self::SELECTORS.binary_search(&selector) {
18089                ::core::result::Result::Ok(idx) => {
18090                    ::core::option::Option::Some(Self::SIGNATURES[idx])
18091                }
18092                ::core::result::Result::Err(_) => ::core::option::Option::None,
18093            }
18094        }
18095        /// Returns the enum variant name for the given selector, if known.
18096        #[inline]
18097        pub fn name_by_selector(
18098            selector: [u8; 32usize],
18099        ) -> ::core::option::Option<&'static str> {
18100            let sig = Self::signature_by_selector(selector)?;
18101            sig.split_once('(').map(|(name, _)| name)
18102        }
18103    }
18104    #[automatically_derived]
18105    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
18106        const NAME: &'static str = "LightClientV2MockEvents";
18107        const COUNT: usize = 8usize;
18108        fn decode_raw_log(
18109            topics: &[alloy_sol_types::Word],
18110            data: &[u8],
18111        ) -> alloy_sol_types::Result<Self> {
18112            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
18113                topics,
18114                data,
18115                alloy_sol_types::abi::AbiDecoderConfig::default(),
18116            )
18117        }
18118        fn decode_raw_log_with_config(
18119            topics: &[alloy_sol_types::Word],
18120            data: &[u8],
18121            config: alloy_sol_types::abi::AbiDecoderConfig,
18122        ) -> alloy_sol_types::Result<Self> {
18123            match topics.first().copied() {
18124                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18125                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18126                            topics,
18127                            data,
18128                            config,
18129                        )
18130                        .map(Self::Initialized)
18131                }
18132                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18133                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18134                            topics,
18135                            data,
18136                            config,
18137                        )
18138                        .map(Self::NewEpoch)
18139                }
18140                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18141                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18142                            topics,
18143                            data,
18144                            config,
18145                        )
18146                        .map(Self::NewState)
18147                }
18148                Some(
18149                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18150                ) => {
18151                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18152                            topics,
18153                            data,
18154                            config,
18155                        )
18156                        .map(Self::OwnershipTransferred)
18157                }
18158                Some(
18159                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18160                ) => {
18161                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18162                            topics,
18163                            data,
18164                            config,
18165                        )
18166                        .map(Self::PermissionedProverNotRequired)
18167                }
18168                Some(
18169                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
18170                ) => {
18171                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18172                            topics,
18173                            data,
18174                            config,
18175                        )
18176                        .map(Self::PermissionedProverRequired)
18177                }
18178                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18179                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18180                            topics,
18181                            data,
18182                            config,
18183                        )
18184                        .map(Self::Upgrade)
18185                }
18186                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
18187                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
18188                            topics,
18189                            data,
18190                            config,
18191                        )
18192                        .map(Self::Upgraded)
18193                }
18194                _ => {
18195                    if topics
18196                        .len()
18197                        .checked_mul(alloy_sol_types::Word::len_bytes())
18198                        .and_then(|len| len.checked_add(data.len()))
18199                        .is_none_or(|len| len > config.get_memory_limit())
18200                    {
18201                        return alloy_sol_types::private::Err(
18202                            alloy_sol_types::Error::MemoryLimitExceeded(
18203                                config.get_memory_limit(),
18204                            ),
18205                        );
18206                    }
18207                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
18208                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
18209                        log: alloy_sol_types::private::Box::new(
18210                            alloy_sol_types::private::LogData::new_unchecked(
18211                                topics.to_vec(),
18212                                data.to_vec().into(),
18213                            ),
18214                        ),
18215                    })
18216                }
18217            }
18218        }
18219    }
18220    #[automatically_derived]
18221    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
18222        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
18223            match self {
18224                Self::Initialized(inner) => {
18225                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18226                }
18227                Self::NewEpoch(inner) => {
18228                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18229                }
18230                Self::NewState(inner) => {
18231                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18232                }
18233                Self::OwnershipTransferred(inner) => {
18234                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18235                }
18236                Self::PermissionedProverNotRequired(inner) => {
18237                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18238                }
18239                Self::PermissionedProverRequired(inner) => {
18240                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18241                }
18242                Self::Upgrade(inner) => {
18243                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18244                }
18245                Self::Upgraded(inner) => {
18246                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
18247                }
18248            }
18249        }
18250        fn into_log_data(self) -> alloy_sol_types::private::LogData {
18251            match self {
18252                Self::Initialized(inner) => {
18253                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18254                }
18255                Self::NewEpoch(inner) => {
18256                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18257                }
18258                Self::NewState(inner) => {
18259                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18260                }
18261                Self::OwnershipTransferred(inner) => {
18262                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18263                }
18264                Self::PermissionedProverNotRequired(inner) => {
18265                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18266                }
18267                Self::PermissionedProverRequired(inner) => {
18268                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18269                }
18270                Self::Upgrade(inner) => {
18271                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18272                }
18273                Self::Upgraded(inner) => {
18274                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
18275                }
18276            }
18277        }
18278    }
18279    #[automatically_derived]
18280    impl LightClientV2MockEvents {
18281        /**Creates a [`Initialized`] event.
18282
18283```solidity
18284event Initialized(uint64)
18285```*/
18286        #[inline]
18287        pub fn initialized(version: u64) -> Self {
18288            Self::Initialized(Initialized { version: version })
18289        }
18290        /**Creates a [`NewEpoch`] event.
18291
18292```solidity
18293event NewEpoch(uint64)
18294```*/
18295        #[inline]
18296        pub fn new_epoch(epoch: u64) -> Self {
18297            Self::NewEpoch(NewEpoch { epoch: epoch })
18298        }
18299        /**Creates a [`NewState`] event.
18300
18301```solidity
18302event NewState(uint64,uint64,uint256)
18303```*/
18304        #[inline]
18305        pub fn new_state(
18306            view_num: u64,
18307            block_height: u64,
18308            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
18309        ) -> Self {
18310            Self::NewState(NewState {
18311                viewNum: view_num,
18312                blockHeight: block_height,
18313                blockCommRoot: block_comm_root,
18314            })
18315        }
18316        /**Creates a [`OwnershipTransferred`] event.
18317
18318```solidity
18319event OwnershipTransferred(address,address)
18320```*/
18321        #[inline]
18322        pub fn ownership_transferred(
18323            previous_owner: alloy::sol_types::private::Address,
18324            new_owner: alloy::sol_types::private::Address,
18325        ) -> Self {
18326            Self::OwnershipTransferred(OwnershipTransferred {
18327                previousOwner: previous_owner,
18328                newOwner: new_owner,
18329            })
18330        }
18331        /**Creates a [`PermissionedProverNotRequired`] event.
18332
18333```solidity
18334event PermissionedProverNotRequired()
18335```*/
18336        #[inline]
18337        pub fn permissioned_prover_not_required() -> Self {
18338            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
18339        }
18340        /**Creates a [`PermissionedProverRequired`] event.
18341
18342```solidity
18343event PermissionedProverRequired(address)
18344```*/
18345        #[inline]
18346        pub fn permissioned_prover_required(
18347            permissioned_prover: alloy::sol_types::private::Address,
18348        ) -> Self {
18349            Self::PermissionedProverRequired(PermissionedProverRequired {
18350                permissionedProver: permissioned_prover,
18351            })
18352        }
18353        /**Creates a [`Upgrade`] event.
18354
18355```solidity
18356event Upgrade(address)
18357```*/
18358        #[inline]
18359        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
18360            Self::Upgrade(Upgrade {
18361                implementation: implementation,
18362            })
18363        }
18364        /**Creates a [`Upgraded`] event.
18365
18366```solidity
18367event Upgraded(address)
18368```*/
18369        #[inline]
18370        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
18371            Self::Upgraded(Upgraded {
18372                implementation: implementation,
18373            })
18374        }
18375    }
18376    use alloy::contract as alloy_contract;
18377    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
18378
18379See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
18380    #[inline]
18381    pub const fn new<
18382        P: alloy_contract::private::Provider<N>,
18383        N: alloy_contract::private::Network,
18384    >(
18385        address: alloy_sol_types::private::Address,
18386        __provider: P,
18387    ) -> LightClientV2MockInstance<P, N> {
18388        LightClientV2MockInstance::<P, N>::new(address, __provider)
18389    }
18390    /**Deploys this contract using the given `provider` and constructor arguments, if any.
18391
18392Returns a new instance of the contract, if the deployment was successful.
18393
18394For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18395    #[inline]
18396    pub fn deploy<
18397        P: alloy_contract::private::Provider<N>,
18398        N: alloy_contract::private::Network,
18399    >(
18400        __provider: P,
18401    ) -> impl ::core::future::Future<
18402        Output = alloy_contract::Result<LightClientV2MockInstance<P, N>>,
18403    > {
18404        LightClientV2MockInstance::<P, N>::deploy(__provider)
18405    }
18406    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18407and constructor arguments, if any.
18408
18409This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18410the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18411    #[inline]
18412    pub fn deploy_builder<
18413        P: alloy_contract::private::Provider<N>,
18414        N: alloy_contract::private::Network,
18415    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18416        LightClientV2MockInstance::<P, N>::deploy_builder(__provider)
18417    }
18418    /**A [`LightClientV2Mock`](self) instance.
18419
18420Contains type-safe methods for interacting with an on-chain instance of the
18421[`LightClientV2Mock`](self) contract located at a given `address`, using a given
18422provider `P`.
18423
18424If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
18425documentation on how to provide it), the `deploy` and `deploy_builder` methods can
18426be used to deploy a new instance of the contract.
18427
18428See the [module-level documentation](self) for all the available methods.*/
18429    #[derive(Clone)]
18430    pub struct LightClientV2MockInstance<P, N = alloy_contract::private::Ethereum> {
18431        address: alloy_sol_types::private::Address,
18432        provider: P,
18433        _network: ::core::marker::PhantomData<N>,
18434    }
18435    #[automatically_derived]
18436    impl<P, N> ::core::fmt::Debug for LightClientV2MockInstance<P, N> {
18437        #[inline]
18438        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
18439            f.debug_tuple("LightClientV2MockInstance").field(&self.address).finish()
18440        }
18441    }
18442    /// Instantiation and getters/setters.
18443    impl<
18444        P: alloy_contract::private::Provider<N>,
18445        N: alloy_contract::private::Network,
18446    > LightClientV2MockInstance<P, N> {
18447        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
18448
18449See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
18450        #[inline]
18451        pub const fn new(
18452            address: alloy_sol_types::private::Address,
18453            __provider: P,
18454        ) -> Self {
18455            Self {
18456                address,
18457                provider: __provider,
18458                _network: ::core::marker::PhantomData,
18459            }
18460        }
18461        /**Deploys this contract using the given `provider` and constructor arguments, if any.
18462
18463Returns a new instance of the contract, if the deployment was successful.
18464
18465For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
18466        #[inline]
18467        pub async fn deploy(
18468            __provider: P,
18469        ) -> alloy_contract::Result<LightClientV2MockInstance<P, N>> {
18470            let call_builder = Self::deploy_builder(__provider);
18471            let contract_address = call_builder.deploy().await?;
18472            Ok(Self::new(contract_address, call_builder.provider))
18473        }
18474        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
18475and constructor arguments, if any.
18476
18477This is a simple wrapper around creating a `RawCallBuilder` with the data set to
18478the bytecode concatenated with the constructor's ABI-encoded arguments.*/
18479        #[inline]
18480        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
18481            alloy_contract::RawCallBuilder::new_raw_deploy(
18482                __provider,
18483                ::core::clone::Clone::clone(&BYTECODE),
18484            )
18485        }
18486        /// Returns a reference to the address.
18487        #[inline]
18488        pub const fn address(&self) -> &alloy_sol_types::private::Address {
18489            &self.address
18490        }
18491        /// Sets the address.
18492        #[inline]
18493        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
18494            self.address = address;
18495        }
18496        /// Sets the address and returns `self`.
18497        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
18498            self.set_address(address);
18499            self
18500        }
18501        /// Returns a reference to the provider.
18502        #[inline]
18503        pub const fn provider(&self) -> &P {
18504            &self.provider
18505        }
18506    }
18507    impl<P: ::core::clone::Clone, N> LightClientV2MockInstance<&P, N> {
18508        /// Clones the provider and returns a new instance with the cloned provider.
18509        #[inline]
18510        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<P, N> {
18511            LightClientV2MockInstance {
18512                address: self.address,
18513                provider: ::core::clone::Clone::clone(&self.provider),
18514                _network: ::core::marker::PhantomData,
18515            }
18516        }
18517    }
18518    /// Function calls.
18519    impl<
18520        P: alloy_contract::private::Provider<N>,
18521        N: alloy_contract::private::Network,
18522    > LightClientV2MockInstance<P, N> {
18523        /// Creates a new call builder using this contract instance's provider and address.
18524        ///
18525        /// Note that the call can be any function call, not just those defined in this
18526        /// contract. Prefer using the other methods for building type-safe contract calls.
18527        pub fn call_builder<C: alloy_sol_types::SolCall>(
18528            &self,
18529            call: &C,
18530        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
18531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
18532        }
18533        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
18534        pub fn UPGRADE_INTERFACE_VERSION(
18535            &self,
18536        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
18537            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
18538        }
18539        ///Creates a new call builder for the [`_getVk`] function.
18540        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
18541            self.call_builder(&_getVkCall)
18542        }
18543        ///Creates a new call builder for the [`blocksPerEpoch`] function.
18544        pub fn blocksPerEpoch(
18545            &self,
18546        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
18547            self.call_builder(&blocksPerEpochCall)
18548        }
18549        ///Creates a new call builder for the [`currentBlockNumber`] function.
18550        pub fn currentBlockNumber(
18551            &self,
18552        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
18553            self.call_builder(&currentBlockNumberCall)
18554        }
18555        ///Creates a new call builder for the [`currentEpoch`] function.
18556        pub fn currentEpoch(
18557            &self,
18558        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
18559            self.call_builder(&currentEpochCall)
18560        }
18561        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
18562        pub fn disablePermissionedProverMode(
18563            &self,
18564        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
18565            self.call_builder(&disablePermissionedProverModeCall)
18566        }
18567        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
18568        pub fn epochFromBlockNumber(
18569            &self,
18570            _blockNum: u64,
18571            _blocksPerEpoch: u64,
18572        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
18573            self.call_builder(
18574                &epochFromBlockNumberCall {
18575                    _blockNum,
18576                    _blocksPerEpoch,
18577                },
18578            )
18579        }
18580        ///Creates a new call builder for the [`epochStartBlock`] function.
18581        pub fn epochStartBlock(
18582            &self,
18583        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
18584            self.call_builder(&epochStartBlockCall)
18585        }
18586        ///Creates a new call builder for the [`finalizedState`] function.
18587        pub fn finalizedState(
18588            &self,
18589        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
18590            self.call_builder(&finalizedStateCall)
18591        }
18592        ///Creates a new call builder for the [`genesisStakeTableState`] function.
18593        pub fn genesisStakeTableState(
18594            &self,
18595        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
18596            self.call_builder(&genesisStakeTableStateCall)
18597        }
18598        ///Creates a new call builder for the [`genesisState`] function.
18599        pub fn genesisState(
18600            &self,
18601        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
18602            self.call_builder(&genesisStateCall)
18603        }
18604        ///Creates a new call builder for the [`getFirstEpoch`] function.
18605        pub fn getFirstEpoch(
18606            &self,
18607        ) -> alloy_contract::SolCallBuilder<&P, getFirstEpochCall, N> {
18608            self.call_builder(&getFirstEpochCall)
18609        }
18610        ///Creates a new call builder for the [`getHotShotCommitment`] function.
18611        pub fn getHotShotCommitment(
18612            &self,
18613            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
18614        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
18615            self.call_builder(
18616                &getHotShotCommitmentCall {
18617                    hotShotBlockHeight,
18618                },
18619            )
18620        }
18621        ///Creates a new call builder for the [`getStateHistoryCount`] function.
18622        pub fn getStateHistoryCount(
18623            &self,
18624        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
18625            self.call_builder(&getStateHistoryCountCall)
18626        }
18627        ///Creates a new call builder for the [`getVersion`] function.
18628        pub fn getVersion(
18629            &self,
18630        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
18631            self.call_builder(&getVersionCall)
18632        }
18633        ///Creates a new call builder for the [`initialize`] function.
18634        pub fn initialize(
18635            &self,
18636            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18637            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18638            _stateHistoryRetentionPeriod: u32,
18639            owner: alloy::sol_types::private::Address,
18640        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
18641            self.call_builder(
18642                &initializeCall {
18643                    _genesis,
18644                    _genesisStakeTableState,
18645                    _stateHistoryRetentionPeriod,
18646                    owner,
18647                },
18648            )
18649        }
18650        ///Creates a new call builder for the [`initializeV2`] function.
18651        pub fn initializeV2(
18652            &self,
18653            _blocksPerEpoch: u64,
18654            _epochStartBlock: u64,
18655        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
18656            self.call_builder(
18657                &initializeV2Call {
18658                    _blocksPerEpoch,
18659                    _epochStartBlock,
18660                },
18661            )
18662        }
18663        ///Creates a new call builder for the [`isEpochRoot`] function.
18664        pub fn isEpochRoot(
18665            &self,
18666            blockHeight: u64,
18667        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
18668            self.call_builder(&isEpochRootCall { blockHeight })
18669        }
18670        ///Creates a new call builder for the [`isGtEpochRoot`] function.
18671        pub fn isGtEpochRoot(
18672            &self,
18673            blockHeight: u64,
18674        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
18675            self.call_builder(&isGtEpochRootCall { blockHeight })
18676        }
18677        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
18678        pub fn isPermissionedProverEnabled(
18679            &self,
18680        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
18681            self.call_builder(&isPermissionedProverEnabledCall)
18682        }
18683        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
18684        pub fn lagOverEscapeHatchThreshold(
18685            &self,
18686            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
18687            threshold: alloy::sol_types::private::primitives::aliases::U256,
18688        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
18689            self.call_builder(
18690                &lagOverEscapeHatchThresholdCall {
18691                    blockNumber,
18692                    threshold,
18693                },
18694            )
18695        }
18696        ///Creates a new call builder for the [`newFinalizedState_0`] function.
18697        pub fn newFinalizedState_0(
18698            &self,
18699            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18700            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18701        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
18702            self.call_builder(&newFinalizedState_0Call { _0, _1 })
18703        }
18704        ///Creates a new call builder for the [`newFinalizedState_1`] function.
18705        pub fn newFinalizedState_1(
18706            &self,
18707            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18708            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18709            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18710        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
18711            self.call_builder(
18712                &newFinalizedState_1Call {
18713                    newState,
18714                    nextStakeTable,
18715                    proof,
18716                },
18717            )
18718        }
18719        ///Creates a new call builder for the [`owner`] function.
18720        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
18721            self.call_builder(&ownerCall)
18722        }
18723        ///Creates a new call builder for the [`permissionedProver`] function.
18724        pub fn permissionedProver(
18725            &self,
18726        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
18727            self.call_builder(&permissionedProverCall)
18728        }
18729        ///Creates a new call builder for the [`proxiableUUID`] function.
18730        pub fn proxiableUUID(
18731            &self,
18732        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
18733            self.call_builder(&proxiableUUIDCall)
18734        }
18735        ///Creates a new call builder for the [`renounceOwnership`] function.
18736        pub fn renounceOwnership(
18737            &self,
18738        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
18739            self.call_builder(&renounceOwnershipCall)
18740        }
18741        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
18742        pub fn setBlocksPerEpoch(
18743            &self,
18744            newBlocksPerEpoch: u64,
18745        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
18746            self.call_builder(
18747                &setBlocksPerEpochCall {
18748                    newBlocksPerEpoch,
18749                },
18750            )
18751        }
18752        ///Creates a new call builder for the [`setFinalizedState`] function.
18753        pub fn setFinalizedState(
18754            &self,
18755            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18756        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
18757            self.call_builder(&setFinalizedStateCall { state })
18758        }
18759        ///Creates a new call builder for the [`setHotShotDownSince`] function.
18760        pub fn setHotShotDownSince(
18761            &self,
18762            l1Height: alloy::sol_types::private::primitives::aliases::U256,
18763        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
18764            self.call_builder(
18765                &setHotShotDownSinceCall {
18766                    l1Height,
18767                },
18768            )
18769        }
18770        ///Creates a new call builder for the [`setHotShotUp`] function.
18771        pub fn setHotShotUp(
18772            &self,
18773        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
18774            self.call_builder(&setHotShotUpCall)
18775        }
18776        ///Creates a new call builder for the [`setPermissionedProver`] function.
18777        pub fn setPermissionedProver(
18778            &self,
18779            prover: alloy::sol_types::private::Address,
18780        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
18781            self.call_builder(
18782                &setPermissionedProverCall {
18783                    prover,
18784                },
18785            )
18786        }
18787        ///Creates a new call builder for the [`setStateHistory`] function.
18788        pub fn setStateHistory(
18789            &self,
18790            _stateHistoryCommitments: alloy::sol_types::private::Vec<
18791                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
18792            >,
18793        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
18794            self.call_builder(
18795                &setStateHistoryCall {
18796                    _stateHistoryCommitments,
18797                },
18798            )
18799        }
18800        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
18801        pub fn setStateHistoryRetentionPeriod(
18802            &self,
18803            historySeconds: u32,
18804        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
18805            self.call_builder(
18806                &setStateHistoryRetentionPeriodCall {
18807                    historySeconds,
18808                },
18809            )
18810        }
18811        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
18812        pub fn setVotingStakeTableState(
18813            &self,
18814            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18815        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
18816            self.call_builder(
18817                &setVotingStakeTableStateCall {
18818                    stake,
18819                },
18820            )
18821        }
18822        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
18823        pub fn setstateHistoryRetentionPeriod(
18824            &self,
18825            historySeconds: u32,
18826        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
18827            self.call_builder(
18828                &setstateHistoryRetentionPeriodCall {
18829                    historySeconds,
18830                },
18831            )
18832        }
18833        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
18834        pub fn stateHistoryCommitments(
18835            &self,
18836            _0: alloy::sol_types::private::primitives::aliases::U256,
18837        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
18838            self.call_builder(&stateHistoryCommitmentsCall(_0))
18839        }
18840        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
18841        pub fn stateHistoryFirstIndex(
18842            &self,
18843        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
18844            self.call_builder(&stateHistoryFirstIndexCall)
18845        }
18846        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
18847        pub fn stateHistoryRetentionPeriod(
18848            &self,
18849        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
18850            self.call_builder(&stateHistoryRetentionPeriodCall)
18851        }
18852        ///Creates a new call builder for the [`transferOwnership`] function.
18853        pub fn transferOwnership(
18854            &self,
18855            newOwner: alloy::sol_types::private::Address,
18856        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
18857            self.call_builder(&transferOwnershipCall { newOwner })
18858        }
18859        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
18860        pub fn updateEpochStartBlock(
18861            &self,
18862            newEpochStartBlock: u64,
18863        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
18864            self.call_builder(
18865                &updateEpochStartBlockCall {
18866                    newEpochStartBlock,
18867                },
18868            )
18869        }
18870        ///Creates a new call builder for the [`upgradeToAndCall`] function.
18871        pub fn upgradeToAndCall(
18872            &self,
18873            newImplementation: alloy::sol_types::private::Address,
18874            data: alloy::sol_types::private::Bytes,
18875        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
18876            self.call_builder(
18877                &upgradeToAndCallCall {
18878                    newImplementation,
18879                    data,
18880                },
18881            )
18882        }
18883        ///Creates a new call builder for the [`votingStakeTableState`] function.
18884        pub fn votingStakeTableState(
18885            &self,
18886        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
18887            self.call_builder(&votingStakeTableStateCall)
18888        }
18889    }
18890    /// Event filters.
18891    impl<
18892        P: alloy_contract::private::Provider<N>,
18893        N: alloy_contract::private::Network,
18894    > LightClientV2MockInstance<P, N> {
18895        /// Creates a new event filter using this contract instance's provider and address.
18896        ///
18897        /// Note that the type can be any event, not just those defined in this contract.
18898        /// Prefer using the other methods for building type-safe event filters.
18899        pub fn event_filter<E: alloy_sol_types::SolEvent>(
18900            &self,
18901        ) -> alloy_contract::Event<&P, E, N> {
18902            alloy_contract::Event::new_sol(&self.provider, &self.address)
18903        }
18904        ///Creates a new event filter for the [`Initialized`] event.
18905        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
18906            self.event_filter::<Initialized>()
18907        }
18908        ///Creates a new event filter for the [`NewEpoch`] event.
18909        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
18910            self.event_filter::<NewEpoch>()
18911        }
18912        ///Creates a new event filter for the [`NewState`] event.
18913        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
18914            self.event_filter::<NewState>()
18915        }
18916        ///Creates a new event filter for the [`OwnershipTransferred`] event.
18917        pub fn OwnershipTransferred_filter(
18918            &self,
18919        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
18920            self.event_filter::<OwnershipTransferred>()
18921        }
18922        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
18923        pub fn PermissionedProverNotRequired_filter(
18924            &self,
18925        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
18926            self.event_filter::<PermissionedProverNotRequired>()
18927        }
18928        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
18929        pub fn PermissionedProverRequired_filter(
18930            &self,
18931        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
18932            self.event_filter::<PermissionedProverRequired>()
18933        }
18934        ///Creates a new event filter for the [`Upgrade`] event.
18935        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
18936            self.event_filter::<Upgrade>()
18937        }
18938        ///Creates a new event filter for the [`Upgraded`] event.
18939        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
18940            self.event_filter::<Upgraded>()
18941        }
18942    }
18943}