hotshot_contract_adapter/bindings/
lightclientv2.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(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from(
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(
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 alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    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; }
616    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; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct 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; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "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,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct 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; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "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)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
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            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224}
2225```*/
2226#[allow(
2227    non_camel_case_types,
2228    non_snake_case,
2229    clippy::pub_underscore_fields,
2230    clippy::style,
2231    clippy::empty_structs_with_brackets
2232)]
2233pub mod LightClient {
2234    use super::*;
2235    use alloy::sol_types as alloy_sol_types;
2236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2237    /**```solidity
2238struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2239```*/
2240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2241    #[derive(Clone)]
2242    pub struct LightClientState {
2243        #[allow(missing_docs)]
2244        pub viewNum: u64,
2245        #[allow(missing_docs)]
2246        pub blockHeight: u64,
2247        #[allow(missing_docs)]
2248        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2249    }
2250    #[allow(
2251        non_camel_case_types,
2252        non_snake_case,
2253        clippy::pub_underscore_fields,
2254        clippy::style
2255    )]
2256    const _: () = {
2257        use alloy::sol_types as alloy_sol_types;
2258        #[doc(hidden)]
2259        type UnderlyingSolTuple<'a> = (
2260            alloy::sol_types::sol_data::Uint<64>,
2261            alloy::sol_types::sol_data::Uint<64>,
2262            BN254::ScalarField,
2263        );
2264        #[doc(hidden)]
2265        type UnderlyingRustTuple<'a> = (
2266            u64,
2267            u64,
2268            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2269        );
2270        #[cfg(test)]
2271        #[allow(dead_code, unreachable_patterns)]
2272        fn _type_assertion(
2273            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2274        ) {
2275            match _t {
2276                alloy_sol_types::private::AssertTypeEq::<
2277                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2278                >(_) => {}
2279            }
2280        }
2281        #[automatically_derived]
2282        #[doc(hidden)]
2283        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2284            fn from(value: LightClientState) -> Self {
2285                (value.viewNum, value.blockHeight, value.blockCommRoot)
2286            }
2287        }
2288        #[automatically_derived]
2289        #[doc(hidden)]
2290        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2291            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2292                Self {
2293                    viewNum: tuple.0,
2294                    blockHeight: tuple.1,
2295                    blockCommRoot: tuple.2,
2296                }
2297            }
2298        }
2299        #[automatically_derived]
2300        impl alloy_sol_types::SolValue for LightClientState {
2301            type SolType = Self;
2302        }
2303        #[automatically_derived]
2304        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2305            #[inline]
2306            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2307                (
2308                    <alloy::sol_types::sol_data::Uint<
2309                        64,
2310                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2311                    <alloy::sol_types::sol_data::Uint<
2312                        64,
2313                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2314                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2315                        &self.blockCommRoot,
2316                    ),
2317                )
2318            }
2319            #[inline]
2320            fn stv_abi_encoded_size(&self) -> usize {
2321                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2322                    return size;
2323                }
2324                let tuple = <UnderlyingRustTuple<
2325                    '_,
2326                > as ::core::convert::From<Self>>::from(self.clone());
2327                <UnderlyingSolTuple<
2328                    '_,
2329                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2330            }
2331            #[inline]
2332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2334            }
2335            #[inline]
2336            fn stv_abi_encode_packed_to(
2337                &self,
2338                out: &mut alloy_sol_types::private::Vec<u8>,
2339            ) {
2340                let tuple = <UnderlyingRustTuple<
2341                    '_,
2342                > as ::core::convert::From<Self>>::from(self.clone());
2343                <UnderlyingSolTuple<
2344                    '_,
2345                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2346            }
2347            #[inline]
2348            fn stv_abi_packed_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2358            }
2359        }
2360        #[automatically_derived]
2361        impl alloy_sol_types::SolType for LightClientState {
2362            type RustType = Self;
2363            type Token<'a> = <UnderlyingSolTuple<
2364                'a,
2365            > as alloy_sol_types::SolType>::Token<'a>;
2366            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2367            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2368                '_,
2369            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2370            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2371                '_,
2372            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2373            #[inline]
2374            fn valid_token(token: &Self::Token<'_>) -> bool {
2375                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2376            }
2377            #[inline]
2378            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2379                let tuple = <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::detokenize(token);
2382                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2383            }
2384        }
2385        #[automatically_derived]
2386        impl alloy_sol_types::SolStruct for LightClientState {
2387            const NAME: &'static str = "LightClientState";
2388            #[inline]
2389            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2390                alloy_sol_types::private::Cow::Borrowed(
2391                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2392                )
2393            }
2394            #[inline]
2395            fn eip712_components() -> alloy_sol_types::private::Vec<
2396                alloy_sol_types::private::Cow<'static, str>,
2397            > {
2398                alloy_sol_types::private::Vec::new()
2399            }
2400            #[inline]
2401            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2402                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2403            }
2404            #[inline]
2405            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2406                [
2407                    <alloy::sol_types::sol_data::Uint<
2408                        64,
2409                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2410                        .0,
2411                    <alloy::sol_types::sol_data::Uint<
2412                        64,
2413                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2414                        .0,
2415                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2416                            &self.blockCommRoot,
2417                        )
2418                        .0,
2419                ]
2420                    .concat()
2421            }
2422        }
2423        #[automatically_derived]
2424        impl alloy_sol_types::EventTopic for LightClientState {
2425            #[inline]
2426            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2427                0usize
2428                    + <alloy::sol_types::sol_data::Uint<
2429                        64,
2430                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2431                        &rust.viewNum,
2432                    )
2433                    + <alloy::sol_types::sol_data::Uint<
2434                        64,
2435                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2436                        &rust.blockHeight,
2437                    )
2438                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2439                        &rust.blockCommRoot,
2440                    )
2441            }
2442            #[inline]
2443            fn encode_topic_preimage(
2444                rust: &Self::RustType,
2445                out: &mut alloy_sol_types::private::Vec<u8>,
2446            ) {
2447                out.reserve(
2448                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2449                );
2450                <alloy::sol_types::sol_data::Uint<
2451                    64,
2452                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2453                    &rust.viewNum,
2454                    out,
2455                );
2456                <alloy::sol_types::sol_data::Uint<
2457                    64,
2458                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2459                    &rust.blockHeight,
2460                    out,
2461                );
2462                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2463                    &rust.blockCommRoot,
2464                    out,
2465                );
2466            }
2467            #[inline]
2468            fn encode_topic(
2469                rust: &Self::RustType,
2470            ) -> alloy_sol_types::abi::token::WordToken {
2471                let mut out = alloy_sol_types::private::Vec::new();
2472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    rust,
2474                    &mut out,
2475                );
2476                alloy_sol_types::abi::token::WordToken(
2477                    alloy_sol_types::private::keccak256(out),
2478                )
2479            }
2480        }
2481    };
2482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2483    /**```solidity
2484struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2485```*/
2486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2487    #[derive(Clone)]
2488    pub struct StakeTableState {
2489        #[allow(missing_docs)]
2490        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2491        #[allow(missing_docs)]
2492        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2493        #[allow(missing_docs)]
2494        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2495        #[allow(missing_docs)]
2496        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2497    }
2498    #[allow(
2499        non_camel_case_types,
2500        non_snake_case,
2501        clippy::pub_underscore_fields,
2502        clippy::style
2503    )]
2504    const _: () = {
2505        use alloy::sol_types as alloy_sol_types;
2506        #[doc(hidden)]
2507        type UnderlyingSolTuple<'a> = (
2508            alloy::sol_types::sol_data::Uint<256>,
2509            BN254::ScalarField,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512        );
2513        #[doc(hidden)]
2514        type UnderlyingRustTuple<'a> = (
2515            alloy::sol_types::private::primitives::aliases::U256,
2516            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        );
2520        #[cfg(test)]
2521        #[allow(dead_code, unreachable_patterns)]
2522        fn _type_assertion(
2523            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2524        ) {
2525            match _t {
2526                alloy_sol_types::private::AssertTypeEq::<
2527                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2528                >(_) => {}
2529            }
2530        }
2531        #[automatically_derived]
2532        #[doc(hidden)]
2533        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2534            fn from(value: StakeTableState) -> Self {
2535                (
2536                    value.threshold,
2537                    value.blsKeyComm,
2538                    value.schnorrKeyComm,
2539                    value.amountComm,
2540                )
2541            }
2542        }
2543        #[automatically_derived]
2544        #[doc(hidden)]
2545        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2546            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2547                Self {
2548                    threshold: tuple.0,
2549                    blsKeyComm: tuple.1,
2550                    schnorrKeyComm: tuple.2,
2551                    amountComm: tuple.3,
2552                }
2553            }
2554        }
2555        #[automatically_derived]
2556        impl alloy_sol_types::SolValue for StakeTableState {
2557            type SolType = Self;
2558        }
2559        #[automatically_derived]
2560        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2561            #[inline]
2562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2563                (
2564                    <alloy::sol_types::sol_data::Uint<
2565                        256,
2566                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2567                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2568                        &self.blsKeyComm,
2569                    ),
2570                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2571                        &self.schnorrKeyComm,
2572                    ),
2573                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2574                        &self.amountComm,
2575                    ),
2576                )
2577            }
2578            #[inline]
2579            fn stv_abi_encoded_size(&self) -> usize {
2580                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2581                    return size;
2582                }
2583                let tuple = <UnderlyingRustTuple<
2584                    '_,
2585                > as ::core::convert::From<Self>>::from(self.clone());
2586                <UnderlyingSolTuple<
2587                    '_,
2588                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2589            }
2590            #[inline]
2591            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2592                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2593            }
2594            #[inline]
2595            fn stv_abi_encode_packed_to(
2596                &self,
2597                out: &mut alloy_sol_types::private::Vec<u8>,
2598            ) {
2599                let tuple = <UnderlyingRustTuple<
2600                    '_,
2601                > as ::core::convert::From<Self>>::from(self.clone());
2602                <UnderlyingSolTuple<
2603                    '_,
2604                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2605            }
2606            #[inline]
2607            fn stv_abi_packed_encoded_size(&self) -> usize {
2608                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2609                    return size;
2610                }
2611                let tuple = <UnderlyingRustTuple<
2612                    '_,
2613                > as ::core::convert::From<Self>>::from(self.clone());
2614                <UnderlyingSolTuple<
2615                    '_,
2616                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2617            }
2618        }
2619        #[automatically_derived]
2620        impl alloy_sol_types::SolType for StakeTableState {
2621            type RustType = Self;
2622            type Token<'a> = <UnderlyingSolTuple<
2623                'a,
2624            > as alloy_sol_types::SolType>::Token<'a>;
2625            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2626            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2627                '_,
2628            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2629            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2630                '_,
2631            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2632            #[inline]
2633            fn valid_token(token: &Self::Token<'_>) -> bool {
2634                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2635            }
2636            #[inline]
2637            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2638                let tuple = <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::detokenize(token);
2641                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolStruct for StakeTableState {
2646            const NAME: &'static str = "StakeTableState";
2647            #[inline]
2648            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2649                alloy_sol_types::private::Cow::Borrowed(
2650                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2651                )
2652            }
2653            #[inline]
2654            fn eip712_components() -> alloy_sol_types::private::Vec<
2655                alloy_sol_types::private::Cow<'static, str>,
2656            > {
2657                alloy_sol_types::private::Vec::new()
2658            }
2659            #[inline]
2660            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2661                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2662            }
2663            #[inline]
2664            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2665                [
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2669                        .0,
2670                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2671                            &self.blsKeyComm,
2672                        )
2673                        .0,
2674                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2675                            &self.schnorrKeyComm,
2676                        )
2677                        .0,
2678                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2679                            &self.amountComm,
2680                        )
2681                        .0,
2682                ]
2683                    .concat()
2684            }
2685        }
2686        #[automatically_derived]
2687        impl alloy_sol_types::EventTopic for StakeTableState {
2688            #[inline]
2689            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2690                0usize
2691                    + <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2694                        &rust.threshold,
2695                    )
2696                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2697                        &rust.blsKeyComm,
2698                    )
2699                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2700                        &rust.schnorrKeyComm,
2701                    )
2702                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2703                        &rust.amountComm,
2704                    )
2705            }
2706            #[inline]
2707            fn encode_topic_preimage(
2708                rust: &Self::RustType,
2709                out: &mut alloy_sol_types::private::Vec<u8>,
2710            ) {
2711                out.reserve(
2712                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2713                );
2714                <alloy::sol_types::sol_data::Uint<
2715                    256,
2716                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2717                    &rust.threshold,
2718                    out,
2719                );
2720                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2721                    &rust.blsKeyComm,
2722                    out,
2723                );
2724                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2725                    &rust.schnorrKeyComm,
2726                    out,
2727                );
2728                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2729                    &rust.amountComm,
2730                    out,
2731                );
2732            }
2733            #[inline]
2734            fn encode_topic(
2735                rust: &Self::RustType,
2736            ) -> alloy_sol_types::abi::token::WordToken {
2737                let mut out = alloy_sol_types::private::Vec::new();
2738                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    rust,
2740                    &mut out,
2741                );
2742                alloy_sol_types::abi::token::WordToken(
2743                    alloy_sol_types::private::keccak256(out),
2744                )
2745            }
2746        }
2747    };
2748    use alloy::contract as alloy_contract;
2749    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2750
2751See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2752    #[inline]
2753    pub const fn new<
2754        T: alloy_contract::private::Transport + ::core::clone::Clone,
2755        P: alloy_contract::private::Provider<T, N>,
2756        N: alloy_contract::private::Network,
2757    >(
2758        address: alloy_sol_types::private::Address,
2759        provider: P,
2760    ) -> LightClientInstance<T, P, N> {
2761        LightClientInstance::<T, P, N>::new(address, provider)
2762    }
2763    /**A [`LightClient`](self) instance.
2764
2765Contains type-safe methods for interacting with an on-chain instance of the
2766[`LightClient`](self) contract located at a given `address`, using a given
2767provider `P`.
2768
2769If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2770documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2771be used to deploy a new instance of the contract.
2772
2773See the [module-level documentation](self) for all the available methods.*/
2774    #[derive(Clone)]
2775    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2776        address: alloy_sol_types::private::Address,
2777        provider: P,
2778        _network_transport: ::core::marker::PhantomData<(N, T)>,
2779    }
2780    #[automatically_derived]
2781    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2782        #[inline]
2783        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2784            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2785        }
2786    }
2787    /// Instantiation and getters/setters.
2788    #[automatically_derived]
2789    impl<
2790        T: alloy_contract::private::Transport + ::core::clone::Clone,
2791        P: alloy_contract::private::Provider<T, N>,
2792        N: alloy_contract::private::Network,
2793    > LightClientInstance<T, P, N> {
2794        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2795
2796See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2797        #[inline]
2798        pub const fn new(
2799            address: alloy_sol_types::private::Address,
2800            provider: P,
2801        ) -> Self {
2802            Self {
2803                address,
2804                provider,
2805                _network_transport: ::core::marker::PhantomData,
2806            }
2807        }
2808        /// Returns a reference to the address.
2809        #[inline]
2810        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2811            &self.address
2812        }
2813        /// Sets the address.
2814        #[inline]
2815        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2816            self.address = address;
2817        }
2818        /// Sets the address and returns `self`.
2819        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2820            self.set_address(address);
2821            self
2822        }
2823        /// Returns a reference to the provider.
2824        #[inline]
2825        pub const fn provider(&self) -> &P {
2826            &self.provider
2827        }
2828    }
2829    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2830        /// Clones the provider and returns a new instance with the cloned provider.
2831        #[inline]
2832        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2833            LightClientInstance {
2834                address: self.address,
2835                provider: ::core::clone::Clone::clone(&self.provider),
2836                _network_transport: ::core::marker::PhantomData,
2837            }
2838        }
2839    }
2840    /// Function calls.
2841    #[automatically_derived]
2842    impl<
2843        T: alloy_contract::private::Transport + ::core::clone::Clone,
2844        P: alloy_contract::private::Provider<T, N>,
2845        N: alloy_contract::private::Network,
2846    > LightClientInstance<T, P, N> {
2847        /// Creates a new call builder using this contract instance's provider and address.
2848        ///
2849        /// Note that the call can be any function call, not just those defined in this
2850        /// contract. Prefer using the other methods for building type-safe contract calls.
2851        pub fn call_builder<C: alloy_sol_types::SolCall>(
2852            &self,
2853            call: &C,
2854        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2855            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2856        }
2857    }
2858    /// Event filters.
2859    #[automatically_derived]
2860    impl<
2861        T: alloy_contract::private::Transport + ::core::clone::Clone,
2862        P: alloy_contract::private::Provider<T, N>,
2863        N: alloy_contract::private::Network,
2864    > LightClientInstance<T, P, N> {
2865        /// Creates a new event filter using this contract instance's provider and address.
2866        ///
2867        /// Note that the type can be any event, not just those defined in this contract.
2868        /// Prefer using the other methods for building type-safe event filters.
2869        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2870            &self,
2871        ) -> alloy_contract::Event<T, &P, E, N> {
2872            alloy_contract::Event::new_sol(&self.provider, &self.address)
2873        }
2874    }
2875}
2876/**
2877
2878Generated by the following Solidity interface...
2879```solidity
2880library BN254 {
2881    type BaseField is uint256;
2882    type ScalarField is uint256;
2883    struct G1Point {
2884        BaseField x;
2885        BaseField y;
2886    }
2887}
2888
2889library IPlonkVerifier {
2890    struct PlonkProof {
2891        BN254.G1Point wire0;
2892        BN254.G1Point wire1;
2893        BN254.G1Point wire2;
2894        BN254.G1Point wire3;
2895        BN254.G1Point wire4;
2896        BN254.G1Point prodPerm;
2897        BN254.G1Point split0;
2898        BN254.G1Point split1;
2899        BN254.G1Point split2;
2900        BN254.G1Point split3;
2901        BN254.G1Point split4;
2902        BN254.G1Point zeta;
2903        BN254.G1Point zetaOmega;
2904        BN254.ScalarField wireEval0;
2905        BN254.ScalarField wireEval1;
2906        BN254.ScalarField wireEval2;
2907        BN254.ScalarField wireEval3;
2908        BN254.ScalarField wireEval4;
2909        BN254.ScalarField sigmaEval0;
2910        BN254.ScalarField sigmaEval1;
2911        BN254.ScalarField sigmaEval2;
2912        BN254.ScalarField sigmaEval3;
2913        BN254.ScalarField prodPermZetaOmegaEval;
2914    }
2915    struct VerifyingKey {
2916        uint256 domainSize;
2917        uint256 numInputs;
2918        BN254.G1Point sigma0;
2919        BN254.G1Point sigma1;
2920        BN254.G1Point sigma2;
2921        BN254.G1Point sigma3;
2922        BN254.G1Point sigma4;
2923        BN254.G1Point q1;
2924        BN254.G1Point q2;
2925        BN254.G1Point q3;
2926        BN254.G1Point q4;
2927        BN254.G1Point qM12;
2928        BN254.G1Point qM34;
2929        BN254.G1Point qO;
2930        BN254.G1Point qC;
2931        BN254.G1Point qH1;
2932        BN254.G1Point qH2;
2933        BN254.G1Point qH3;
2934        BN254.G1Point qH4;
2935        BN254.G1Point qEcc;
2936        bytes32 g2LSB;
2937        bytes32 g2MSB;
2938    }
2939}
2940
2941library LightClient {
2942    struct LightClientState {
2943        uint64 viewNum;
2944        uint64 blockHeight;
2945        BN254.ScalarField blockCommRoot;
2946    }
2947    struct StakeTableState {
2948        uint256 threshold;
2949        BN254.ScalarField blsKeyComm;
2950        BN254.ScalarField schnorrKeyComm;
2951        BN254.ScalarField amountComm;
2952    }
2953}
2954
2955interface LightClientV2 {
2956    error AddressEmptyCode(address target);
2957    error DeprecatedApi();
2958    error ERC1967InvalidImplementation(address implementation);
2959    error ERC1967NonPayable();
2960    error FailedInnerCall();
2961    error InsufficientSnapshotHistory();
2962    error InvalidAddress();
2963    error InvalidArgs();
2964    error InvalidHotShotBlockForCommitmentCheck();
2965    error InvalidInitialization();
2966    error InvalidMaxStateHistory();
2967    error InvalidProof();
2968    error MissingEpochRootUpdate();
2969    error NoChangeRequired();
2970    error NotInitializing();
2971    error OutdatedState();
2972    error OwnableInvalidOwner(address owner);
2973    error OwnableUnauthorizedAccount(address account);
2974    error ProverNotPermissioned();
2975    error UUPSUnauthorizedCallContext();
2976    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2977    error WrongStakeTableUsed();
2978
2979    event Initialized(uint64 version);
2980    event NewEpoch(uint64 epoch);
2981    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2982    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2983    event PermissionedProverNotRequired();
2984    event PermissionedProverRequired(address permissionedProver);
2985    event Upgrade(address implementation);
2986    event Upgraded(address indexed implementation);
2987
2988    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2989    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2990    function blocksPerEpoch() external view returns (uint64);
2991    function currentBlockNumber() external view returns (uint256);
2992    function currentEpoch() external view returns (uint64);
2993    function disablePermissionedProverMode() external;
2994    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
2995    function epochStartBlock() external view returns (uint64);
2996    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2997    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2998    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2999    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3000    function getStateHistoryCount() external view returns (uint256);
3001    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3002    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3003    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3004    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3005    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3006    function isPermissionedProverEnabled() external view returns (bool);
3007    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3008    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3009    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3010    function owner() external view returns (address);
3011    function permissionedProver() external view returns (address);
3012    function proxiableUUID() external view returns (bytes32);
3013    function renounceOwnership() external;
3014    function setPermissionedProver(address prover) external;
3015    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3016    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3017    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3018    function stateHistoryFirstIndex() external view returns (uint64);
3019    function stateHistoryRetentionPeriod() external view returns (uint32);
3020    function transferOwnership(address newOwner) external;
3021    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3022    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3023    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3024}
3025```
3026
3027...which was generated by the following JSON ABI:
3028```json
3029[
3030  {
3031    "type": "function",
3032    "name": "UPGRADE_INTERFACE_VERSION",
3033    "inputs": [],
3034    "outputs": [
3035      {
3036        "name": "",
3037        "type": "string",
3038        "internalType": "string"
3039      }
3040    ],
3041    "stateMutability": "view"
3042  },
3043  {
3044    "type": "function",
3045    "name": "_getVk",
3046    "inputs": [],
3047    "outputs": [
3048      {
3049        "name": "vk",
3050        "type": "tuple",
3051        "internalType": "struct IPlonkVerifier.VerifyingKey",
3052        "components": [
3053          {
3054            "name": "domainSize",
3055            "type": "uint256",
3056            "internalType": "uint256"
3057          },
3058          {
3059            "name": "numInputs",
3060            "type": "uint256",
3061            "internalType": "uint256"
3062          },
3063          {
3064            "name": "sigma0",
3065            "type": "tuple",
3066            "internalType": "struct BN254.G1Point",
3067            "components": [
3068              {
3069                "name": "x",
3070                "type": "uint256",
3071                "internalType": "BN254.BaseField"
3072              },
3073              {
3074                "name": "y",
3075                "type": "uint256",
3076                "internalType": "BN254.BaseField"
3077              }
3078            ]
3079          },
3080          {
3081            "name": "sigma1",
3082            "type": "tuple",
3083            "internalType": "struct BN254.G1Point",
3084            "components": [
3085              {
3086                "name": "x",
3087                "type": "uint256",
3088                "internalType": "BN254.BaseField"
3089              },
3090              {
3091                "name": "y",
3092                "type": "uint256",
3093                "internalType": "BN254.BaseField"
3094              }
3095            ]
3096          },
3097          {
3098            "name": "sigma2",
3099            "type": "tuple",
3100            "internalType": "struct BN254.G1Point",
3101            "components": [
3102              {
3103                "name": "x",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              },
3107              {
3108                "name": "y",
3109                "type": "uint256",
3110                "internalType": "BN254.BaseField"
3111              }
3112            ]
3113          },
3114          {
3115            "name": "sigma3",
3116            "type": "tuple",
3117            "internalType": "struct BN254.G1Point",
3118            "components": [
3119              {
3120                "name": "x",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              },
3124              {
3125                "name": "y",
3126                "type": "uint256",
3127                "internalType": "BN254.BaseField"
3128              }
3129            ]
3130          },
3131          {
3132            "name": "sigma4",
3133            "type": "tuple",
3134            "internalType": "struct BN254.G1Point",
3135            "components": [
3136              {
3137                "name": "x",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              },
3141              {
3142                "name": "y",
3143                "type": "uint256",
3144                "internalType": "BN254.BaseField"
3145              }
3146            ]
3147          },
3148          {
3149            "name": "q1",
3150            "type": "tuple",
3151            "internalType": "struct BN254.G1Point",
3152            "components": [
3153              {
3154                "name": "x",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              },
3158              {
3159                "name": "y",
3160                "type": "uint256",
3161                "internalType": "BN254.BaseField"
3162              }
3163            ]
3164          },
3165          {
3166            "name": "q2",
3167            "type": "tuple",
3168            "internalType": "struct BN254.G1Point",
3169            "components": [
3170              {
3171                "name": "x",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              },
3175              {
3176                "name": "y",
3177                "type": "uint256",
3178                "internalType": "BN254.BaseField"
3179              }
3180            ]
3181          },
3182          {
3183            "name": "q3",
3184            "type": "tuple",
3185            "internalType": "struct BN254.G1Point",
3186            "components": [
3187              {
3188                "name": "x",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              },
3192              {
3193                "name": "y",
3194                "type": "uint256",
3195                "internalType": "BN254.BaseField"
3196              }
3197            ]
3198          },
3199          {
3200            "name": "q4",
3201            "type": "tuple",
3202            "internalType": "struct BN254.G1Point",
3203            "components": [
3204              {
3205                "name": "x",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              },
3209              {
3210                "name": "y",
3211                "type": "uint256",
3212                "internalType": "BN254.BaseField"
3213              }
3214            ]
3215          },
3216          {
3217            "name": "qM12",
3218            "type": "tuple",
3219            "internalType": "struct BN254.G1Point",
3220            "components": [
3221              {
3222                "name": "x",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              },
3226              {
3227                "name": "y",
3228                "type": "uint256",
3229                "internalType": "BN254.BaseField"
3230              }
3231            ]
3232          },
3233          {
3234            "name": "qM34",
3235            "type": "tuple",
3236            "internalType": "struct BN254.G1Point",
3237            "components": [
3238              {
3239                "name": "x",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              },
3243              {
3244                "name": "y",
3245                "type": "uint256",
3246                "internalType": "BN254.BaseField"
3247              }
3248            ]
3249          },
3250          {
3251            "name": "qO",
3252            "type": "tuple",
3253            "internalType": "struct BN254.G1Point",
3254            "components": [
3255              {
3256                "name": "x",
3257                "type": "uint256",
3258                "internalType": "BN254.BaseField"
3259              },
3260              {
3261                "name": "y",
3262                "type": "uint256",
3263                "internalType": "BN254.BaseField"
3264              }
3265            ]
3266          },
3267          {
3268            "name": "qC",
3269            "type": "tuple",
3270            "internalType": "struct BN254.G1Point",
3271            "components": [
3272              {
3273                "name": "x",
3274                "type": "uint256",
3275                "internalType": "BN254.BaseField"
3276              },
3277              {
3278                "name": "y",
3279                "type": "uint256",
3280                "internalType": "BN254.BaseField"
3281              }
3282            ]
3283          },
3284          {
3285            "name": "qH1",
3286            "type": "tuple",
3287            "internalType": "struct BN254.G1Point",
3288            "components": [
3289              {
3290                "name": "x",
3291                "type": "uint256",
3292                "internalType": "BN254.BaseField"
3293              },
3294              {
3295                "name": "y",
3296                "type": "uint256",
3297                "internalType": "BN254.BaseField"
3298              }
3299            ]
3300          },
3301          {
3302            "name": "qH2",
3303            "type": "tuple",
3304            "internalType": "struct BN254.G1Point",
3305            "components": [
3306              {
3307                "name": "x",
3308                "type": "uint256",
3309                "internalType": "BN254.BaseField"
3310              },
3311              {
3312                "name": "y",
3313                "type": "uint256",
3314                "internalType": "BN254.BaseField"
3315              }
3316            ]
3317          },
3318          {
3319            "name": "qH3",
3320            "type": "tuple",
3321            "internalType": "struct BN254.G1Point",
3322            "components": [
3323              {
3324                "name": "x",
3325                "type": "uint256",
3326                "internalType": "BN254.BaseField"
3327              },
3328              {
3329                "name": "y",
3330                "type": "uint256",
3331                "internalType": "BN254.BaseField"
3332              }
3333            ]
3334          },
3335          {
3336            "name": "qH4",
3337            "type": "tuple",
3338            "internalType": "struct BN254.G1Point",
3339            "components": [
3340              {
3341                "name": "x",
3342                "type": "uint256",
3343                "internalType": "BN254.BaseField"
3344              },
3345              {
3346                "name": "y",
3347                "type": "uint256",
3348                "internalType": "BN254.BaseField"
3349              }
3350            ]
3351          },
3352          {
3353            "name": "qEcc",
3354            "type": "tuple",
3355            "internalType": "struct BN254.G1Point",
3356            "components": [
3357              {
3358                "name": "x",
3359                "type": "uint256",
3360                "internalType": "BN254.BaseField"
3361              },
3362              {
3363                "name": "y",
3364                "type": "uint256",
3365                "internalType": "BN254.BaseField"
3366              }
3367            ]
3368          },
3369          {
3370            "name": "g2LSB",
3371            "type": "bytes32",
3372            "internalType": "bytes32"
3373          },
3374          {
3375            "name": "g2MSB",
3376            "type": "bytes32",
3377            "internalType": "bytes32"
3378          }
3379        ]
3380      }
3381    ],
3382    "stateMutability": "pure"
3383  },
3384  {
3385    "type": "function",
3386    "name": "blocksPerEpoch",
3387    "inputs": [],
3388    "outputs": [
3389      {
3390        "name": "",
3391        "type": "uint64",
3392        "internalType": "uint64"
3393      }
3394    ],
3395    "stateMutability": "view"
3396  },
3397  {
3398    "type": "function",
3399    "name": "currentBlockNumber",
3400    "inputs": [],
3401    "outputs": [
3402      {
3403        "name": "",
3404        "type": "uint256",
3405        "internalType": "uint256"
3406      }
3407    ],
3408    "stateMutability": "view"
3409  },
3410  {
3411    "type": "function",
3412    "name": "currentEpoch",
3413    "inputs": [],
3414    "outputs": [
3415      {
3416        "name": "",
3417        "type": "uint64",
3418        "internalType": "uint64"
3419      }
3420    ],
3421    "stateMutability": "view"
3422  },
3423  {
3424    "type": "function",
3425    "name": "disablePermissionedProverMode",
3426    "inputs": [],
3427    "outputs": [],
3428    "stateMutability": "nonpayable"
3429  },
3430  {
3431    "type": "function",
3432    "name": "epochFromBlockNumber",
3433    "inputs": [
3434      {
3435        "name": "_blockNum",
3436        "type": "uint64",
3437        "internalType": "uint64"
3438      },
3439      {
3440        "name": "_blocksPerEpoch",
3441        "type": "uint64",
3442        "internalType": "uint64"
3443      }
3444    ],
3445    "outputs": [
3446      {
3447        "name": "",
3448        "type": "uint64",
3449        "internalType": "uint64"
3450      }
3451    ],
3452    "stateMutability": "pure"
3453  },
3454  {
3455    "type": "function",
3456    "name": "epochStartBlock",
3457    "inputs": [],
3458    "outputs": [
3459      {
3460        "name": "",
3461        "type": "uint64",
3462        "internalType": "uint64"
3463      }
3464    ],
3465    "stateMutability": "view"
3466  },
3467  {
3468    "type": "function",
3469    "name": "finalizedState",
3470    "inputs": [],
3471    "outputs": [
3472      {
3473        "name": "viewNum",
3474        "type": "uint64",
3475        "internalType": "uint64"
3476      },
3477      {
3478        "name": "blockHeight",
3479        "type": "uint64",
3480        "internalType": "uint64"
3481      },
3482      {
3483        "name": "blockCommRoot",
3484        "type": "uint256",
3485        "internalType": "BN254.ScalarField"
3486      }
3487    ],
3488    "stateMutability": "view"
3489  },
3490  {
3491    "type": "function",
3492    "name": "genesisStakeTableState",
3493    "inputs": [],
3494    "outputs": [
3495      {
3496        "name": "threshold",
3497        "type": "uint256",
3498        "internalType": "uint256"
3499      },
3500      {
3501        "name": "blsKeyComm",
3502        "type": "uint256",
3503        "internalType": "BN254.ScalarField"
3504      },
3505      {
3506        "name": "schnorrKeyComm",
3507        "type": "uint256",
3508        "internalType": "BN254.ScalarField"
3509      },
3510      {
3511        "name": "amountComm",
3512        "type": "uint256",
3513        "internalType": "BN254.ScalarField"
3514      }
3515    ],
3516    "stateMutability": "view"
3517  },
3518  {
3519    "type": "function",
3520    "name": "genesisState",
3521    "inputs": [],
3522    "outputs": [
3523      {
3524        "name": "viewNum",
3525        "type": "uint64",
3526        "internalType": "uint64"
3527      },
3528      {
3529        "name": "blockHeight",
3530        "type": "uint64",
3531        "internalType": "uint64"
3532      },
3533      {
3534        "name": "blockCommRoot",
3535        "type": "uint256",
3536        "internalType": "BN254.ScalarField"
3537      }
3538    ],
3539    "stateMutability": "view"
3540  },
3541  {
3542    "type": "function",
3543    "name": "getHotShotCommitment",
3544    "inputs": [
3545      {
3546        "name": "hotShotBlockHeight",
3547        "type": "uint256",
3548        "internalType": "uint256"
3549      }
3550    ],
3551    "outputs": [
3552      {
3553        "name": "hotShotBlockCommRoot",
3554        "type": "uint256",
3555        "internalType": "BN254.ScalarField"
3556      },
3557      {
3558        "name": "hotshotBlockHeight",
3559        "type": "uint64",
3560        "internalType": "uint64"
3561      }
3562    ],
3563    "stateMutability": "view"
3564  },
3565  {
3566    "type": "function",
3567    "name": "getStateHistoryCount",
3568    "inputs": [],
3569    "outputs": [
3570      {
3571        "name": "",
3572        "type": "uint256",
3573        "internalType": "uint256"
3574      }
3575    ],
3576    "stateMutability": "view"
3577  },
3578  {
3579    "type": "function",
3580    "name": "getVersion",
3581    "inputs": [],
3582    "outputs": [
3583      {
3584        "name": "majorVersion",
3585        "type": "uint8",
3586        "internalType": "uint8"
3587      },
3588      {
3589        "name": "minorVersion",
3590        "type": "uint8",
3591        "internalType": "uint8"
3592      },
3593      {
3594        "name": "patchVersion",
3595        "type": "uint8",
3596        "internalType": "uint8"
3597      }
3598    ],
3599    "stateMutability": "pure"
3600  },
3601  {
3602    "type": "function",
3603    "name": "initialize",
3604    "inputs": [
3605      {
3606        "name": "_genesis",
3607        "type": "tuple",
3608        "internalType": "struct LightClient.LightClientState",
3609        "components": [
3610          {
3611            "name": "viewNum",
3612            "type": "uint64",
3613            "internalType": "uint64"
3614          },
3615          {
3616            "name": "blockHeight",
3617            "type": "uint64",
3618            "internalType": "uint64"
3619          },
3620          {
3621            "name": "blockCommRoot",
3622            "type": "uint256",
3623            "internalType": "BN254.ScalarField"
3624          }
3625        ]
3626      },
3627      {
3628        "name": "_genesisStakeTableState",
3629        "type": "tuple",
3630        "internalType": "struct LightClient.StakeTableState",
3631        "components": [
3632          {
3633            "name": "threshold",
3634            "type": "uint256",
3635            "internalType": "uint256"
3636          },
3637          {
3638            "name": "blsKeyComm",
3639            "type": "uint256",
3640            "internalType": "BN254.ScalarField"
3641          },
3642          {
3643            "name": "schnorrKeyComm",
3644            "type": "uint256",
3645            "internalType": "BN254.ScalarField"
3646          },
3647          {
3648            "name": "amountComm",
3649            "type": "uint256",
3650            "internalType": "BN254.ScalarField"
3651          }
3652        ]
3653      },
3654      {
3655        "name": "_stateHistoryRetentionPeriod",
3656        "type": "uint32",
3657        "internalType": "uint32"
3658      },
3659      {
3660        "name": "owner",
3661        "type": "address",
3662        "internalType": "address"
3663      }
3664    ],
3665    "outputs": [],
3666    "stateMutability": "nonpayable"
3667  },
3668  {
3669    "type": "function",
3670    "name": "initializeV2",
3671    "inputs": [
3672      {
3673        "name": "_blocksPerEpoch",
3674        "type": "uint64",
3675        "internalType": "uint64"
3676      },
3677      {
3678        "name": "_epochStartBlock",
3679        "type": "uint64",
3680        "internalType": "uint64"
3681      }
3682    ],
3683    "outputs": [],
3684    "stateMutability": "nonpayable"
3685  },
3686  {
3687    "type": "function",
3688    "name": "isEpochRoot",
3689    "inputs": [
3690      {
3691        "name": "blockHeight",
3692        "type": "uint64",
3693        "internalType": "uint64"
3694      }
3695    ],
3696    "outputs": [
3697      {
3698        "name": "",
3699        "type": "bool",
3700        "internalType": "bool"
3701      }
3702    ],
3703    "stateMutability": "view"
3704  },
3705  {
3706    "type": "function",
3707    "name": "isGtEpochRoot",
3708    "inputs": [
3709      {
3710        "name": "blockHeight",
3711        "type": "uint64",
3712        "internalType": "uint64"
3713      }
3714    ],
3715    "outputs": [
3716      {
3717        "name": "",
3718        "type": "bool",
3719        "internalType": "bool"
3720      }
3721    ],
3722    "stateMutability": "view"
3723  },
3724  {
3725    "type": "function",
3726    "name": "isPermissionedProverEnabled",
3727    "inputs": [],
3728    "outputs": [
3729      {
3730        "name": "",
3731        "type": "bool",
3732        "internalType": "bool"
3733      }
3734    ],
3735    "stateMutability": "view"
3736  },
3737  {
3738    "type": "function",
3739    "name": "lagOverEscapeHatchThreshold",
3740    "inputs": [
3741      {
3742        "name": "blockNumber",
3743        "type": "uint256",
3744        "internalType": "uint256"
3745      },
3746      {
3747        "name": "blockThreshold",
3748        "type": "uint256",
3749        "internalType": "uint256"
3750      }
3751    ],
3752    "outputs": [
3753      {
3754        "name": "",
3755        "type": "bool",
3756        "internalType": "bool"
3757      }
3758    ],
3759    "stateMutability": "view"
3760  },
3761  {
3762    "type": "function",
3763    "name": "newFinalizedState",
3764    "inputs": [
3765      {
3766        "name": "",
3767        "type": "tuple",
3768        "internalType": "struct LightClient.LightClientState",
3769        "components": [
3770          {
3771            "name": "viewNum",
3772            "type": "uint64",
3773            "internalType": "uint64"
3774          },
3775          {
3776            "name": "blockHeight",
3777            "type": "uint64",
3778            "internalType": "uint64"
3779          },
3780          {
3781            "name": "blockCommRoot",
3782            "type": "uint256",
3783            "internalType": "BN254.ScalarField"
3784          }
3785        ]
3786      },
3787      {
3788        "name": "",
3789        "type": "tuple",
3790        "internalType": "struct IPlonkVerifier.PlonkProof",
3791        "components": [
3792          {
3793            "name": "wire0",
3794            "type": "tuple",
3795            "internalType": "struct BN254.G1Point",
3796            "components": [
3797              {
3798                "name": "x",
3799                "type": "uint256",
3800                "internalType": "BN254.BaseField"
3801              },
3802              {
3803                "name": "y",
3804                "type": "uint256",
3805                "internalType": "BN254.BaseField"
3806              }
3807            ]
3808          },
3809          {
3810            "name": "wire1",
3811            "type": "tuple",
3812            "internalType": "struct BN254.G1Point",
3813            "components": [
3814              {
3815                "name": "x",
3816                "type": "uint256",
3817                "internalType": "BN254.BaseField"
3818              },
3819              {
3820                "name": "y",
3821                "type": "uint256",
3822                "internalType": "BN254.BaseField"
3823              }
3824            ]
3825          },
3826          {
3827            "name": "wire2",
3828            "type": "tuple",
3829            "internalType": "struct BN254.G1Point",
3830            "components": [
3831              {
3832                "name": "x",
3833                "type": "uint256",
3834                "internalType": "BN254.BaseField"
3835              },
3836              {
3837                "name": "y",
3838                "type": "uint256",
3839                "internalType": "BN254.BaseField"
3840              }
3841            ]
3842          },
3843          {
3844            "name": "wire3",
3845            "type": "tuple",
3846            "internalType": "struct BN254.G1Point",
3847            "components": [
3848              {
3849                "name": "x",
3850                "type": "uint256",
3851                "internalType": "BN254.BaseField"
3852              },
3853              {
3854                "name": "y",
3855                "type": "uint256",
3856                "internalType": "BN254.BaseField"
3857              }
3858            ]
3859          },
3860          {
3861            "name": "wire4",
3862            "type": "tuple",
3863            "internalType": "struct BN254.G1Point",
3864            "components": [
3865              {
3866                "name": "x",
3867                "type": "uint256",
3868                "internalType": "BN254.BaseField"
3869              },
3870              {
3871                "name": "y",
3872                "type": "uint256",
3873                "internalType": "BN254.BaseField"
3874              }
3875            ]
3876          },
3877          {
3878            "name": "prodPerm",
3879            "type": "tuple",
3880            "internalType": "struct BN254.G1Point",
3881            "components": [
3882              {
3883                "name": "x",
3884                "type": "uint256",
3885                "internalType": "BN254.BaseField"
3886              },
3887              {
3888                "name": "y",
3889                "type": "uint256",
3890                "internalType": "BN254.BaseField"
3891              }
3892            ]
3893          },
3894          {
3895            "name": "split0",
3896            "type": "tuple",
3897            "internalType": "struct BN254.G1Point",
3898            "components": [
3899              {
3900                "name": "x",
3901                "type": "uint256",
3902                "internalType": "BN254.BaseField"
3903              },
3904              {
3905                "name": "y",
3906                "type": "uint256",
3907                "internalType": "BN254.BaseField"
3908              }
3909            ]
3910          },
3911          {
3912            "name": "split1",
3913            "type": "tuple",
3914            "internalType": "struct BN254.G1Point",
3915            "components": [
3916              {
3917                "name": "x",
3918                "type": "uint256",
3919                "internalType": "BN254.BaseField"
3920              },
3921              {
3922                "name": "y",
3923                "type": "uint256",
3924                "internalType": "BN254.BaseField"
3925              }
3926            ]
3927          },
3928          {
3929            "name": "split2",
3930            "type": "tuple",
3931            "internalType": "struct BN254.G1Point",
3932            "components": [
3933              {
3934                "name": "x",
3935                "type": "uint256",
3936                "internalType": "BN254.BaseField"
3937              },
3938              {
3939                "name": "y",
3940                "type": "uint256",
3941                "internalType": "BN254.BaseField"
3942              }
3943            ]
3944          },
3945          {
3946            "name": "split3",
3947            "type": "tuple",
3948            "internalType": "struct BN254.G1Point",
3949            "components": [
3950              {
3951                "name": "x",
3952                "type": "uint256",
3953                "internalType": "BN254.BaseField"
3954              },
3955              {
3956                "name": "y",
3957                "type": "uint256",
3958                "internalType": "BN254.BaseField"
3959              }
3960            ]
3961          },
3962          {
3963            "name": "split4",
3964            "type": "tuple",
3965            "internalType": "struct BN254.G1Point",
3966            "components": [
3967              {
3968                "name": "x",
3969                "type": "uint256",
3970                "internalType": "BN254.BaseField"
3971              },
3972              {
3973                "name": "y",
3974                "type": "uint256",
3975                "internalType": "BN254.BaseField"
3976              }
3977            ]
3978          },
3979          {
3980            "name": "zeta",
3981            "type": "tuple",
3982            "internalType": "struct BN254.G1Point",
3983            "components": [
3984              {
3985                "name": "x",
3986                "type": "uint256",
3987                "internalType": "BN254.BaseField"
3988              },
3989              {
3990                "name": "y",
3991                "type": "uint256",
3992                "internalType": "BN254.BaseField"
3993              }
3994            ]
3995          },
3996          {
3997            "name": "zetaOmega",
3998            "type": "tuple",
3999            "internalType": "struct BN254.G1Point",
4000            "components": [
4001              {
4002                "name": "x",
4003                "type": "uint256",
4004                "internalType": "BN254.BaseField"
4005              },
4006              {
4007                "name": "y",
4008                "type": "uint256",
4009                "internalType": "BN254.BaseField"
4010              }
4011            ]
4012          },
4013          {
4014            "name": "wireEval0",
4015            "type": "uint256",
4016            "internalType": "BN254.ScalarField"
4017          },
4018          {
4019            "name": "wireEval1",
4020            "type": "uint256",
4021            "internalType": "BN254.ScalarField"
4022          },
4023          {
4024            "name": "wireEval2",
4025            "type": "uint256",
4026            "internalType": "BN254.ScalarField"
4027          },
4028          {
4029            "name": "wireEval3",
4030            "type": "uint256",
4031            "internalType": "BN254.ScalarField"
4032          },
4033          {
4034            "name": "wireEval4",
4035            "type": "uint256",
4036            "internalType": "BN254.ScalarField"
4037          },
4038          {
4039            "name": "sigmaEval0",
4040            "type": "uint256",
4041            "internalType": "BN254.ScalarField"
4042          },
4043          {
4044            "name": "sigmaEval1",
4045            "type": "uint256",
4046            "internalType": "BN254.ScalarField"
4047          },
4048          {
4049            "name": "sigmaEval2",
4050            "type": "uint256",
4051            "internalType": "BN254.ScalarField"
4052          },
4053          {
4054            "name": "sigmaEval3",
4055            "type": "uint256",
4056            "internalType": "BN254.ScalarField"
4057          },
4058          {
4059            "name": "prodPermZetaOmegaEval",
4060            "type": "uint256",
4061            "internalType": "BN254.ScalarField"
4062          }
4063        ]
4064      }
4065    ],
4066    "outputs": [],
4067    "stateMutability": "pure"
4068  },
4069  {
4070    "type": "function",
4071    "name": "newFinalizedState",
4072    "inputs": [
4073      {
4074        "name": "newState",
4075        "type": "tuple",
4076        "internalType": "struct LightClient.LightClientState",
4077        "components": [
4078          {
4079            "name": "viewNum",
4080            "type": "uint64",
4081            "internalType": "uint64"
4082          },
4083          {
4084            "name": "blockHeight",
4085            "type": "uint64",
4086            "internalType": "uint64"
4087          },
4088          {
4089            "name": "blockCommRoot",
4090            "type": "uint256",
4091            "internalType": "BN254.ScalarField"
4092          }
4093        ]
4094      },
4095      {
4096        "name": "nextStakeTable",
4097        "type": "tuple",
4098        "internalType": "struct LightClient.StakeTableState",
4099        "components": [
4100          {
4101            "name": "threshold",
4102            "type": "uint256",
4103            "internalType": "uint256"
4104          },
4105          {
4106            "name": "blsKeyComm",
4107            "type": "uint256",
4108            "internalType": "BN254.ScalarField"
4109          },
4110          {
4111            "name": "schnorrKeyComm",
4112            "type": "uint256",
4113            "internalType": "BN254.ScalarField"
4114          },
4115          {
4116            "name": "amountComm",
4117            "type": "uint256",
4118            "internalType": "BN254.ScalarField"
4119          }
4120        ]
4121      },
4122      {
4123        "name": "proof",
4124        "type": "tuple",
4125        "internalType": "struct IPlonkVerifier.PlonkProof",
4126        "components": [
4127          {
4128            "name": "wire0",
4129            "type": "tuple",
4130            "internalType": "struct BN254.G1Point",
4131            "components": [
4132              {
4133                "name": "x",
4134                "type": "uint256",
4135                "internalType": "BN254.BaseField"
4136              },
4137              {
4138                "name": "y",
4139                "type": "uint256",
4140                "internalType": "BN254.BaseField"
4141              }
4142            ]
4143          },
4144          {
4145            "name": "wire1",
4146            "type": "tuple",
4147            "internalType": "struct BN254.G1Point",
4148            "components": [
4149              {
4150                "name": "x",
4151                "type": "uint256",
4152                "internalType": "BN254.BaseField"
4153              },
4154              {
4155                "name": "y",
4156                "type": "uint256",
4157                "internalType": "BN254.BaseField"
4158              }
4159            ]
4160          },
4161          {
4162            "name": "wire2",
4163            "type": "tuple",
4164            "internalType": "struct BN254.G1Point",
4165            "components": [
4166              {
4167                "name": "x",
4168                "type": "uint256",
4169                "internalType": "BN254.BaseField"
4170              },
4171              {
4172                "name": "y",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              }
4176            ]
4177          },
4178          {
4179            "name": "wire3",
4180            "type": "tuple",
4181            "internalType": "struct BN254.G1Point",
4182            "components": [
4183              {
4184                "name": "x",
4185                "type": "uint256",
4186                "internalType": "BN254.BaseField"
4187              },
4188              {
4189                "name": "y",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              }
4193            ]
4194          },
4195          {
4196            "name": "wire4",
4197            "type": "tuple",
4198            "internalType": "struct BN254.G1Point",
4199            "components": [
4200              {
4201                "name": "x",
4202                "type": "uint256",
4203                "internalType": "BN254.BaseField"
4204              },
4205              {
4206                "name": "y",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              }
4210            ]
4211          },
4212          {
4213            "name": "prodPerm",
4214            "type": "tuple",
4215            "internalType": "struct BN254.G1Point",
4216            "components": [
4217              {
4218                "name": "x",
4219                "type": "uint256",
4220                "internalType": "BN254.BaseField"
4221              },
4222              {
4223                "name": "y",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              }
4227            ]
4228          },
4229          {
4230            "name": "split0",
4231            "type": "tuple",
4232            "internalType": "struct BN254.G1Point",
4233            "components": [
4234              {
4235                "name": "x",
4236                "type": "uint256",
4237                "internalType": "BN254.BaseField"
4238              },
4239              {
4240                "name": "y",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              }
4244            ]
4245          },
4246          {
4247            "name": "split1",
4248            "type": "tuple",
4249            "internalType": "struct BN254.G1Point",
4250            "components": [
4251              {
4252                "name": "x",
4253                "type": "uint256",
4254                "internalType": "BN254.BaseField"
4255              },
4256              {
4257                "name": "y",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              }
4261            ]
4262          },
4263          {
4264            "name": "split2",
4265            "type": "tuple",
4266            "internalType": "struct BN254.G1Point",
4267            "components": [
4268              {
4269                "name": "x",
4270                "type": "uint256",
4271                "internalType": "BN254.BaseField"
4272              },
4273              {
4274                "name": "y",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              }
4278            ]
4279          },
4280          {
4281            "name": "split3",
4282            "type": "tuple",
4283            "internalType": "struct BN254.G1Point",
4284            "components": [
4285              {
4286                "name": "x",
4287                "type": "uint256",
4288                "internalType": "BN254.BaseField"
4289              },
4290              {
4291                "name": "y",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              }
4295            ]
4296          },
4297          {
4298            "name": "split4",
4299            "type": "tuple",
4300            "internalType": "struct BN254.G1Point",
4301            "components": [
4302              {
4303                "name": "x",
4304                "type": "uint256",
4305                "internalType": "BN254.BaseField"
4306              },
4307              {
4308                "name": "y",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              }
4312            ]
4313          },
4314          {
4315            "name": "zeta",
4316            "type": "tuple",
4317            "internalType": "struct BN254.G1Point",
4318            "components": [
4319              {
4320                "name": "x",
4321                "type": "uint256",
4322                "internalType": "BN254.BaseField"
4323              },
4324              {
4325                "name": "y",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              }
4329            ]
4330          },
4331          {
4332            "name": "zetaOmega",
4333            "type": "tuple",
4334            "internalType": "struct BN254.G1Point",
4335            "components": [
4336              {
4337                "name": "x",
4338                "type": "uint256",
4339                "internalType": "BN254.BaseField"
4340              },
4341              {
4342                "name": "y",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              }
4346            ]
4347          },
4348          {
4349            "name": "wireEval0",
4350            "type": "uint256",
4351            "internalType": "BN254.ScalarField"
4352          },
4353          {
4354            "name": "wireEval1",
4355            "type": "uint256",
4356            "internalType": "BN254.ScalarField"
4357          },
4358          {
4359            "name": "wireEval2",
4360            "type": "uint256",
4361            "internalType": "BN254.ScalarField"
4362          },
4363          {
4364            "name": "wireEval3",
4365            "type": "uint256",
4366            "internalType": "BN254.ScalarField"
4367          },
4368          {
4369            "name": "wireEval4",
4370            "type": "uint256",
4371            "internalType": "BN254.ScalarField"
4372          },
4373          {
4374            "name": "sigmaEval0",
4375            "type": "uint256",
4376            "internalType": "BN254.ScalarField"
4377          },
4378          {
4379            "name": "sigmaEval1",
4380            "type": "uint256",
4381            "internalType": "BN254.ScalarField"
4382          },
4383          {
4384            "name": "sigmaEval2",
4385            "type": "uint256",
4386            "internalType": "BN254.ScalarField"
4387          },
4388          {
4389            "name": "sigmaEval3",
4390            "type": "uint256",
4391            "internalType": "BN254.ScalarField"
4392          },
4393          {
4394            "name": "prodPermZetaOmegaEval",
4395            "type": "uint256",
4396            "internalType": "BN254.ScalarField"
4397          }
4398        ]
4399      }
4400    ],
4401    "outputs": [],
4402    "stateMutability": "nonpayable"
4403  },
4404  {
4405    "type": "function",
4406    "name": "owner",
4407    "inputs": [],
4408    "outputs": [
4409      {
4410        "name": "",
4411        "type": "address",
4412        "internalType": "address"
4413      }
4414    ],
4415    "stateMutability": "view"
4416  },
4417  {
4418    "type": "function",
4419    "name": "permissionedProver",
4420    "inputs": [],
4421    "outputs": [
4422      {
4423        "name": "",
4424        "type": "address",
4425        "internalType": "address"
4426      }
4427    ],
4428    "stateMutability": "view"
4429  },
4430  {
4431    "type": "function",
4432    "name": "proxiableUUID",
4433    "inputs": [],
4434    "outputs": [
4435      {
4436        "name": "",
4437        "type": "bytes32",
4438        "internalType": "bytes32"
4439      }
4440    ],
4441    "stateMutability": "view"
4442  },
4443  {
4444    "type": "function",
4445    "name": "renounceOwnership",
4446    "inputs": [],
4447    "outputs": [],
4448    "stateMutability": "nonpayable"
4449  },
4450  {
4451    "type": "function",
4452    "name": "setPermissionedProver",
4453    "inputs": [
4454      {
4455        "name": "prover",
4456        "type": "address",
4457        "internalType": "address"
4458      }
4459    ],
4460    "outputs": [],
4461    "stateMutability": "nonpayable"
4462  },
4463  {
4464    "type": "function",
4465    "name": "setStateHistoryRetentionPeriod",
4466    "inputs": [
4467      {
4468        "name": "historySeconds",
4469        "type": "uint32",
4470        "internalType": "uint32"
4471      }
4472    ],
4473    "outputs": [],
4474    "stateMutability": "nonpayable"
4475  },
4476  {
4477    "type": "function",
4478    "name": "setstateHistoryRetentionPeriod",
4479    "inputs": [
4480      {
4481        "name": "historySeconds",
4482        "type": "uint32",
4483        "internalType": "uint32"
4484      }
4485    ],
4486    "outputs": [],
4487    "stateMutability": "nonpayable"
4488  },
4489  {
4490    "type": "function",
4491    "name": "stateHistoryCommitments",
4492    "inputs": [
4493      {
4494        "name": "",
4495        "type": "uint256",
4496        "internalType": "uint256"
4497      }
4498    ],
4499    "outputs": [
4500      {
4501        "name": "l1BlockHeight",
4502        "type": "uint64",
4503        "internalType": "uint64"
4504      },
4505      {
4506        "name": "l1BlockTimestamp",
4507        "type": "uint64",
4508        "internalType": "uint64"
4509      },
4510      {
4511        "name": "hotShotBlockHeight",
4512        "type": "uint64",
4513        "internalType": "uint64"
4514      },
4515      {
4516        "name": "hotShotBlockCommRoot",
4517        "type": "uint256",
4518        "internalType": "BN254.ScalarField"
4519      }
4520    ],
4521    "stateMutability": "view"
4522  },
4523  {
4524    "type": "function",
4525    "name": "stateHistoryFirstIndex",
4526    "inputs": [],
4527    "outputs": [
4528      {
4529        "name": "",
4530        "type": "uint64",
4531        "internalType": "uint64"
4532      }
4533    ],
4534    "stateMutability": "view"
4535  },
4536  {
4537    "type": "function",
4538    "name": "stateHistoryRetentionPeriod",
4539    "inputs": [],
4540    "outputs": [
4541      {
4542        "name": "",
4543        "type": "uint32",
4544        "internalType": "uint32"
4545      }
4546    ],
4547    "stateMutability": "view"
4548  },
4549  {
4550    "type": "function",
4551    "name": "transferOwnership",
4552    "inputs": [
4553      {
4554        "name": "newOwner",
4555        "type": "address",
4556        "internalType": "address"
4557      }
4558    ],
4559    "outputs": [],
4560    "stateMutability": "nonpayable"
4561  },
4562  {
4563    "type": "function",
4564    "name": "updateEpochStartBlock",
4565    "inputs": [
4566      {
4567        "name": "newEpochStartBlock",
4568        "type": "uint64",
4569        "internalType": "uint64"
4570      }
4571    ],
4572    "outputs": [],
4573    "stateMutability": "nonpayable"
4574  },
4575  {
4576    "type": "function",
4577    "name": "upgradeToAndCall",
4578    "inputs": [
4579      {
4580        "name": "newImplementation",
4581        "type": "address",
4582        "internalType": "address"
4583      },
4584      {
4585        "name": "data",
4586        "type": "bytes",
4587        "internalType": "bytes"
4588      }
4589    ],
4590    "outputs": [],
4591    "stateMutability": "payable"
4592  },
4593  {
4594    "type": "function",
4595    "name": "votingStakeTableState",
4596    "inputs": [],
4597    "outputs": [
4598      {
4599        "name": "threshold",
4600        "type": "uint256",
4601        "internalType": "uint256"
4602      },
4603      {
4604        "name": "blsKeyComm",
4605        "type": "uint256",
4606        "internalType": "BN254.ScalarField"
4607      },
4608      {
4609        "name": "schnorrKeyComm",
4610        "type": "uint256",
4611        "internalType": "BN254.ScalarField"
4612      },
4613      {
4614        "name": "amountComm",
4615        "type": "uint256",
4616        "internalType": "BN254.ScalarField"
4617      }
4618    ],
4619    "stateMutability": "view"
4620  },
4621  {
4622    "type": "event",
4623    "name": "Initialized",
4624    "inputs": [
4625      {
4626        "name": "version",
4627        "type": "uint64",
4628        "indexed": false,
4629        "internalType": "uint64"
4630      }
4631    ],
4632    "anonymous": false
4633  },
4634  {
4635    "type": "event",
4636    "name": "NewEpoch",
4637    "inputs": [
4638      {
4639        "name": "epoch",
4640        "type": "uint64",
4641        "indexed": false,
4642        "internalType": "uint64"
4643      }
4644    ],
4645    "anonymous": false
4646  },
4647  {
4648    "type": "event",
4649    "name": "NewState",
4650    "inputs": [
4651      {
4652        "name": "viewNum",
4653        "type": "uint64",
4654        "indexed": true,
4655        "internalType": "uint64"
4656      },
4657      {
4658        "name": "blockHeight",
4659        "type": "uint64",
4660        "indexed": true,
4661        "internalType": "uint64"
4662      },
4663      {
4664        "name": "blockCommRoot",
4665        "type": "uint256",
4666        "indexed": false,
4667        "internalType": "BN254.ScalarField"
4668      }
4669    ],
4670    "anonymous": false
4671  },
4672  {
4673    "type": "event",
4674    "name": "OwnershipTransferred",
4675    "inputs": [
4676      {
4677        "name": "previousOwner",
4678        "type": "address",
4679        "indexed": true,
4680        "internalType": "address"
4681      },
4682      {
4683        "name": "newOwner",
4684        "type": "address",
4685        "indexed": true,
4686        "internalType": "address"
4687      }
4688    ],
4689    "anonymous": false
4690  },
4691  {
4692    "type": "event",
4693    "name": "PermissionedProverNotRequired",
4694    "inputs": [],
4695    "anonymous": false
4696  },
4697  {
4698    "type": "event",
4699    "name": "PermissionedProverRequired",
4700    "inputs": [
4701      {
4702        "name": "permissionedProver",
4703        "type": "address",
4704        "indexed": false,
4705        "internalType": "address"
4706      }
4707    ],
4708    "anonymous": false
4709  },
4710  {
4711    "type": "event",
4712    "name": "Upgrade",
4713    "inputs": [
4714      {
4715        "name": "implementation",
4716        "type": "address",
4717        "indexed": false,
4718        "internalType": "address"
4719      }
4720    ],
4721    "anonymous": false
4722  },
4723  {
4724    "type": "event",
4725    "name": "Upgraded",
4726    "inputs": [
4727      {
4728        "name": "implementation",
4729        "type": "address",
4730        "indexed": true,
4731        "internalType": "address"
4732      }
4733    ],
4734    "anonymous": false
4735  },
4736  {
4737    "type": "error",
4738    "name": "AddressEmptyCode",
4739    "inputs": [
4740      {
4741        "name": "target",
4742        "type": "address",
4743        "internalType": "address"
4744      }
4745    ]
4746  },
4747  {
4748    "type": "error",
4749    "name": "DeprecatedApi",
4750    "inputs": []
4751  },
4752  {
4753    "type": "error",
4754    "name": "ERC1967InvalidImplementation",
4755    "inputs": [
4756      {
4757        "name": "implementation",
4758        "type": "address",
4759        "internalType": "address"
4760      }
4761    ]
4762  },
4763  {
4764    "type": "error",
4765    "name": "ERC1967NonPayable",
4766    "inputs": []
4767  },
4768  {
4769    "type": "error",
4770    "name": "FailedInnerCall",
4771    "inputs": []
4772  },
4773  {
4774    "type": "error",
4775    "name": "InsufficientSnapshotHistory",
4776    "inputs": []
4777  },
4778  {
4779    "type": "error",
4780    "name": "InvalidAddress",
4781    "inputs": []
4782  },
4783  {
4784    "type": "error",
4785    "name": "InvalidArgs",
4786    "inputs": []
4787  },
4788  {
4789    "type": "error",
4790    "name": "InvalidHotShotBlockForCommitmentCheck",
4791    "inputs": []
4792  },
4793  {
4794    "type": "error",
4795    "name": "InvalidInitialization",
4796    "inputs": []
4797  },
4798  {
4799    "type": "error",
4800    "name": "InvalidMaxStateHistory",
4801    "inputs": []
4802  },
4803  {
4804    "type": "error",
4805    "name": "InvalidProof",
4806    "inputs": []
4807  },
4808  {
4809    "type": "error",
4810    "name": "MissingEpochRootUpdate",
4811    "inputs": []
4812  },
4813  {
4814    "type": "error",
4815    "name": "NoChangeRequired",
4816    "inputs": []
4817  },
4818  {
4819    "type": "error",
4820    "name": "NotInitializing",
4821    "inputs": []
4822  },
4823  {
4824    "type": "error",
4825    "name": "OutdatedState",
4826    "inputs": []
4827  },
4828  {
4829    "type": "error",
4830    "name": "OwnableInvalidOwner",
4831    "inputs": [
4832      {
4833        "name": "owner",
4834        "type": "address",
4835        "internalType": "address"
4836      }
4837    ]
4838  },
4839  {
4840    "type": "error",
4841    "name": "OwnableUnauthorizedAccount",
4842    "inputs": [
4843      {
4844        "name": "account",
4845        "type": "address",
4846        "internalType": "address"
4847      }
4848    ]
4849  },
4850  {
4851    "type": "error",
4852    "name": "ProverNotPermissioned",
4853    "inputs": []
4854  },
4855  {
4856    "type": "error",
4857    "name": "UUPSUnauthorizedCallContext",
4858    "inputs": []
4859  },
4860  {
4861    "type": "error",
4862    "name": "UUPSUnsupportedProxiableUUID",
4863    "inputs": [
4864      {
4865        "name": "slot",
4866        "type": "bytes32",
4867        "internalType": "bytes32"
4868      }
4869    ]
4870  },
4871  {
4872    "type": "error",
4873    "name": "WrongStakeTableUsed",
4874    "inputs": []
4875  }
4876]
4877```*/
4878#[allow(
4879    non_camel_case_types,
4880    non_snake_case,
4881    clippy::pub_underscore_fields,
4882    clippy::style,
4883    clippy::empty_structs_with_brackets
4884)]
4885pub mod LightClientV2 {
4886    use super::*;
4887    use alloy::sol_types as alloy_sol_types;
4888    /// The creation / init bytecode of the contract.
4889    ///
4890    /// ```text
4891    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161346f6100f95f395f8181611b2701528181611b500152611ccd015261346f5ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461274c565b610799565b005b348015610237575f5ffd5b5061024b610246366004612765565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b604051610280919061277c565b348015610322575f5ffd5b5061022a610331366004612993565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c55565b610921565b348015610360575f5ffd5b5061037461036f366004612993565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612993565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c9c565b610a31565b61022a6104a8366004612cb5565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612db8565b610afe565b348015610513575f5ffd5b506103aa610e31565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a610555366004612765565b610e56565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612dfc565b610f81565b3480156105dd575f5ffd5b5061022a6105ec366004612c9c565b610ff0565b3480156105fc575f5ffd5b5061022a61060b366004612e24565b611079565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e79565b3480156106ad575f5ffd5b5061022a6106bc366004612dfc565b61119b565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612eae565b6112ff565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a61078036600461274c565b611457565b348015610790575f5ffd5b50600954610426565b6107a1611496565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d6124b2565b6108a56114f1565b905090565b6108b2611496565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f81565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ee2565b6109879190612f15565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612f15565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f42565b600a546001600160401b0391821691610a20911684612f15565b6001600160401b0316115b92915050565b610a39611496565b610a4281610ff0565b50565b610a4d611b1c565b610a5682611bc0565b610a608282611c01565b5050565b5f610a6d611cc2565b505f5160206134435f395f51905f5290565b610a87611496565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af5611496565b610aeb5f611d0b565b6008546001600160a01b031615158015610b2357506008546001600160a01b03163314155b15610b41576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b7a575060065460208401516001600160401b03600160401b9092048216911611155b15610b985760405163051c46ef60e01b815260040160405180910390fd5b610ba58360400151611d7b565b610bb28260200151611d7b565b610bbf8260400151611d7b565b610bcc8260600151611d7b565b5f610bd5610e31565b6020850151600a549192505f91610bf591906001600160401b0316610f81565b600a549091506001600160401b03600160801b909104811690821610610c4057610c22856020015161099c565b15610c405760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610cf3576002610c6a8383612f42565b6001600160401b031610610c915760405163080ae8d960e01b815260040160405180910390fd5b610c9c826001612ee2565b6001600160401b0316816001600160401b0316148015610cd55750600654610cd390600160401b90046001600160401b031661093a565b155b15610cf35760405163080ae8d960e01b815260040160405180910390fd5b610cfe858585611deb565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d5d5750610d5d856020015161093a565b15610dc7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dab826001612ee2565b6040516001600160401b03909116815260200160405180910390a15b610dd2434287611f62565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e2291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f81565b600980545f91829190610e6a600183612f61565b81548110610e7a57610e7a612f74565b5f918252602090912060029091020154600160801b90046001600160401b03168410610eb957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f7a578460098281548110610ee957610ee9612f74565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f725760098181548110610f2257610f22612f74565b905f5260205f2090600202016001015460098281548110610f4557610f45612f74565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ecd565b5050915091565b5f816001600160401b03165f03610f9957505f610a2b565b826001600160401b03165f03610fb157506001610a2b565b610fbb8284612f15565b6001600160401b03165f03610fdb57610fd48284612f88565b9050610a2b565b610fe58284612f88565b610fd4906001612ee2565b610ff8611496565b610e108163ffffffff16108061101757506301e133808163ffffffff16115b80611035575060085463ffffffff600160a01b909104811690821611155b15611053576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110bd5750825b90505f826001600160401b031660011480156110d85750303b155b9050811580156110e6575080155b156111045760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561112e57845460ff60401b1916600160401b1785555b6111378661214b565b61113f61215c565b61114a898989612164565b831561119057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111e4575080546001600160401b03808416911610155b156112025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b17825560059085161161124a576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112938385610f81565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611310575080155b8061135a5750600854600980549091600160c01b90046001600160401b031690811061133e5761133e612f74565b5f9182526020909120600290910201546001600160401b031684105b156113785760405163b0b4387760e01b815260040160405180910390fd5b5f8080611386600185612f61565b90505b8161142257600854600160c01b90046001600160401b031681106114225786600982815481106113bb576113bb612f74565b5f9182526020909120600290910201546001600160401b0316116114105760019150600981815481106113f0576113f0612f74565b5f9182526020909120600290910201546001600160401b03169250611422565b8061141a81612fb5565b915050611389565b816114405760405163b0b4387760e01b815260040160405180910390fd5b8561144b8489612f61565b11979650505050505050565b61145f611496565b6001600160a01b03811661148d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281611d0b565b336114c87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b8152336004820152602401611484565b6114f96124b2565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ba257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b965f5160206134435f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611bc8611496565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5b575060408051601f3d908101601f19168201909252611c5891810190612fca565b60015b611c8357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611484565b5f5160206134435f395f51905f528114611cb357604051632a87526960e21b815260048101829052602401611484565b611cbd8383612290565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611484565b5f611df4610895565b9050611dfe612717565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e6e5750611e6e856020015161093a565b15611ea057602084015160e0820152604084015161010082015260608401516101208201528351610140820152611ec4565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eff908590859088906004016131c3565b602060405180830381865af4158015611f1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3e91906133e3565b611f5b576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fd7575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611fa257611fa2612f74565b5f918252602090912060029091020154611fcc90600160401b90046001600160401b031684612f42565b6001600160401b0316115b1561206a57600854600980549091600160c01b90046001600160401b031690811061200457612004612f74565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861204483613402565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121536122e5565b610a428161232e565b610aeb6122e5565b82516001600160401b0316151580612188575060208301516001600160401b031615155b8061219557506020820151155b806121a257506040820151155b806121af57506060820151155b806121b957508151155b806121cb5750610e108163ffffffff16105b806121df57506301e133808163ffffffff16115b156121fd576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61229982612336565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122dd57611cbd8282612399565b610a6061240b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b61145f6122e5565b806001600160a01b03163b5f0361236b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611484565b5f5160206134435f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516123b5919061342c565b5f60405180830381855af49150503d805f81146123ed576040519150601f19603f3d011682016040523d82523d5f602084013e6123f2565b606091505b509150915061240285838361242a565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b60608261243f5761243a82612489565b612482565b815115801561245657506001600160a01b0384163b155b1561247f57604051639996b31560e01b81526001600160a01b0385166004820152602401611484565b50805b9392505050565b8051156124995780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124e560405180604001604052805f81526020015f81525090565b815260200161250560405180604001604052805f81526020015f81525090565b815260200161252560405180604001604052805f81526020015f81525090565b815260200161254560405180604001604052805f81526020015f81525090565b815260200161256560405180604001604052805f81526020015f81525090565b815260200161258560405180604001604052805f81526020015f81525090565b81526020016125a560405180604001604052805f81526020015f81525090565b81526020016125c560405180604001604052805f81526020015f81525090565b81526020016125e560405180604001604052805f81526020015f81525090565b815260200161260560405180604001604052805f81526020015f81525090565b815260200161262560405180604001604052805f81526020015f81525090565b815260200161264560405180604001604052805f81526020015f81525090565b815260200161266560405180604001604052805f81526020015f81525090565b815260200161268560405180604001604052805f81526020015f81525090565b81526020016126a560405180604001604052805f81526020015f81525090565b81526020016126c560405180604001604052805f81526020015f81525090565b81526020016126e560405180604001604052805f81526020015f81525090565b815260200161270560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f6020828403121561275c575f5ffd5b61248282612736565b5f60208284031215612775575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516127ae604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f602082840312156129a3575f5ffd5b6124828261297d565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129e3576129e36129ac565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a1157612a116129ac565b604052919050565b5f60608284031215612a29575f5ffd5b604051606081016001600160401b0381118282101715612a4b57612a4b6129ac565b604052905080612a5a8361297d565b8152612a686020840161297d565b6020820152604092830135920191909152919050565b5f60408284031215612a8e575f5ffd5b604080519081016001600160401b0381118282101715612ab057612ab06129ac565b604052823581526020928301359281019290925250919050565b5f6104808284031215612adb575f5ffd5b612ae36129c0565b9050612aef8383612a7e565b8152612afe8360408401612a7e565b6020820152612b108360808401612a7e565b6040820152612b228360c08401612a7e565b6060820152612b35836101008401612a7e565b6080820152612b48836101408401612a7e565b60a0820152612b5b836101808401612a7e565b60c0820152612b6e836101c08401612a7e565b60e0820152612b81836102008401612a7e565b610100820152612b95836102408401612a7e565b610120820152612ba9836102808401612a7e565b610140820152612bbd836102c08401612a7e565b610160820152612bd1836103008401612a7e565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c67575f5ffd5b612c718484612a19565b9150612c808460608501612aca565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612cac575f5ffd5b61248282612c89565b5f5f60408385031215612cc6575f5ffd5b612ccf83612736565b915060208301356001600160401b03811115612ce9575f5ffd5b8301601f81018513612cf9575f5ffd5b80356001600160401b03811115612d1257612d126129ac565b612d25601f8201601f19166020016129e9565b818152866020838501011115612d39575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d68575f5ffd5b604051608081016001600160401b0381118282101715612d8a57612d8a6129ac565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612dcb575f5ffd5b612dd58585612a19565b9250612de48560608601612d58565b9150612df38560e08601612aca565b90509250925092565b5f5f60408385031215612e0d575f5ffd5b612e168361297d565b9150612c806020840161297d565b5f5f5f5f6101208587031215612e38575f5ffd5b612e428686612a19565b9350612e518660608701612d58565b9250612e5f60e08601612c89565b9150612e6e6101008601612736565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ebf575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612ece565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f2d57612f2d612f01565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612ece565b81810381811115610a2b57610a2b612ece565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612fa057612fa0612f01565b806001600160401b0384160491505092915050565b5f81612fc357612fc3612ece565b505f190190565b5f60208284031215612fda575f5ffd5b5051919050565b805f5b600b811015613003578151845260209384019390910190600101612fe4565b50505050565b61301e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131f5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133cd610500830185612fe1565b6133db610660830184613009565b949350505050565b5f602082840312156133f3575f5ffd5b81518015158114612482575f5ffd5b5f6001600160401b0382166001600160401b03810361342357613423612ece565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4892    /// ```
4893    #[rustfmt::skip]
4894    #[allow(clippy::all)]
4895    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4896        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[`\x80Qa4oa\0\xF9_9_\x81\x81a\x1B'\x01R\x81\x81a\x1BP\x01Ra\x1C\xCD\x01Ra4o_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'LV[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'eV[a\x08LV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'|V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\x93V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,UV[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\x93V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\x93V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x9CV[a\n1V[a\x02*a\x04\xA86`\x04a,\xB5V[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xB8V[a\n\xFEV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0E1V[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'eV[a\x0EVV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xFCV[a\x0F\x81V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x9CV[a\x0F\xF0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.$V[a\x10yV[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.yV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xFCV[a\x11\x9BV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\xAEV[a\x12\xFFV[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'LV[a\x14WV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xF7W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08[W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\x9Da$\xB2V[a\x08\xA5a\x14\xF1V[\x90P\x90V[a\x08\xB2a\x14\x96V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x81V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xE2V[a\t\x87\x91\x90a/\x15V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a/\x15V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/BV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a/\x15V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\x96V[a\nB\x81a\x0F\xF0V[PV[a\nMa\x1B\x1CV[a\nV\x82a\x1B\xC0V[a\n`\x82\x82a\x1C\x01V[PPV[_a\nma\x1C\xC2V[P_Q` a4C_9_Q\x90_R\x90V[a\n\x87a\x14\x96V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\n\xF5a\x14\x96V[a\n\xEB_a\x1D\x0BV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B#WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BAW`@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\x0BzWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\x98W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xA5\x83`@\x01Qa\x1D{V[a\x0B\xB2\x82` \x01Qa\x1D{V[a\x0B\xBF\x82`@\x01Qa\x1D{V[a\x0B\xCC\x82``\x01Qa\x1D{V[_a\x0B\xD5a\x0E1V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0B\xF5\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x81V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C@Wa\x0C\"\x85` \x01Qa\t\x9CV[\x15a\x0C@W`@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\x0C\xF3W`\x02a\x0Cj\x83\x83a/BV[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\x91W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x9C\x82`\x01a.\xE2V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xD5WP`\x06Ta\x0C\xD3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\x0C\xF3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xFE\x85\x85\x85a\x1D\xEBV[\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\r]WPa\r]\x85` \x01Qa\t:V[\x15a\r\xC7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xAB\x82`\x01a.\xE2V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xD2CB\x87a\x1FbV[\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\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x81V[`\t\x80T_\x91\x82\x91\x90a\x0Ej`\x01\x83a/aV[\x81T\x81\x10a\x0EzWa\x0Eza/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xB9W`@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\x0FzW\x84`\t\x82\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0FrW`\t\x81\x81T\x81\x10a\x0F\"Wa\x0F\"a/tV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FEWa\x0FEa/tV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0E\xCDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\x99WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xB1WP`\x01a\n+V[a\x0F\xBB\x82\x84a/\x15V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xDBWa\x0F\xD4\x82\x84a/\x88V[\x90Pa\n+V[a\x0F\xE5\x82\x84a/\x88V[a\x0F\xD4\x90`\x01a.\xE2V[a\x0F\xF8a\x14\x96V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x17WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x105WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10SW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xBDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xD8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xE6WP\x80\x15[\x15a\x11\x04W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11.W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x117\x86a!KV[a\x11?a!\\V[a\x11J\x89\x89\x89a!dV[\x83\x15a\x11\x90W\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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xE4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x02W`@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\x12JW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\x93\x83\x85a\x0F\x81V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x13\x10WP\x80\x15[\x80a\x13ZWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13>Wa\x13>a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13xW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x86`\x01\x85a/aV[\x90P[\x81a\x14\"W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\"W\x86`\t\x82\x81T\x81\x10a\x13\xBBWa\x13\xBBa/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x10W`\x01\x91P`\t\x81\x81T\x81\x10a\x13\xF0Wa\x13\xF0a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\"V[\x80a\x14\x1A\x81a/\xB5V[\x91PPa\x13\x89V[\x81a\x14@W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14K\x84\x89a/aV[\x11\x97\x96PPPPPPPV[a\x14_a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x8DW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\x1D\x0BV[3a\x14\xC8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x84V[a\x14\xF9a$\xB2V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1B\xA2WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1B\x96_Q` a4C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xC8a\x14\x96V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08AV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C[WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1CX\x91\x81\x01\x90a/\xCAV[`\x01[a\x1C\x83W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4C_9_Q\x90_R\x81\x14a\x1C\xB3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x84V[a\x1C\xBD\x83\x83a\"\x90V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\x84V[_a\x1D\xF4a\x08\x95V[\x90Pa\x1D\xFEa'\x17V[\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\x1EnWPa\x1En\x85` \x01Qa\t:V[\x15a\x1E\xA0W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xC4V[`\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\x1E\xFF\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xC3V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\x1AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F>\x91\x90a3\xE3V[a\x1F[W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xD7WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xA2Wa\x1F\xA2a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xCC\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/BV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a jW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \x04Wa \x04a/tV[_\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 D\x83a4\x02V[\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!Sa\"\xE5V[a\nB\x81a#.V[a\n\xEBa\"\xE5V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x88WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x95WP` \x82\x01Q\x15[\x80a!\xA2WP`@\x82\x01Q\x15[\x80a!\xAFWP``\x82\x01Q\x15[\x80a!\xB9WP\x81Q\x15[\x80a!\xCBWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xDFWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xFDW`@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[a\"\x99\x82a#6V[`@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\"\xDDWa\x1C\xBD\x82\x82a#\x99V[a\n`a$\x0BV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14_a\"\xE5V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#kW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4C_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#\xB5\x91\x90a4,V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xEDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF2V[``\x91P[P\x91P\x91Pa$\x02\x85\x83\x83a$*V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$?Wa$:\x82a$\x89V[a$\x82V[\x81Q\x15\x80\x15a$VWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\x7FW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x84V[P\x80[\x93\x92PPPV[\x80Q\x15a$\x99W\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$\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'\\W__\xFD[a$\x82\x82a'6V[_` \x82\x84\x03\x12\x15a'uW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\xAE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\xA3W__\xFD[a$\x82\x82a)}V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xE3Wa)\xE3a)\xACV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x11Wa*\x11a)\xACV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*)W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*KWa*Ka)\xACV[`@R\x90P\x80a*Z\x83a)}V[\x81Ra*h` \x84\x01a)}V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\x8EW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xB0Wa*\xB0a)\xACV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xDBW__\xFD[a*\xE3a)\xC0V[\x90Pa*\xEF\x83\x83a*~V[\x81Ra*\xFE\x83`@\x84\x01a*~V[` \x82\x01Ra+\x10\x83`\x80\x84\x01a*~V[`@\x82\x01Ra+\"\x83`\xC0\x84\x01a*~V[``\x82\x01Ra+5\x83a\x01\0\x84\x01a*~V[`\x80\x82\x01Ra+H\x83a\x01@\x84\x01a*~V[`\xA0\x82\x01Ra+[\x83a\x01\x80\x84\x01a*~V[`\xC0\x82\x01Ra+n\x83a\x01\xC0\x84\x01a*~V[`\xE0\x82\x01Ra+\x81\x83a\x02\0\x84\x01a*~V[a\x01\0\x82\x01Ra+\x95\x83a\x02@\x84\x01a*~V[a\x01 \x82\x01Ra+\xA9\x83a\x02\x80\x84\x01a*~V[a\x01@\x82\x01Ra+\xBD\x83a\x02\xC0\x84\x01a*~V[a\x01`\x82\x01Ra+\xD1\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,gW__\xFD[a,q\x84\x84a*\x19V[\x91Pa,\x80\x84``\x85\x01a*\xCAV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\xACW__\xFD[a$\x82\x82a,\x89V[__`@\x83\x85\x03\x12\x15a,\xC6W__\xFD[a,\xCF\x83a'6V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xE9W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x12Wa-\x12a)\xACV[a-%`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xE9V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-9W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-hW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8AWa-\x8Aa)\xACV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\xCBW__\xFD[a-\xD5\x85\x85a*\x19V[\x92Pa-\xE4\x85``\x86\x01a-XV[\x91Pa-\xF3\x85`\xE0\x86\x01a*\xCAV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.\rW__\xFD[a.\x16\x83a)}V[\x91Pa,\x80` \x84\x01a)}V[____a\x01 \x85\x87\x03\x12\x15a.8W__\xFD[a.B\x86\x86a*\x19V[\x93Pa.Q\x86``\x87\x01a-XV[\x92Pa._`\xE0\x86\x01a,\x89V[\x91Pa.na\x01\0\x86\x01a'6V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a.\xBFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\xCEV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/-Wa/-a/\x01V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n+Wa\n+a.\xCEV[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xCEV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\xA0Wa/\xA0a/\x01V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xC3Wa/\xC3a.\xCEV[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xDAW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a0\x03W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xE4V[PPPPV[a0\x1E\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xF5`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra3\xCDa\x05\0\x83\x01\x85a/\xE1V[a3\xDBa\x06`\x83\x01\x84a0\tV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xF3W__\xFD[\x81Q\x80\x15\x15\x81\x14a$\x82W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4#Wa4#a.\xCEV[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4897    );
4898    /// The runtime bytecode of the contract, as deployed on the network.
4899    ///
4900    /// ```text
4901    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461274c565b610799565b005b348015610237575f5ffd5b5061024b610246366004612765565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b604051610280919061277c565b348015610322575f5ffd5b5061022a610331366004612993565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c55565b610921565b348015610360575f5ffd5b5061037461036f366004612993565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612993565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c9c565b610a31565b61022a6104a8366004612cb5565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612db8565b610afe565b348015610513575f5ffd5b506103aa610e31565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a610555366004612765565b610e56565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612dfc565b610f81565b3480156105dd575f5ffd5b5061022a6105ec366004612c9c565b610ff0565b3480156105fc575f5ffd5b5061022a61060b366004612e24565b611079565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e79565b3480156106ad575f5ffd5b5061022a6106bc366004612dfc565b61119b565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612eae565b6112ff565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a61078036600461274c565b611457565b348015610790575f5ffd5b50600954610426565b6107a1611496565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d6124b2565b6108a56114f1565b905090565b6108b2611496565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f81565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ee2565b6109879190612f15565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612f15565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f42565b600a546001600160401b0391821691610a20911684612f15565b6001600160401b0316115b92915050565b610a39611496565b610a4281610ff0565b50565b610a4d611b1c565b610a5682611bc0565b610a608282611c01565b5050565b5f610a6d611cc2565b505f5160206134435f395f51905f5290565b610a87611496565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af5611496565b610aeb5f611d0b565b6008546001600160a01b031615158015610b2357506008546001600160a01b03163314155b15610b41576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b7a575060065460208401516001600160401b03600160401b9092048216911611155b15610b985760405163051c46ef60e01b815260040160405180910390fd5b610ba58360400151611d7b565b610bb28260200151611d7b565b610bbf8260400151611d7b565b610bcc8260600151611d7b565b5f610bd5610e31565b6020850151600a549192505f91610bf591906001600160401b0316610f81565b600a549091506001600160401b03600160801b909104811690821610610c4057610c22856020015161099c565b15610c405760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610cf3576002610c6a8383612f42565b6001600160401b031610610c915760405163080ae8d960e01b815260040160405180910390fd5b610c9c826001612ee2565b6001600160401b0316816001600160401b0316148015610cd55750600654610cd390600160401b90046001600160401b031661093a565b155b15610cf35760405163080ae8d960e01b815260040160405180910390fd5b610cfe858585611deb565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d5d5750610d5d856020015161093a565b15610dc7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dab826001612ee2565b6040516001600160401b03909116815260200160405180910390a15b610dd2434287611f62565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e2291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f81565b600980545f91829190610e6a600183612f61565b81548110610e7a57610e7a612f74565b5f918252602090912060029091020154600160801b90046001600160401b03168410610eb957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f7a578460098281548110610ee957610ee9612f74565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f725760098181548110610f2257610f22612f74565b905f5260205f2090600202016001015460098281548110610f4557610f45612f74565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ecd565b5050915091565b5f816001600160401b03165f03610f9957505f610a2b565b826001600160401b03165f03610fb157506001610a2b565b610fbb8284612f15565b6001600160401b03165f03610fdb57610fd48284612f88565b9050610a2b565b610fe58284612f88565b610fd4906001612ee2565b610ff8611496565b610e108163ffffffff16108061101757506301e133808163ffffffff16115b80611035575060085463ffffffff600160a01b909104811690821611155b15611053576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110bd5750825b90505f826001600160401b031660011480156110d85750303b155b9050811580156110e6575080155b156111045760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561112e57845460ff60401b1916600160401b1785555b6111378661214b565b61113f61215c565b61114a898989612164565b831561119057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111e4575080546001600160401b03808416911610155b156112025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b17825560059085161161124a576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112938385610f81565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611310575080155b8061135a5750600854600980549091600160c01b90046001600160401b031690811061133e5761133e612f74565b5f9182526020909120600290910201546001600160401b031684105b156113785760405163b0b4387760e01b815260040160405180910390fd5b5f8080611386600185612f61565b90505b8161142257600854600160c01b90046001600160401b031681106114225786600982815481106113bb576113bb612f74565b5f9182526020909120600290910201546001600160401b0316116114105760019150600981815481106113f0576113f0612f74565b5f9182526020909120600290910201546001600160401b03169250611422565b8061141a81612fb5565b915050611389565b816114405760405163b0b4387760e01b815260040160405180910390fd5b8561144b8489612f61565b11979650505050505050565b61145f611496565b6001600160a01b03811661148d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281611d0b565b336114c87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b8152336004820152602401611484565b6114f96124b2565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ba257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b965f5160206134435f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611bc8611496565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5b575060408051601f3d908101601f19168201909252611c5891810190612fca565b60015b611c8357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611484565b5f5160206134435f395f51905f528114611cb357604051632a87526960e21b815260048101829052602401611484565b611cbd8383612290565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401611484565b5f611df4610895565b9050611dfe612717565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e6e5750611e6e856020015161093a565b15611ea057602084015160e0820152604084015161010082015260608401516101208201528351610140820152611ec4565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eff908590859088906004016131c3565b602060405180830381865af4158015611f1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3e91906133e3565b611f5b576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fd7575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611fa257611fa2612f74565b5f918252602090912060029091020154611fcc90600160401b90046001600160401b031684612f42565b6001600160401b0316115b1561206a57600854600980549091600160c01b90046001600160401b031690811061200457612004612f74565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861204483613402565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121536122e5565b610a428161232e565b610aeb6122e5565b82516001600160401b0316151580612188575060208301516001600160401b031615155b8061219557506020820151155b806121a257506040820151155b806121af57506060820151155b806121b957508151155b806121cb5750610e108163ffffffff16105b806121df57506301e133808163ffffffff16115b156121fd576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61229982612336565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122dd57611cbd8282612399565b610a6061240b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b61145f6122e5565b806001600160a01b03163b5f0361236b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611484565b5f5160206134435f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516123b5919061342c565b5f60405180830381855af49150503d805f81146123ed576040519150601f19603f3d011682016040523d82523d5f602084013e6123f2565b606091505b509150915061240285838361242a565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b60608261243f5761243a82612489565b612482565b815115801561245657506001600160a01b0384163b155b1561247f57604051639996b31560e01b81526001600160a01b0385166004820152602401611484565b50805b9392505050565b8051156124995780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124e560405180604001604052805f81526020015f81525090565b815260200161250560405180604001604052805f81526020015f81525090565b815260200161252560405180604001604052805f81526020015f81525090565b815260200161254560405180604001604052805f81526020015f81525090565b815260200161256560405180604001604052805f81526020015f81525090565b815260200161258560405180604001604052805f81526020015f81525090565b81526020016125a560405180604001604052805f81526020015f81525090565b81526020016125c560405180604001604052805f81526020015f81525090565b81526020016125e560405180604001604052805f81526020015f81525090565b815260200161260560405180604001604052805f81526020015f81525090565b815260200161262560405180604001604052805f81526020015f81525090565b815260200161264560405180604001604052805f81526020015f81525090565b815260200161266560405180604001604052805f81526020015f81525090565b815260200161268560405180604001604052805f81526020015f81525090565b81526020016126a560405180604001604052805f81526020015f81525090565b81526020016126c560405180604001604052805f81526020015f81525090565b81526020016126e560405180604001604052805f81526020015f81525090565b815260200161270560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f6020828403121561275c575f5ffd5b61248282612736565b5f60208284031215612775575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516127ae604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f602082840312156129a3575f5ffd5b6124828261297d565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129e3576129e36129ac565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a1157612a116129ac565b604052919050565b5f60608284031215612a29575f5ffd5b604051606081016001600160401b0381118282101715612a4b57612a4b6129ac565b604052905080612a5a8361297d565b8152612a686020840161297d565b6020820152604092830135920191909152919050565b5f60408284031215612a8e575f5ffd5b604080519081016001600160401b0381118282101715612ab057612ab06129ac565b604052823581526020928301359281019290925250919050565b5f6104808284031215612adb575f5ffd5b612ae36129c0565b9050612aef8383612a7e565b8152612afe8360408401612a7e565b6020820152612b108360808401612a7e565b6040820152612b228360c08401612a7e565b6060820152612b35836101008401612a7e565b6080820152612b48836101408401612a7e565b60a0820152612b5b836101808401612a7e565b60c0820152612b6e836101c08401612a7e565b60e0820152612b81836102008401612a7e565b610100820152612b95836102408401612a7e565b610120820152612ba9836102808401612a7e565b610140820152612bbd836102c08401612a7e565b610160820152612bd1836103008401612a7e565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c67575f5ffd5b612c718484612a19565b9150612c808460608501612aca565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612cac575f5ffd5b61248282612c89565b5f5f60408385031215612cc6575f5ffd5b612ccf83612736565b915060208301356001600160401b03811115612ce9575f5ffd5b8301601f81018513612cf9575f5ffd5b80356001600160401b03811115612d1257612d126129ac565b612d25601f8201601f19166020016129e9565b818152866020838501011115612d39575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d68575f5ffd5b604051608081016001600160401b0381118282101715612d8a57612d8a6129ac565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612dcb575f5ffd5b612dd58585612a19565b9250612de48560608601612d58565b9150612df38560e08601612aca565b90509250925092565b5f5f60408385031215612e0d575f5ffd5b612e168361297d565b9150612c806020840161297d565b5f5f5f5f6101208587031215612e38575f5ffd5b612e428686612a19565b9350612e518660608701612d58565b9250612e5f60e08601612c89565b9150612e6e6101008601612736565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ebf575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612ece565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f2d57612f2d612f01565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612ece565b81810381811115610a2b57610a2b612ece565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612fa057612fa0612f01565b806001600160401b0384160491505092915050565b5f81612fc357612fc3612ece565b505f190190565b5f60208284031215612fda575f5ffd5b5051919050565b805f5b600b811015613003578151845260209384019390910190600101612fe4565b50505050565b61301e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131f5604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133cd610500830185612fe1565b6133db610660830184613009565b949350505050565b5f602082840312156133f3575f5ffd5b81518015158114612482575f5ffd5b5f6001600160401b0382166001600160401b03810361342357613423612ece565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4902    /// ```
4903    #[rustfmt::skip]
4904    #[allow(clippy::all)]
4905    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4906        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'LV[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'eV[a\x08LV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'|V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\x93V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,UV[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\x93V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\x93V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x9CV[a\n1V[a\x02*a\x04\xA86`\x04a,\xB5V[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xB8V[a\n\xFEV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0E1V[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'eV[a\x0EVV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xFCV[a\x0F\x81V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x9CV[a\x0F\xF0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.$V[a\x10yV[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.yV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xFCV[a\x11\x9BV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\xAEV[a\x12\xFFV[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'LV[a\x14WV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xF7W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08[W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\x9Da$\xB2V[a\x08\xA5a\x14\xF1V[\x90P\x90V[a\x08\xB2a\x14\x96V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x81V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xE2V[a\t\x87\x91\x90a/\x15V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a/\x15V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/BV[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a/\x15V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\x96V[a\nB\x81a\x0F\xF0V[PV[a\nMa\x1B\x1CV[a\nV\x82a\x1B\xC0V[a\n`\x82\x82a\x1C\x01V[PPV[_a\nma\x1C\xC2V[P_Q` a4C_9_Q\x90_R\x90V[a\n\x87a\x14\x96V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\n\xF5a\x14\x96V[a\n\xEB_a\x1D\x0BV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B#WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BAW`@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\x0BzWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\x98W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xA5\x83`@\x01Qa\x1D{V[a\x0B\xB2\x82` \x01Qa\x1D{V[a\x0B\xBF\x82`@\x01Qa\x1D{V[a\x0B\xCC\x82``\x01Qa\x1D{V[_a\x0B\xD5a\x0E1V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0B\xF5\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x81V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C@Wa\x0C\"\x85` \x01Qa\t\x9CV[\x15a\x0C@W`@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\x0C\xF3W`\x02a\x0Cj\x83\x83a/BV[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\x91W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x9C\x82`\x01a.\xE2V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xD5WP`\x06Ta\x0C\xD3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\x0C\xF3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xFE\x85\x85\x85a\x1D\xEBV[\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\r]WPa\r]\x85` \x01Qa\t:V[\x15a\r\xC7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xAB\x82`\x01a.\xE2V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xD2CB\x87a\x1FbV[\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\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x81V[`\t\x80T_\x91\x82\x91\x90a\x0Ej`\x01\x83a/aV[\x81T\x81\x10a\x0EzWa\x0Eza/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xB9W`@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\x0FzW\x84`\t\x82\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0FrW`\t\x81\x81T\x81\x10a\x0F\"Wa\x0F\"a/tV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FEWa\x0FEa/tV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0E\xCDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\x99WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xB1WP`\x01a\n+V[a\x0F\xBB\x82\x84a/\x15V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xDBWa\x0F\xD4\x82\x84a/\x88V[\x90Pa\n+V[a\x0F\xE5\x82\x84a/\x88V[a\x0F\xD4\x90`\x01a.\xE2V[a\x0F\xF8a\x14\x96V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x17WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x105WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10SW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xBDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xD8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xE6WP\x80\x15[\x15a\x11\x04W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11.W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x117\x86a!KV[a\x11?a!\\V[a\x11J\x89\x89\x89a!dV[\x83\x15a\x11\x90W\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[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xE4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x02W`@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\x12JW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\x93\x83\x85a\x0F\x81V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x13\x10WP\x80\x15[\x80a\x13ZWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13>Wa\x13>a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13xW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x86`\x01\x85a/aV[\x90P[\x81a\x14\"W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\"W\x86`\t\x82\x81T\x81\x10a\x13\xBBWa\x13\xBBa/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x10W`\x01\x91P`\t\x81\x81T\x81\x10a\x13\xF0Wa\x13\xF0a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\"V[\x80a\x14\x1A\x81a/\xB5V[\x91PPa\x13\x89V[\x81a\x14@W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14K\x84\x89a/aV[\x11\x97\x96PPPPPPPV[a\x14_a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x8DW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\x1D\x0BV[3a\x14\xC8\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x84V[a\x14\xF9a$\xB2V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1B\xA2WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1B\x96_Q` a4C_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xC8a\x14\x96V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08AV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C[WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1CX\x91\x81\x01\x90a/\xCAV[`\x01[a\x1C\x83W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4C_9_Q\x90_R\x81\x14a\x1C\xB3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x84V[a\x1C\xBD\x83\x83a\"\x90V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\x84V[_a\x1D\xF4a\x08\x95V[\x90Pa\x1D\xFEa'\x17V[\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\x1EnWPa\x1En\x85` \x01Qa\t:V[\x15a\x1E\xA0W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xC4V[`\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\x1E\xFF\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xC3V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\x1AW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F>\x91\x90a3\xE3V[a\x1F[W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xD7WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xA2Wa\x1F\xA2a/tV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xCC\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/BV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a jW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \x04Wa \x04a/tV[_\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 D\x83a4\x02V[\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!Sa\"\xE5V[a\nB\x81a#.V[a\n\xEBa\"\xE5V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x88WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x95WP` \x82\x01Q\x15[\x80a!\xA2WP`@\x82\x01Q\x15[\x80a!\xAFWP``\x82\x01Q\x15[\x80a!\xB9WP\x81Q\x15[\x80a!\xCBWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xDFWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xFDW`@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[a\"\x99\x82a#6V[`@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\"\xDDWa\x1C\xBD\x82\x82a#\x99V[a\n`a$\x0BV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14_a\"\xE5V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#kW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4C_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#\xB5\x91\x90a4,V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xEDW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xF2V[``\x91P[P\x91P\x91Pa$\x02\x85\x83\x83a$*V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$?Wa$:\x82a$\x89V[a$\x82V[\x81Q\x15\x80\x15a$VWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\x7FW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x84V[P\x80[\x93\x92PPPV[\x80Q\x15a$\x99W\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$\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'\\W__\xFD[a$\x82\x82a'6V[_` \x82\x84\x03\x12\x15a'uW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\xAE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\xA3W__\xFD[a$\x82\x82a)}V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xE3Wa)\xE3a)\xACV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x11Wa*\x11a)\xACV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*)W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*KWa*Ka)\xACV[`@R\x90P\x80a*Z\x83a)}V[\x81Ra*h` \x84\x01a)}V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\x8EW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xB0Wa*\xB0a)\xACV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xDBW__\xFD[a*\xE3a)\xC0V[\x90Pa*\xEF\x83\x83a*~V[\x81Ra*\xFE\x83`@\x84\x01a*~V[` \x82\x01Ra+\x10\x83`\x80\x84\x01a*~V[`@\x82\x01Ra+\"\x83`\xC0\x84\x01a*~V[``\x82\x01Ra+5\x83a\x01\0\x84\x01a*~V[`\x80\x82\x01Ra+H\x83a\x01@\x84\x01a*~V[`\xA0\x82\x01Ra+[\x83a\x01\x80\x84\x01a*~V[`\xC0\x82\x01Ra+n\x83a\x01\xC0\x84\x01a*~V[`\xE0\x82\x01Ra+\x81\x83a\x02\0\x84\x01a*~V[a\x01\0\x82\x01Ra+\x95\x83a\x02@\x84\x01a*~V[a\x01 \x82\x01Ra+\xA9\x83a\x02\x80\x84\x01a*~V[a\x01@\x82\x01Ra+\xBD\x83a\x02\xC0\x84\x01a*~V[a\x01`\x82\x01Ra+\xD1\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,gW__\xFD[a,q\x84\x84a*\x19V[\x91Pa,\x80\x84``\x85\x01a*\xCAV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\xACW__\xFD[a$\x82\x82a,\x89V[__`@\x83\x85\x03\x12\x15a,\xC6W__\xFD[a,\xCF\x83a'6V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xE9W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x12Wa-\x12a)\xACV[a-%`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xE9V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-9W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-hW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8AWa-\x8Aa)\xACV[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\xCBW__\xFD[a-\xD5\x85\x85a*\x19V[\x92Pa-\xE4\x85``\x86\x01a-XV[\x91Pa-\xF3\x85`\xE0\x86\x01a*\xCAV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.\rW__\xFD[a.\x16\x83a)}V[\x91Pa,\x80` \x84\x01a)}V[____a\x01 \x85\x87\x03\x12\x15a.8W__\xFD[a.B\x86\x86a*\x19V[\x93Pa.Q\x86``\x87\x01a-XV[\x92Pa._`\xE0\x86\x01a,\x89V[\x91Pa.na\x01\0\x86\x01a'6V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a.\xBFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\xCEV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/-Wa/-a/\x01V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n+Wa\n+a.\xCEV[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xCEV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\xA0Wa/\xA0a/\x01V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xC3Wa/\xC3a.\xCEV[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xDAW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a0\x03W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xE4V[PPPPV[a0\x1E\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xF5`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra3\xCDa\x05\0\x83\x01\x85a/\xE1V[a3\xDBa\x06`\x83\x01\x84a0\tV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xF3W__\xFD[\x81Q\x80\x15\x15\x81\x14a$\x82W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4#Wa4#a.\xCEV[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4907    );
4908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4909    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4910```solidity
4911error AddressEmptyCode(address target);
4912```*/
4913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4914    #[derive(Clone)]
4915    pub struct AddressEmptyCode {
4916        #[allow(missing_docs)]
4917        pub target: alloy::sol_types::private::Address,
4918    }
4919    #[allow(
4920        non_camel_case_types,
4921        non_snake_case,
4922        clippy::pub_underscore_fields,
4923        clippy::style
4924    )]
4925    const _: () = {
4926        use alloy::sol_types as alloy_sol_types;
4927        #[doc(hidden)]
4928        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4929        #[doc(hidden)]
4930        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4931        #[cfg(test)]
4932        #[allow(dead_code, unreachable_patterns)]
4933        fn _type_assertion(
4934            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4935        ) {
4936            match _t {
4937                alloy_sol_types::private::AssertTypeEq::<
4938                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4939                >(_) => {}
4940            }
4941        }
4942        #[automatically_derived]
4943        #[doc(hidden)]
4944        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4945            fn from(value: AddressEmptyCode) -> Self {
4946                (value.target,)
4947            }
4948        }
4949        #[automatically_derived]
4950        #[doc(hidden)]
4951        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4952            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4953                Self { target: tuple.0 }
4954            }
4955        }
4956        #[automatically_derived]
4957        impl alloy_sol_types::SolError for AddressEmptyCode {
4958            type Parameters<'a> = UnderlyingSolTuple<'a>;
4959            type Token<'a> = <Self::Parameters<
4960                'a,
4961            > as alloy_sol_types::SolType>::Token<'a>;
4962            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4963            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4964            #[inline]
4965            fn new<'a>(
4966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4967            ) -> Self {
4968                tuple.into()
4969            }
4970            #[inline]
4971            fn tokenize(&self) -> Self::Token<'_> {
4972                (
4973                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4974                        &self.target,
4975                    ),
4976                )
4977            }
4978        }
4979    };
4980    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4981    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
4982```solidity
4983error DeprecatedApi();
4984```*/
4985    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4986    #[derive(Clone)]
4987    pub struct DeprecatedApi {}
4988    #[allow(
4989        non_camel_case_types,
4990        non_snake_case,
4991        clippy::pub_underscore_fields,
4992        clippy::style
4993    )]
4994    const _: () = {
4995        use alloy::sol_types as alloy_sol_types;
4996        #[doc(hidden)]
4997        type UnderlyingSolTuple<'a> = ();
4998        #[doc(hidden)]
4999        type UnderlyingRustTuple<'a> = ();
5000        #[cfg(test)]
5001        #[allow(dead_code, unreachable_patterns)]
5002        fn _type_assertion(
5003            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5004        ) {
5005            match _t {
5006                alloy_sol_types::private::AssertTypeEq::<
5007                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5008                >(_) => {}
5009            }
5010        }
5011        #[automatically_derived]
5012        #[doc(hidden)]
5013        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5014            fn from(value: DeprecatedApi) -> Self {
5015                ()
5016            }
5017        }
5018        #[automatically_derived]
5019        #[doc(hidden)]
5020        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5021            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5022                Self {}
5023            }
5024        }
5025        #[automatically_derived]
5026        impl alloy_sol_types::SolError for DeprecatedApi {
5027            type Parameters<'a> = UnderlyingSolTuple<'a>;
5028            type Token<'a> = <Self::Parameters<
5029                'a,
5030            > as alloy_sol_types::SolType>::Token<'a>;
5031            const SIGNATURE: &'static str = "DeprecatedApi()";
5032            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5033            #[inline]
5034            fn new<'a>(
5035                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5036            ) -> Self {
5037                tuple.into()
5038            }
5039            #[inline]
5040            fn tokenize(&self) -> Self::Token<'_> {
5041                ()
5042            }
5043        }
5044    };
5045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5046    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5047```solidity
5048error ERC1967InvalidImplementation(address implementation);
5049```*/
5050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5051    #[derive(Clone)]
5052    pub struct ERC1967InvalidImplementation {
5053        #[allow(missing_docs)]
5054        pub implementation: alloy::sol_types::private::Address,
5055    }
5056    #[allow(
5057        non_camel_case_types,
5058        non_snake_case,
5059        clippy::pub_underscore_fields,
5060        clippy::style
5061    )]
5062    const _: () = {
5063        use alloy::sol_types as alloy_sol_types;
5064        #[doc(hidden)]
5065        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5066        #[doc(hidden)]
5067        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5068        #[cfg(test)]
5069        #[allow(dead_code, unreachable_patterns)]
5070        fn _type_assertion(
5071            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5072        ) {
5073            match _t {
5074                alloy_sol_types::private::AssertTypeEq::<
5075                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5076                >(_) => {}
5077            }
5078        }
5079        #[automatically_derived]
5080        #[doc(hidden)]
5081        impl ::core::convert::From<ERC1967InvalidImplementation>
5082        for UnderlyingRustTuple<'_> {
5083            fn from(value: ERC1967InvalidImplementation) -> Self {
5084                (value.implementation,)
5085            }
5086        }
5087        #[automatically_derived]
5088        #[doc(hidden)]
5089        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5090        for ERC1967InvalidImplementation {
5091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5092                Self { implementation: tuple.0 }
5093            }
5094        }
5095        #[automatically_derived]
5096        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5097            type Parameters<'a> = UnderlyingSolTuple<'a>;
5098            type Token<'a> = <Self::Parameters<
5099                'a,
5100            > as alloy_sol_types::SolType>::Token<'a>;
5101            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5102            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5103            #[inline]
5104            fn new<'a>(
5105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5106            ) -> Self {
5107                tuple.into()
5108            }
5109            #[inline]
5110            fn tokenize(&self) -> Self::Token<'_> {
5111                (
5112                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5113                        &self.implementation,
5114                    ),
5115                )
5116            }
5117        }
5118    };
5119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5120    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5121```solidity
5122error ERC1967NonPayable();
5123```*/
5124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5125    #[derive(Clone)]
5126    pub struct ERC1967NonPayable {}
5127    #[allow(
5128        non_camel_case_types,
5129        non_snake_case,
5130        clippy::pub_underscore_fields,
5131        clippy::style
5132    )]
5133    const _: () = {
5134        use alloy::sol_types as alloy_sol_types;
5135        #[doc(hidden)]
5136        type UnderlyingSolTuple<'a> = ();
5137        #[doc(hidden)]
5138        type UnderlyingRustTuple<'a> = ();
5139        #[cfg(test)]
5140        #[allow(dead_code, unreachable_patterns)]
5141        fn _type_assertion(
5142            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5143        ) {
5144            match _t {
5145                alloy_sol_types::private::AssertTypeEq::<
5146                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5147                >(_) => {}
5148            }
5149        }
5150        #[automatically_derived]
5151        #[doc(hidden)]
5152        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5153            fn from(value: ERC1967NonPayable) -> Self {
5154                ()
5155            }
5156        }
5157        #[automatically_derived]
5158        #[doc(hidden)]
5159        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5160            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5161                Self {}
5162            }
5163        }
5164        #[automatically_derived]
5165        impl alloy_sol_types::SolError for ERC1967NonPayable {
5166            type Parameters<'a> = UnderlyingSolTuple<'a>;
5167            type Token<'a> = <Self::Parameters<
5168                'a,
5169            > as alloy_sol_types::SolType>::Token<'a>;
5170            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5171            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5172            #[inline]
5173            fn new<'a>(
5174                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5175            ) -> Self {
5176                tuple.into()
5177            }
5178            #[inline]
5179            fn tokenize(&self) -> Self::Token<'_> {
5180                ()
5181            }
5182        }
5183    };
5184    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5185    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5186```solidity
5187error FailedInnerCall();
5188```*/
5189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5190    #[derive(Clone)]
5191    pub struct FailedInnerCall {}
5192    #[allow(
5193        non_camel_case_types,
5194        non_snake_case,
5195        clippy::pub_underscore_fields,
5196        clippy::style
5197    )]
5198    const _: () = {
5199        use alloy::sol_types as alloy_sol_types;
5200        #[doc(hidden)]
5201        type UnderlyingSolTuple<'a> = ();
5202        #[doc(hidden)]
5203        type UnderlyingRustTuple<'a> = ();
5204        #[cfg(test)]
5205        #[allow(dead_code, unreachable_patterns)]
5206        fn _type_assertion(
5207            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5208        ) {
5209            match _t {
5210                alloy_sol_types::private::AssertTypeEq::<
5211                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5212                >(_) => {}
5213            }
5214        }
5215        #[automatically_derived]
5216        #[doc(hidden)]
5217        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5218            fn from(value: FailedInnerCall) -> Self {
5219                ()
5220            }
5221        }
5222        #[automatically_derived]
5223        #[doc(hidden)]
5224        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5225            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5226                Self {}
5227            }
5228        }
5229        #[automatically_derived]
5230        impl alloy_sol_types::SolError for FailedInnerCall {
5231            type Parameters<'a> = UnderlyingSolTuple<'a>;
5232            type Token<'a> = <Self::Parameters<
5233                'a,
5234            > as alloy_sol_types::SolType>::Token<'a>;
5235            const SIGNATURE: &'static str = "FailedInnerCall()";
5236            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5237            #[inline]
5238            fn new<'a>(
5239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5240            ) -> Self {
5241                tuple.into()
5242            }
5243            #[inline]
5244            fn tokenize(&self) -> Self::Token<'_> {
5245                ()
5246            }
5247        }
5248    };
5249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5250    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5251```solidity
5252error InsufficientSnapshotHistory();
5253```*/
5254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5255    #[derive(Clone)]
5256    pub struct InsufficientSnapshotHistory {}
5257    #[allow(
5258        non_camel_case_types,
5259        non_snake_case,
5260        clippy::pub_underscore_fields,
5261        clippy::style
5262    )]
5263    const _: () = {
5264        use alloy::sol_types as alloy_sol_types;
5265        #[doc(hidden)]
5266        type UnderlyingSolTuple<'a> = ();
5267        #[doc(hidden)]
5268        type UnderlyingRustTuple<'a> = ();
5269        #[cfg(test)]
5270        #[allow(dead_code, unreachable_patterns)]
5271        fn _type_assertion(
5272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5273        ) {
5274            match _t {
5275                alloy_sol_types::private::AssertTypeEq::<
5276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5277                >(_) => {}
5278            }
5279        }
5280        #[automatically_derived]
5281        #[doc(hidden)]
5282        impl ::core::convert::From<InsufficientSnapshotHistory>
5283        for UnderlyingRustTuple<'_> {
5284            fn from(value: InsufficientSnapshotHistory) -> Self {
5285                ()
5286            }
5287        }
5288        #[automatically_derived]
5289        #[doc(hidden)]
5290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5291        for InsufficientSnapshotHistory {
5292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5293                Self {}
5294            }
5295        }
5296        #[automatically_derived]
5297        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5298            type Parameters<'a> = UnderlyingSolTuple<'a>;
5299            type Token<'a> = <Self::Parameters<
5300                'a,
5301            > as alloy_sol_types::SolType>::Token<'a>;
5302            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5303            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5304            #[inline]
5305            fn new<'a>(
5306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5307            ) -> Self {
5308                tuple.into()
5309            }
5310            #[inline]
5311            fn tokenize(&self) -> Self::Token<'_> {
5312                ()
5313            }
5314        }
5315    };
5316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5317    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5318```solidity
5319error InvalidAddress();
5320```*/
5321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5322    #[derive(Clone)]
5323    pub struct InvalidAddress {}
5324    #[allow(
5325        non_camel_case_types,
5326        non_snake_case,
5327        clippy::pub_underscore_fields,
5328        clippy::style
5329    )]
5330    const _: () = {
5331        use alloy::sol_types as alloy_sol_types;
5332        #[doc(hidden)]
5333        type UnderlyingSolTuple<'a> = ();
5334        #[doc(hidden)]
5335        type UnderlyingRustTuple<'a> = ();
5336        #[cfg(test)]
5337        #[allow(dead_code, unreachable_patterns)]
5338        fn _type_assertion(
5339            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5340        ) {
5341            match _t {
5342                alloy_sol_types::private::AssertTypeEq::<
5343                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5344                >(_) => {}
5345            }
5346        }
5347        #[automatically_derived]
5348        #[doc(hidden)]
5349        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5350            fn from(value: InvalidAddress) -> Self {
5351                ()
5352            }
5353        }
5354        #[automatically_derived]
5355        #[doc(hidden)]
5356        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5357            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5358                Self {}
5359            }
5360        }
5361        #[automatically_derived]
5362        impl alloy_sol_types::SolError for InvalidAddress {
5363            type Parameters<'a> = UnderlyingSolTuple<'a>;
5364            type Token<'a> = <Self::Parameters<
5365                'a,
5366            > as alloy_sol_types::SolType>::Token<'a>;
5367            const SIGNATURE: &'static str = "InvalidAddress()";
5368            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5369            #[inline]
5370            fn new<'a>(
5371                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5372            ) -> Self {
5373                tuple.into()
5374            }
5375            #[inline]
5376            fn tokenize(&self) -> Self::Token<'_> {
5377                ()
5378            }
5379        }
5380    };
5381    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5382    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5383```solidity
5384error InvalidArgs();
5385```*/
5386    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5387    #[derive(Clone)]
5388    pub struct InvalidArgs {}
5389    #[allow(
5390        non_camel_case_types,
5391        non_snake_case,
5392        clippy::pub_underscore_fields,
5393        clippy::style
5394    )]
5395    const _: () = {
5396        use alloy::sol_types as alloy_sol_types;
5397        #[doc(hidden)]
5398        type UnderlyingSolTuple<'a> = ();
5399        #[doc(hidden)]
5400        type UnderlyingRustTuple<'a> = ();
5401        #[cfg(test)]
5402        #[allow(dead_code, unreachable_patterns)]
5403        fn _type_assertion(
5404            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5405        ) {
5406            match _t {
5407                alloy_sol_types::private::AssertTypeEq::<
5408                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5409                >(_) => {}
5410            }
5411        }
5412        #[automatically_derived]
5413        #[doc(hidden)]
5414        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5415            fn from(value: InvalidArgs) -> Self {
5416                ()
5417            }
5418        }
5419        #[automatically_derived]
5420        #[doc(hidden)]
5421        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5422            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5423                Self {}
5424            }
5425        }
5426        #[automatically_derived]
5427        impl alloy_sol_types::SolError for InvalidArgs {
5428            type Parameters<'a> = UnderlyingSolTuple<'a>;
5429            type Token<'a> = <Self::Parameters<
5430                'a,
5431            > as alloy_sol_types::SolType>::Token<'a>;
5432            const SIGNATURE: &'static str = "InvalidArgs()";
5433            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5434            #[inline]
5435            fn new<'a>(
5436                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5437            ) -> Self {
5438                tuple.into()
5439            }
5440            #[inline]
5441            fn tokenize(&self) -> Self::Token<'_> {
5442                ()
5443            }
5444        }
5445    };
5446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5447    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5448```solidity
5449error InvalidHotShotBlockForCommitmentCheck();
5450```*/
5451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5452    #[derive(Clone)]
5453    pub struct InvalidHotShotBlockForCommitmentCheck {}
5454    #[allow(
5455        non_camel_case_types,
5456        non_snake_case,
5457        clippy::pub_underscore_fields,
5458        clippy::style
5459    )]
5460    const _: () = {
5461        use alloy::sol_types as alloy_sol_types;
5462        #[doc(hidden)]
5463        type UnderlyingSolTuple<'a> = ();
5464        #[doc(hidden)]
5465        type UnderlyingRustTuple<'a> = ();
5466        #[cfg(test)]
5467        #[allow(dead_code, unreachable_patterns)]
5468        fn _type_assertion(
5469            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5470        ) {
5471            match _t {
5472                alloy_sol_types::private::AssertTypeEq::<
5473                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5474                >(_) => {}
5475            }
5476        }
5477        #[automatically_derived]
5478        #[doc(hidden)]
5479        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5480        for UnderlyingRustTuple<'_> {
5481            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5482                ()
5483            }
5484        }
5485        #[automatically_derived]
5486        #[doc(hidden)]
5487        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5488        for InvalidHotShotBlockForCommitmentCheck {
5489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5490                Self {}
5491            }
5492        }
5493        #[automatically_derived]
5494        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5495            type Parameters<'a> = UnderlyingSolTuple<'a>;
5496            type Token<'a> = <Self::Parameters<
5497                'a,
5498            > as alloy_sol_types::SolType>::Token<'a>;
5499            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5500            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5501            #[inline]
5502            fn new<'a>(
5503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5504            ) -> Self {
5505                tuple.into()
5506            }
5507            #[inline]
5508            fn tokenize(&self) -> Self::Token<'_> {
5509                ()
5510            }
5511        }
5512    };
5513    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5514    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5515```solidity
5516error InvalidInitialization();
5517```*/
5518    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5519    #[derive(Clone)]
5520    pub struct InvalidInitialization {}
5521    #[allow(
5522        non_camel_case_types,
5523        non_snake_case,
5524        clippy::pub_underscore_fields,
5525        clippy::style
5526    )]
5527    const _: () = {
5528        use alloy::sol_types as alloy_sol_types;
5529        #[doc(hidden)]
5530        type UnderlyingSolTuple<'a> = ();
5531        #[doc(hidden)]
5532        type UnderlyingRustTuple<'a> = ();
5533        #[cfg(test)]
5534        #[allow(dead_code, unreachable_patterns)]
5535        fn _type_assertion(
5536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5537        ) {
5538            match _t {
5539                alloy_sol_types::private::AssertTypeEq::<
5540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5541                >(_) => {}
5542            }
5543        }
5544        #[automatically_derived]
5545        #[doc(hidden)]
5546        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5547            fn from(value: InvalidInitialization) -> Self {
5548                ()
5549            }
5550        }
5551        #[automatically_derived]
5552        #[doc(hidden)]
5553        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5554            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5555                Self {}
5556            }
5557        }
5558        #[automatically_derived]
5559        impl alloy_sol_types::SolError for InvalidInitialization {
5560            type Parameters<'a> = UnderlyingSolTuple<'a>;
5561            type Token<'a> = <Self::Parameters<
5562                'a,
5563            > as alloy_sol_types::SolType>::Token<'a>;
5564            const SIGNATURE: &'static str = "InvalidInitialization()";
5565            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5566            #[inline]
5567            fn new<'a>(
5568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5569            ) -> Self {
5570                tuple.into()
5571            }
5572            #[inline]
5573            fn tokenize(&self) -> Self::Token<'_> {
5574                ()
5575            }
5576        }
5577    };
5578    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5579    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5580```solidity
5581error InvalidMaxStateHistory();
5582```*/
5583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5584    #[derive(Clone)]
5585    pub struct InvalidMaxStateHistory {}
5586    #[allow(
5587        non_camel_case_types,
5588        non_snake_case,
5589        clippy::pub_underscore_fields,
5590        clippy::style
5591    )]
5592    const _: () = {
5593        use alloy::sol_types as alloy_sol_types;
5594        #[doc(hidden)]
5595        type UnderlyingSolTuple<'a> = ();
5596        #[doc(hidden)]
5597        type UnderlyingRustTuple<'a> = ();
5598        #[cfg(test)]
5599        #[allow(dead_code, unreachable_patterns)]
5600        fn _type_assertion(
5601            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5602        ) {
5603            match _t {
5604                alloy_sol_types::private::AssertTypeEq::<
5605                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5606                >(_) => {}
5607            }
5608        }
5609        #[automatically_derived]
5610        #[doc(hidden)]
5611        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5612            fn from(value: InvalidMaxStateHistory) -> Self {
5613                ()
5614            }
5615        }
5616        #[automatically_derived]
5617        #[doc(hidden)]
5618        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5619            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5620                Self {}
5621            }
5622        }
5623        #[automatically_derived]
5624        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5625            type Parameters<'a> = UnderlyingSolTuple<'a>;
5626            type Token<'a> = <Self::Parameters<
5627                'a,
5628            > as alloy_sol_types::SolType>::Token<'a>;
5629            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5630            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5631            #[inline]
5632            fn new<'a>(
5633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5634            ) -> Self {
5635                tuple.into()
5636            }
5637            #[inline]
5638            fn tokenize(&self) -> Self::Token<'_> {
5639                ()
5640            }
5641        }
5642    };
5643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5644    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5645```solidity
5646error InvalidProof();
5647```*/
5648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5649    #[derive(Clone)]
5650    pub struct InvalidProof {}
5651    #[allow(
5652        non_camel_case_types,
5653        non_snake_case,
5654        clippy::pub_underscore_fields,
5655        clippy::style
5656    )]
5657    const _: () = {
5658        use alloy::sol_types as alloy_sol_types;
5659        #[doc(hidden)]
5660        type UnderlyingSolTuple<'a> = ();
5661        #[doc(hidden)]
5662        type UnderlyingRustTuple<'a> = ();
5663        #[cfg(test)]
5664        #[allow(dead_code, unreachable_patterns)]
5665        fn _type_assertion(
5666            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5667        ) {
5668            match _t {
5669                alloy_sol_types::private::AssertTypeEq::<
5670                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5671                >(_) => {}
5672            }
5673        }
5674        #[automatically_derived]
5675        #[doc(hidden)]
5676        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5677            fn from(value: InvalidProof) -> Self {
5678                ()
5679            }
5680        }
5681        #[automatically_derived]
5682        #[doc(hidden)]
5683        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5684            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5685                Self {}
5686            }
5687        }
5688        #[automatically_derived]
5689        impl alloy_sol_types::SolError for InvalidProof {
5690            type Parameters<'a> = UnderlyingSolTuple<'a>;
5691            type Token<'a> = <Self::Parameters<
5692                'a,
5693            > as alloy_sol_types::SolType>::Token<'a>;
5694            const SIGNATURE: &'static str = "InvalidProof()";
5695            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5696            #[inline]
5697            fn new<'a>(
5698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5699            ) -> Self {
5700                tuple.into()
5701            }
5702            #[inline]
5703            fn tokenize(&self) -> Self::Token<'_> {
5704                ()
5705            }
5706        }
5707    };
5708    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5709    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5710```solidity
5711error MissingEpochRootUpdate();
5712```*/
5713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5714    #[derive(Clone)]
5715    pub struct MissingEpochRootUpdate {}
5716    #[allow(
5717        non_camel_case_types,
5718        non_snake_case,
5719        clippy::pub_underscore_fields,
5720        clippy::style
5721    )]
5722    const _: () = {
5723        use alloy::sol_types as alloy_sol_types;
5724        #[doc(hidden)]
5725        type UnderlyingSolTuple<'a> = ();
5726        #[doc(hidden)]
5727        type UnderlyingRustTuple<'a> = ();
5728        #[cfg(test)]
5729        #[allow(dead_code, unreachable_patterns)]
5730        fn _type_assertion(
5731            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5732        ) {
5733            match _t {
5734                alloy_sol_types::private::AssertTypeEq::<
5735                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5736                >(_) => {}
5737            }
5738        }
5739        #[automatically_derived]
5740        #[doc(hidden)]
5741        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5742            fn from(value: MissingEpochRootUpdate) -> Self {
5743                ()
5744            }
5745        }
5746        #[automatically_derived]
5747        #[doc(hidden)]
5748        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5749            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5750                Self {}
5751            }
5752        }
5753        #[automatically_derived]
5754        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5755            type Parameters<'a> = UnderlyingSolTuple<'a>;
5756            type Token<'a> = <Self::Parameters<
5757                'a,
5758            > as alloy_sol_types::SolType>::Token<'a>;
5759            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5760            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5761            #[inline]
5762            fn new<'a>(
5763                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5764            ) -> Self {
5765                tuple.into()
5766            }
5767            #[inline]
5768            fn tokenize(&self) -> Self::Token<'_> {
5769                ()
5770            }
5771        }
5772    };
5773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5774    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5775```solidity
5776error NoChangeRequired();
5777```*/
5778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5779    #[derive(Clone)]
5780    pub struct NoChangeRequired {}
5781    #[allow(
5782        non_camel_case_types,
5783        non_snake_case,
5784        clippy::pub_underscore_fields,
5785        clippy::style
5786    )]
5787    const _: () = {
5788        use alloy::sol_types as alloy_sol_types;
5789        #[doc(hidden)]
5790        type UnderlyingSolTuple<'a> = ();
5791        #[doc(hidden)]
5792        type UnderlyingRustTuple<'a> = ();
5793        #[cfg(test)]
5794        #[allow(dead_code, unreachable_patterns)]
5795        fn _type_assertion(
5796            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5797        ) {
5798            match _t {
5799                alloy_sol_types::private::AssertTypeEq::<
5800                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5801                >(_) => {}
5802            }
5803        }
5804        #[automatically_derived]
5805        #[doc(hidden)]
5806        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5807            fn from(value: NoChangeRequired) -> Self {
5808                ()
5809            }
5810        }
5811        #[automatically_derived]
5812        #[doc(hidden)]
5813        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5814            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5815                Self {}
5816            }
5817        }
5818        #[automatically_derived]
5819        impl alloy_sol_types::SolError for NoChangeRequired {
5820            type Parameters<'a> = UnderlyingSolTuple<'a>;
5821            type Token<'a> = <Self::Parameters<
5822                'a,
5823            > as alloy_sol_types::SolType>::Token<'a>;
5824            const SIGNATURE: &'static str = "NoChangeRequired()";
5825            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5826            #[inline]
5827            fn new<'a>(
5828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5829            ) -> Self {
5830                tuple.into()
5831            }
5832            #[inline]
5833            fn tokenize(&self) -> Self::Token<'_> {
5834                ()
5835            }
5836        }
5837    };
5838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5839    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5840```solidity
5841error NotInitializing();
5842```*/
5843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5844    #[derive(Clone)]
5845    pub struct NotInitializing {}
5846    #[allow(
5847        non_camel_case_types,
5848        non_snake_case,
5849        clippy::pub_underscore_fields,
5850        clippy::style
5851    )]
5852    const _: () = {
5853        use alloy::sol_types as alloy_sol_types;
5854        #[doc(hidden)]
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<NotInitializing> for UnderlyingRustTuple<'_> {
5872            fn from(value: NotInitializing) -> Self {
5873                ()
5874            }
5875        }
5876        #[automatically_derived]
5877        #[doc(hidden)]
5878        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5879            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5880                Self {}
5881            }
5882        }
5883        #[automatically_derived]
5884        impl alloy_sol_types::SolError for NotInitializing {
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 = "NotInitializing()";
5890            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
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        }
5902    };
5903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5904    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5905```solidity
5906error OutdatedState();
5907```*/
5908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5909    #[derive(Clone)]
5910    pub struct OutdatedState {}
5911    #[allow(
5912        non_camel_case_types,
5913        non_snake_case,
5914        clippy::pub_underscore_fields,
5915        clippy::style
5916    )]
5917    const _: () = {
5918        use alloy::sol_types as alloy_sol_types;
5919        #[doc(hidden)]
5920        type UnderlyingSolTuple<'a> = ();
5921        #[doc(hidden)]
5922        type UnderlyingRustTuple<'a> = ();
5923        #[cfg(test)]
5924        #[allow(dead_code, unreachable_patterns)]
5925        fn _type_assertion(
5926            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5927        ) {
5928            match _t {
5929                alloy_sol_types::private::AssertTypeEq::<
5930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5931                >(_) => {}
5932            }
5933        }
5934        #[automatically_derived]
5935        #[doc(hidden)]
5936        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5937            fn from(value: OutdatedState) -> Self {
5938                ()
5939            }
5940        }
5941        #[automatically_derived]
5942        #[doc(hidden)]
5943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5945                Self {}
5946            }
5947        }
5948        #[automatically_derived]
5949        impl alloy_sol_types::SolError for OutdatedState {
5950            type Parameters<'a> = UnderlyingSolTuple<'a>;
5951            type Token<'a> = <Self::Parameters<
5952                'a,
5953            > as alloy_sol_types::SolType>::Token<'a>;
5954            const SIGNATURE: &'static str = "OutdatedState()";
5955            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5956            #[inline]
5957            fn new<'a>(
5958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5959            ) -> Self {
5960                tuple.into()
5961            }
5962            #[inline]
5963            fn tokenize(&self) -> Self::Token<'_> {
5964                ()
5965            }
5966        }
5967    };
5968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5969    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5970```solidity
5971error OwnableInvalidOwner(address owner);
5972```*/
5973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5974    #[derive(Clone)]
5975    pub struct OwnableInvalidOwner {
5976        #[allow(missing_docs)]
5977        pub owner: alloy::sol_types::private::Address,
5978    }
5979    #[allow(
5980        non_camel_case_types,
5981        non_snake_case,
5982        clippy::pub_underscore_fields,
5983        clippy::style
5984    )]
5985    const _: () = {
5986        use alloy::sol_types as alloy_sol_types;
5987        #[doc(hidden)]
5988        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5989        #[doc(hidden)]
5990        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5991        #[cfg(test)]
5992        #[allow(dead_code, unreachable_patterns)]
5993        fn _type_assertion(
5994            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5995        ) {
5996            match _t {
5997                alloy_sol_types::private::AssertTypeEq::<
5998                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5999                >(_) => {}
6000            }
6001        }
6002        #[automatically_derived]
6003        #[doc(hidden)]
6004        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6005            fn from(value: OwnableInvalidOwner) -> Self {
6006                (value.owner,)
6007            }
6008        }
6009        #[automatically_derived]
6010        #[doc(hidden)]
6011        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6012            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6013                Self { owner: tuple.0 }
6014            }
6015        }
6016        #[automatically_derived]
6017        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6018            type Parameters<'a> = UnderlyingSolTuple<'a>;
6019            type Token<'a> = <Self::Parameters<
6020                'a,
6021            > as alloy_sol_types::SolType>::Token<'a>;
6022            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6023            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6024            #[inline]
6025            fn new<'a>(
6026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6027            ) -> Self {
6028                tuple.into()
6029            }
6030            #[inline]
6031            fn tokenize(&self) -> Self::Token<'_> {
6032                (
6033                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6034                        &self.owner,
6035                    ),
6036                )
6037            }
6038        }
6039    };
6040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6041    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6042```solidity
6043error OwnableUnauthorizedAccount(address account);
6044```*/
6045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6046    #[derive(Clone)]
6047    pub struct OwnableUnauthorizedAccount {
6048        #[allow(missing_docs)]
6049        pub account: alloy::sol_types::private::Address,
6050    }
6051    #[allow(
6052        non_camel_case_types,
6053        non_snake_case,
6054        clippy::pub_underscore_fields,
6055        clippy::style
6056    )]
6057    const _: () = {
6058        use alloy::sol_types as alloy_sol_types;
6059        #[doc(hidden)]
6060        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6061        #[doc(hidden)]
6062        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6063        #[cfg(test)]
6064        #[allow(dead_code, unreachable_patterns)]
6065        fn _type_assertion(
6066            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6067        ) {
6068            match _t {
6069                alloy_sol_types::private::AssertTypeEq::<
6070                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6071                >(_) => {}
6072            }
6073        }
6074        #[automatically_derived]
6075        #[doc(hidden)]
6076        impl ::core::convert::From<OwnableUnauthorizedAccount>
6077        for UnderlyingRustTuple<'_> {
6078            fn from(value: OwnableUnauthorizedAccount) -> Self {
6079                (value.account,)
6080            }
6081        }
6082        #[automatically_derived]
6083        #[doc(hidden)]
6084        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6085        for OwnableUnauthorizedAccount {
6086            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6087                Self { account: tuple.0 }
6088            }
6089        }
6090        #[automatically_derived]
6091        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6092            type Parameters<'a> = UnderlyingSolTuple<'a>;
6093            type Token<'a> = <Self::Parameters<
6094                'a,
6095            > as alloy_sol_types::SolType>::Token<'a>;
6096            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6097            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6098            #[inline]
6099            fn new<'a>(
6100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6101            ) -> Self {
6102                tuple.into()
6103            }
6104            #[inline]
6105            fn tokenize(&self) -> Self::Token<'_> {
6106                (
6107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6108                        &self.account,
6109                    ),
6110                )
6111            }
6112        }
6113    };
6114    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6115    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6116```solidity
6117error ProverNotPermissioned();
6118```*/
6119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6120    #[derive(Clone)]
6121    pub struct ProverNotPermissioned {}
6122    #[allow(
6123        non_camel_case_types,
6124        non_snake_case,
6125        clippy::pub_underscore_fields,
6126        clippy::style
6127    )]
6128    const _: () = {
6129        use alloy::sol_types as alloy_sol_types;
6130        #[doc(hidden)]
6131        type UnderlyingSolTuple<'a> = ();
6132        #[doc(hidden)]
6133        type UnderlyingRustTuple<'a> = ();
6134        #[cfg(test)]
6135        #[allow(dead_code, unreachable_patterns)]
6136        fn _type_assertion(
6137            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6138        ) {
6139            match _t {
6140                alloy_sol_types::private::AssertTypeEq::<
6141                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6142                >(_) => {}
6143            }
6144        }
6145        #[automatically_derived]
6146        #[doc(hidden)]
6147        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6148            fn from(value: ProverNotPermissioned) -> Self {
6149                ()
6150            }
6151        }
6152        #[automatically_derived]
6153        #[doc(hidden)]
6154        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6155            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6156                Self {}
6157            }
6158        }
6159        #[automatically_derived]
6160        impl alloy_sol_types::SolError for ProverNotPermissioned {
6161            type Parameters<'a> = UnderlyingSolTuple<'a>;
6162            type Token<'a> = <Self::Parameters<
6163                'a,
6164            > as alloy_sol_types::SolType>::Token<'a>;
6165            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6166            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6167            #[inline]
6168            fn new<'a>(
6169                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6170            ) -> Self {
6171                tuple.into()
6172            }
6173            #[inline]
6174            fn tokenize(&self) -> Self::Token<'_> {
6175                ()
6176            }
6177        }
6178    };
6179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6180    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6181```solidity
6182error UUPSUnauthorizedCallContext();
6183```*/
6184    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6185    #[derive(Clone)]
6186    pub struct UUPSUnauthorizedCallContext {}
6187    #[allow(
6188        non_camel_case_types,
6189        non_snake_case,
6190        clippy::pub_underscore_fields,
6191        clippy::style
6192    )]
6193    const _: () = {
6194        use alloy::sol_types as alloy_sol_types;
6195        #[doc(hidden)]
6196        type UnderlyingSolTuple<'a> = ();
6197        #[doc(hidden)]
6198        type UnderlyingRustTuple<'a> = ();
6199        #[cfg(test)]
6200        #[allow(dead_code, unreachable_patterns)]
6201        fn _type_assertion(
6202            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6203        ) {
6204            match _t {
6205                alloy_sol_types::private::AssertTypeEq::<
6206                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6207                >(_) => {}
6208            }
6209        }
6210        #[automatically_derived]
6211        #[doc(hidden)]
6212        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6213        for UnderlyingRustTuple<'_> {
6214            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6215                ()
6216            }
6217        }
6218        #[automatically_derived]
6219        #[doc(hidden)]
6220        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6221        for UUPSUnauthorizedCallContext {
6222            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6223                Self {}
6224            }
6225        }
6226        #[automatically_derived]
6227        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6228            type Parameters<'a> = UnderlyingSolTuple<'a>;
6229            type Token<'a> = <Self::Parameters<
6230                'a,
6231            > as alloy_sol_types::SolType>::Token<'a>;
6232            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6233            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6234            #[inline]
6235            fn new<'a>(
6236                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6237            ) -> Self {
6238                tuple.into()
6239            }
6240            #[inline]
6241            fn tokenize(&self) -> Self::Token<'_> {
6242                ()
6243            }
6244        }
6245    };
6246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6247    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6248```solidity
6249error UUPSUnsupportedProxiableUUID(bytes32 slot);
6250```*/
6251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6252    #[derive(Clone)]
6253    pub struct UUPSUnsupportedProxiableUUID {
6254        #[allow(missing_docs)]
6255        pub slot: alloy::sol_types::private::FixedBytes<32>,
6256    }
6257    #[allow(
6258        non_camel_case_types,
6259        non_snake_case,
6260        clippy::pub_underscore_fields,
6261        clippy::style
6262    )]
6263    const _: () = {
6264        use alloy::sol_types as alloy_sol_types;
6265        #[doc(hidden)]
6266        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6267        #[doc(hidden)]
6268        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6269        #[cfg(test)]
6270        #[allow(dead_code, unreachable_patterns)]
6271        fn _type_assertion(
6272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6273        ) {
6274            match _t {
6275                alloy_sol_types::private::AssertTypeEq::<
6276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6277                >(_) => {}
6278            }
6279        }
6280        #[automatically_derived]
6281        #[doc(hidden)]
6282        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6283        for UnderlyingRustTuple<'_> {
6284            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6285                (value.slot,)
6286            }
6287        }
6288        #[automatically_derived]
6289        #[doc(hidden)]
6290        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6291        for UUPSUnsupportedProxiableUUID {
6292            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6293                Self { slot: tuple.0 }
6294            }
6295        }
6296        #[automatically_derived]
6297        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6298            type Parameters<'a> = UnderlyingSolTuple<'a>;
6299            type Token<'a> = <Self::Parameters<
6300                'a,
6301            > as alloy_sol_types::SolType>::Token<'a>;
6302            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6303            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6304            #[inline]
6305            fn new<'a>(
6306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                tuple.into()
6309            }
6310            #[inline]
6311            fn tokenize(&self) -> Self::Token<'_> {
6312                (
6313                    <alloy::sol_types::sol_data::FixedBytes<
6314                        32,
6315                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6316                )
6317            }
6318        }
6319    };
6320    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6321    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6322```solidity
6323error WrongStakeTableUsed();
6324```*/
6325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6326    #[derive(Clone)]
6327    pub struct WrongStakeTableUsed {}
6328    #[allow(
6329        non_camel_case_types,
6330        non_snake_case,
6331        clippy::pub_underscore_fields,
6332        clippy::style
6333    )]
6334    const _: () = {
6335        use alloy::sol_types as alloy_sol_types;
6336        #[doc(hidden)]
6337        type UnderlyingSolTuple<'a> = ();
6338        #[doc(hidden)]
6339        type UnderlyingRustTuple<'a> = ();
6340        #[cfg(test)]
6341        #[allow(dead_code, unreachable_patterns)]
6342        fn _type_assertion(
6343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6344        ) {
6345            match _t {
6346                alloy_sol_types::private::AssertTypeEq::<
6347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6348                >(_) => {}
6349            }
6350        }
6351        #[automatically_derived]
6352        #[doc(hidden)]
6353        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6354            fn from(value: WrongStakeTableUsed) -> Self {
6355                ()
6356            }
6357        }
6358        #[automatically_derived]
6359        #[doc(hidden)]
6360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6362                Self {}
6363            }
6364        }
6365        #[automatically_derived]
6366        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6367            type Parameters<'a> = UnderlyingSolTuple<'a>;
6368            type Token<'a> = <Self::Parameters<
6369                'a,
6370            > as alloy_sol_types::SolType>::Token<'a>;
6371            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6372            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6373            #[inline]
6374            fn new<'a>(
6375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6376            ) -> Self {
6377                tuple.into()
6378            }
6379            #[inline]
6380            fn tokenize(&self) -> Self::Token<'_> {
6381                ()
6382            }
6383        }
6384    };
6385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6386    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6387```solidity
6388event Initialized(uint64 version);
6389```*/
6390    #[allow(
6391        non_camel_case_types,
6392        non_snake_case,
6393        clippy::pub_underscore_fields,
6394        clippy::style
6395    )]
6396    #[derive(Clone)]
6397    pub struct Initialized {
6398        #[allow(missing_docs)]
6399        pub version: u64,
6400    }
6401    #[allow(
6402        non_camel_case_types,
6403        non_snake_case,
6404        clippy::pub_underscore_fields,
6405        clippy::style
6406    )]
6407    const _: () = {
6408        use alloy::sol_types as alloy_sol_types;
6409        #[automatically_derived]
6410        impl alloy_sol_types::SolEvent for Initialized {
6411            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6412            type DataToken<'a> = <Self::DataTuple<
6413                'a,
6414            > as alloy_sol_types::SolType>::Token<'a>;
6415            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6416            const SIGNATURE: &'static str = "Initialized(uint64)";
6417            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6418                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6419                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6420                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6421            ]);
6422            const ANONYMOUS: bool = false;
6423            #[allow(unused_variables)]
6424            #[inline]
6425            fn new(
6426                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6427                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6428            ) -> Self {
6429                Self { version: data.0 }
6430            }
6431            #[inline]
6432            fn check_signature(
6433                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6434            ) -> alloy_sol_types::Result<()> {
6435                if topics.0 != Self::SIGNATURE_HASH {
6436                    return Err(
6437                        alloy_sol_types::Error::invalid_event_signature_hash(
6438                            Self::SIGNATURE,
6439                            topics.0,
6440                            Self::SIGNATURE_HASH,
6441                        ),
6442                    );
6443                }
6444                Ok(())
6445            }
6446            #[inline]
6447            fn tokenize_body(&self) -> Self::DataToken<'_> {
6448                (
6449                    <alloy::sol_types::sol_data::Uint<
6450                        64,
6451                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6452                )
6453            }
6454            #[inline]
6455            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6456                (Self::SIGNATURE_HASH.into(),)
6457            }
6458            #[inline]
6459            fn encode_topics_raw(
6460                &self,
6461                out: &mut [alloy_sol_types::abi::token::WordToken],
6462            ) -> alloy_sol_types::Result<()> {
6463                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6464                    return Err(alloy_sol_types::Error::Overrun);
6465                }
6466                out[0usize] = alloy_sol_types::abi::token::WordToken(
6467                    Self::SIGNATURE_HASH,
6468                );
6469                Ok(())
6470            }
6471        }
6472        #[automatically_derived]
6473        impl alloy_sol_types::private::IntoLogData for Initialized {
6474            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6475                From::from(self)
6476            }
6477            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6478                From::from(&self)
6479            }
6480        }
6481        #[automatically_derived]
6482        impl From<&Initialized> for alloy_sol_types::private::LogData {
6483            #[inline]
6484            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6485                alloy_sol_types::SolEvent::encode_log_data(this)
6486            }
6487        }
6488    };
6489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6490    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6491```solidity
6492event NewEpoch(uint64 epoch);
6493```*/
6494    #[allow(
6495        non_camel_case_types,
6496        non_snake_case,
6497        clippy::pub_underscore_fields,
6498        clippy::style
6499    )]
6500    #[derive(Clone)]
6501    pub struct NewEpoch {
6502        #[allow(missing_docs)]
6503        pub epoch: u64,
6504    }
6505    #[allow(
6506        non_camel_case_types,
6507        non_snake_case,
6508        clippy::pub_underscore_fields,
6509        clippy::style
6510    )]
6511    const _: () = {
6512        use alloy::sol_types as alloy_sol_types;
6513        #[automatically_derived]
6514        impl alloy_sol_types::SolEvent for NewEpoch {
6515            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6516            type DataToken<'a> = <Self::DataTuple<
6517                'a,
6518            > as alloy_sol_types::SolType>::Token<'a>;
6519            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6520            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6521            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6522                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6523                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6524                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6525            ]);
6526            const ANONYMOUS: bool = false;
6527            #[allow(unused_variables)]
6528            #[inline]
6529            fn new(
6530                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6531                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6532            ) -> Self {
6533                Self { epoch: data.0 }
6534            }
6535            #[inline]
6536            fn check_signature(
6537                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6538            ) -> alloy_sol_types::Result<()> {
6539                if topics.0 != Self::SIGNATURE_HASH {
6540                    return Err(
6541                        alloy_sol_types::Error::invalid_event_signature_hash(
6542                            Self::SIGNATURE,
6543                            topics.0,
6544                            Self::SIGNATURE_HASH,
6545                        ),
6546                    );
6547                }
6548                Ok(())
6549            }
6550            #[inline]
6551            fn tokenize_body(&self) -> Self::DataToken<'_> {
6552                (
6553                    <alloy::sol_types::sol_data::Uint<
6554                        64,
6555                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6556                )
6557            }
6558            #[inline]
6559            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6560                (Self::SIGNATURE_HASH.into(),)
6561            }
6562            #[inline]
6563            fn encode_topics_raw(
6564                &self,
6565                out: &mut [alloy_sol_types::abi::token::WordToken],
6566            ) -> alloy_sol_types::Result<()> {
6567                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6568                    return Err(alloy_sol_types::Error::Overrun);
6569                }
6570                out[0usize] = alloy_sol_types::abi::token::WordToken(
6571                    Self::SIGNATURE_HASH,
6572                );
6573                Ok(())
6574            }
6575        }
6576        #[automatically_derived]
6577        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6578            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6579                From::from(self)
6580            }
6581            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6582                From::from(&self)
6583            }
6584        }
6585        #[automatically_derived]
6586        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6587            #[inline]
6588            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6589                alloy_sol_types::SolEvent::encode_log_data(this)
6590            }
6591        }
6592    };
6593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6594    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6595```solidity
6596event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6597```*/
6598    #[allow(
6599        non_camel_case_types,
6600        non_snake_case,
6601        clippy::pub_underscore_fields,
6602        clippy::style
6603    )]
6604    #[derive(Clone)]
6605    pub struct NewState {
6606        #[allow(missing_docs)]
6607        pub viewNum: u64,
6608        #[allow(missing_docs)]
6609        pub blockHeight: u64,
6610        #[allow(missing_docs)]
6611        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6612    }
6613    #[allow(
6614        non_camel_case_types,
6615        non_snake_case,
6616        clippy::pub_underscore_fields,
6617        clippy::style
6618    )]
6619    const _: () = {
6620        use alloy::sol_types as alloy_sol_types;
6621        #[automatically_derived]
6622        impl alloy_sol_types::SolEvent for NewState {
6623            type DataTuple<'a> = (BN254::ScalarField,);
6624            type DataToken<'a> = <Self::DataTuple<
6625                'a,
6626            > as alloy_sol_types::SolType>::Token<'a>;
6627            type TopicList = (
6628                alloy_sol_types::sol_data::FixedBytes<32>,
6629                alloy::sol_types::sol_data::Uint<64>,
6630                alloy::sol_types::sol_data::Uint<64>,
6631            );
6632            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6633            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6634                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6635                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6636                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6637            ]);
6638            const ANONYMOUS: bool = false;
6639            #[allow(unused_variables)]
6640            #[inline]
6641            fn new(
6642                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6643                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6644            ) -> Self {
6645                Self {
6646                    viewNum: topics.1,
6647                    blockHeight: topics.2,
6648                    blockCommRoot: data.0,
6649                }
6650            }
6651            #[inline]
6652            fn check_signature(
6653                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6654            ) -> alloy_sol_types::Result<()> {
6655                if topics.0 != Self::SIGNATURE_HASH {
6656                    return Err(
6657                        alloy_sol_types::Error::invalid_event_signature_hash(
6658                            Self::SIGNATURE,
6659                            topics.0,
6660                            Self::SIGNATURE_HASH,
6661                        ),
6662                    );
6663                }
6664                Ok(())
6665            }
6666            #[inline]
6667            fn tokenize_body(&self) -> Self::DataToken<'_> {
6668                (
6669                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6670                        &self.blockCommRoot,
6671                    ),
6672                )
6673            }
6674            #[inline]
6675            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6676                (
6677                    Self::SIGNATURE_HASH.into(),
6678                    self.viewNum.clone(),
6679                    self.blockHeight.clone(),
6680                )
6681            }
6682            #[inline]
6683            fn encode_topics_raw(
6684                &self,
6685                out: &mut [alloy_sol_types::abi::token::WordToken],
6686            ) -> alloy_sol_types::Result<()> {
6687                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6688                    return Err(alloy_sol_types::Error::Overrun);
6689                }
6690                out[0usize] = alloy_sol_types::abi::token::WordToken(
6691                    Self::SIGNATURE_HASH,
6692                );
6693                out[1usize] = <alloy::sol_types::sol_data::Uint<
6694                    64,
6695                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6696                out[2usize] = <alloy::sol_types::sol_data::Uint<
6697                    64,
6698                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6699                Ok(())
6700            }
6701        }
6702        #[automatically_derived]
6703        impl alloy_sol_types::private::IntoLogData for NewState {
6704            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6705                From::from(self)
6706            }
6707            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6708                From::from(&self)
6709            }
6710        }
6711        #[automatically_derived]
6712        impl From<&NewState> for alloy_sol_types::private::LogData {
6713            #[inline]
6714            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6715                alloy_sol_types::SolEvent::encode_log_data(this)
6716            }
6717        }
6718    };
6719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6720    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6721```solidity
6722event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6723```*/
6724    #[allow(
6725        non_camel_case_types,
6726        non_snake_case,
6727        clippy::pub_underscore_fields,
6728        clippy::style
6729    )]
6730    #[derive(Clone)]
6731    pub struct OwnershipTransferred {
6732        #[allow(missing_docs)]
6733        pub previousOwner: alloy::sol_types::private::Address,
6734        #[allow(missing_docs)]
6735        pub newOwner: alloy::sol_types::private::Address,
6736    }
6737    #[allow(
6738        non_camel_case_types,
6739        non_snake_case,
6740        clippy::pub_underscore_fields,
6741        clippy::style
6742    )]
6743    const _: () = {
6744        use alloy::sol_types as alloy_sol_types;
6745        #[automatically_derived]
6746        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6747            type DataTuple<'a> = ();
6748            type DataToken<'a> = <Self::DataTuple<
6749                'a,
6750            > as alloy_sol_types::SolType>::Token<'a>;
6751            type TopicList = (
6752                alloy_sol_types::sol_data::FixedBytes<32>,
6753                alloy::sol_types::sol_data::Address,
6754                alloy::sol_types::sol_data::Address,
6755            );
6756            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6757            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6758                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6759                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6760                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6761            ]);
6762            const ANONYMOUS: bool = false;
6763            #[allow(unused_variables)]
6764            #[inline]
6765            fn new(
6766                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6767                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6768            ) -> Self {
6769                Self {
6770                    previousOwner: topics.1,
6771                    newOwner: topics.2,
6772                }
6773            }
6774            #[inline]
6775            fn check_signature(
6776                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6777            ) -> alloy_sol_types::Result<()> {
6778                if topics.0 != Self::SIGNATURE_HASH {
6779                    return Err(
6780                        alloy_sol_types::Error::invalid_event_signature_hash(
6781                            Self::SIGNATURE,
6782                            topics.0,
6783                            Self::SIGNATURE_HASH,
6784                        ),
6785                    );
6786                }
6787                Ok(())
6788            }
6789            #[inline]
6790            fn tokenize_body(&self) -> Self::DataToken<'_> {
6791                ()
6792            }
6793            #[inline]
6794            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6795                (
6796                    Self::SIGNATURE_HASH.into(),
6797                    self.previousOwner.clone(),
6798                    self.newOwner.clone(),
6799                )
6800            }
6801            #[inline]
6802            fn encode_topics_raw(
6803                &self,
6804                out: &mut [alloy_sol_types::abi::token::WordToken],
6805            ) -> alloy_sol_types::Result<()> {
6806                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6807                    return Err(alloy_sol_types::Error::Overrun);
6808                }
6809                out[0usize] = alloy_sol_types::abi::token::WordToken(
6810                    Self::SIGNATURE_HASH,
6811                );
6812                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6813                    &self.previousOwner,
6814                );
6815                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6816                    &self.newOwner,
6817                );
6818                Ok(())
6819            }
6820        }
6821        #[automatically_derived]
6822        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6824                From::from(self)
6825            }
6826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6827                From::from(&self)
6828            }
6829        }
6830        #[automatically_derived]
6831        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6832            #[inline]
6833            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6834                alloy_sol_types::SolEvent::encode_log_data(this)
6835            }
6836        }
6837    };
6838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6839    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6840```solidity
6841event PermissionedProverNotRequired();
6842```*/
6843    #[allow(
6844        non_camel_case_types,
6845        non_snake_case,
6846        clippy::pub_underscore_fields,
6847        clippy::style
6848    )]
6849    #[derive(Clone)]
6850    pub struct PermissionedProverNotRequired {}
6851    #[allow(
6852        non_camel_case_types,
6853        non_snake_case,
6854        clippy::pub_underscore_fields,
6855        clippy::style
6856    )]
6857    const _: () = {
6858        use alloy::sol_types as alloy_sol_types;
6859        #[automatically_derived]
6860        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6861            type DataTuple<'a> = ();
6862            type DataToken<'a> = <Self::DataTuple<
6863                'a,
6864            > as alloy_sol_types::SolType>::Token<'a>;
6865            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6866            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6867            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6868                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6869                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6870                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6871            ]);
6872            const ANONYMOUS: bool = false;
6873            #[allow(unused_variables)]
6874            #[inline]
6875            fn new(
6876                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6877                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6878            ) -> Self {
6879                Self {}
6880            }
6881            #[inline]
6882            fn check_signature(
6883                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6884            ) -> alloy_sol_types::Result<()> {
6885                if topics.0 != Self::SIGNATURE_HASH {
6886                    return Err(
6887                        alloy_sol_types::Error::invalid_event_signature_hash(
6888                            Self::SIGNATURE,
6889                            topics.0,
6890                            Self::SIGNATURE_HASH,
6891                        ),
6892                    );
6893                }
6894                Ok(())
6895            }
6896            #[inline]
6897            fn tokenize_body(&self) -> Self::DataToken<'_> {
6898                ()
6899            }
6900            #[inline]
6901            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6902                (Self::SIGNATURE_HASH.into(),)
6903            }
6904            #[inline]
6905            fn encode_topics_raw(
6906                &self,
6907                out: &mut [alloy_sol_types::abi::token::WordToken],
6908            ) -> alloy_sol_types::Result<()> {
6909                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6910                    return Err(alloy_sol_types::Error::Overrun);
6911                }
6912                out[0usize] = alloy_sol_types::abi::token::WordToken(
6913                    Self::SIGNATURE_HASH,
6914                );
6915                Ok(())
6916            }
6917        }
6918        #[automatically_derived]
6919        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6920            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6921                From::from(self)
6922            }
6923            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6924                From::from(&self)
6925            }
6926        }
6927        #[automatically_derived]
6928        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6929            #[inline]
6930            fn from(
6931                this: &PermissionedProverNotRequired,
6932            ) -> alloy_sol_types::private::LogData {
6933                alloy_sol_types::SolEvent::encode_log_data(this)
6934            }
6935        }
6936    };
6937    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6938    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6939```solidity
6940event PermissionedProverRequired(address permissionedProver);
6941```*/
6942    #[allow(
6943        non_camel_case_types,
6944        non_snake_case,
6945        clippy::pub_underscore_fields,
6946        clippy::style
6947    )]
6948    #[derive(Clone)]
6949    pub struct PermissionedProverRequired {
6950        #[allow(missing_docs)]
6951        pub permissionedProver: alloy::sol_types::private::Address,
6952    }
6953    #[allow(
6954        non_camel_case_types,
6955        non_snake_case,
6956        clippy::pub_underscore_fields,
6957        clippy::style
6958    )]
6959    const _: () = {
6960        use alloy::sol_types as alloy_sol_types;
6961        #[automatically_derived]
6962        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6963            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6964            type DataToken<'a> = <Self::DataTuple<
6965                'a,
6966            > as alloy_sol_types::SolType>::Token<'a>;
6967            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6968            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6969            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6970                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6971                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6972                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6973            ]);
6974            const ANONYMOUS: bool = false;
6975            #[allow(unused_variables)]
6976            #[inline]
6977            fn new(
6978                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6979                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6980            ) -> Self {
6981                Self { permissionedProver: data.0 }
6982            }
6983            #[inline]
6984            fn check_signature(
6985                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6986            ) -> alloy_sol_types::Result<()> {
6987                if topics.0 != Self::SIGNATURE_HASH {
6988                    return Err(
6989                        alloy_sol_types::Error::invalid_event_signature_hash(
6990                            Self::SIGNATURE,
6991                            topics.0,
6992                            Self::SIGNATURE_HASH,
6993                        ),
6994                    );
6995                }
6996                Ok(())
6997            }
6998            #[inline]
6999            fn tokenize_body(&self) -> Self::DataToken<'_> {
7000                (
7001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7002                        &self.permissionedProver,
7003                    ),
7004                )
7005            }
7006            #[inline]
7007            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7008                (Self::SIGNATURE_HASH.into(),)
7009            }
7010            #[inline]
7011            fn encode_topics_raw(
7012                &self,
7013                out: &mut [alloy_sol_types::abi::token::WordToken],
7014            ) -> alloy_sol_types::Result<()> {
7015                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7016                    return Err(alloy_sol_types::Error::Overrun);
7017                }
7018                out[0usize] = alloy_sol_types::abi::token::WordToken(
7019                    Self::SIGNATURE_HASH,
7020                );
7021                Ok(())
7022            }
7023        }
7024        #[automatically_derived]
7025        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7026            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7027                From::from(self)
7028            }
7029            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7030                From::from(&self)
7031            }
7032        }
7033        #[automatically_derived]
7034        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7035            #[inline]
7036            fn from(
7037                this: &PermissionedProverRequired,
7038            ) -> alloy_sol_types::private::LogData {
7039                alloy_sol_types::SolEvent::encode_log_data(this)
7040            }
7041        }
7042    };
7043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7044    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7045```solidity
7046event Upgrade(address implementation);
7047```*/
7048    #[allow(
7049        non_camel_case_types,
7050        non_snake_case,
7051        clippy::pub_underscore_fields,
7052        clippy::style
7053    )]
7054    #[derive(Clone)]
7055    pub struct Upgrade {
7056        #[allow(missing_docs)]
7057        pub implementation: alloy::sol_types::private::Address,
7058    }
7059    #[allow(
7060        non_camel_case_types,
7061        non_snake_case,
7062        clippy::pub_underscore_fields,
7063        clippy::style
7064    )]
7065    const _: () = {
7066        use alloy::sol_types as alloy_sol_types;
7067        #[automatically_derived]
7068        impl alloy_sol_types::SolEvent for Upgrade {
7069            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7070            type DataToken<'a> = <Self::DataTuple<
7071                'a,
7072            > as alloy_sol_types::SolType>::Token<'a>;
7073            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7074            const SIGNATURE: &'static str = "Upgrade(address)";
7075            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7076                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7077                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7078                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7079            ]);
7080            const ANONYMOUS: bool = false;
7081            #[allow(unused_variables)]
7082            #[inline]
7083            fn new(
7084                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7085                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7086            ) -> Self {
7087                Self { implementation: data.0 }
7088            }
7089            #[inline]
7090            fn check_signature(
7091                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7092            ) -> alloy_sol_types::Result<()> {
7093                if topics.0 != Self::SIGNATURE_HASH {
7094                    return Err(
7095                        alloy_sol_types::Error::invalid_event_signature_hash(
7096                            Self::SIGNATURE,
7097                            topics.0,
7098                            Self::SIGNATURE_HASH,
7099                        ),
7100                    );
7101                }
7102                Ok(())
7103            }
7104            #[inline]
7105            fn tokenize_body(&self) -> Self::DataToken<'_> {
7106                (
7107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7108                        &self.implementation,
7109                    ),
7110                )
7111            }
7112            #[inline]
7113            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7114                (Self::SIGNATURE_HASH.into(),)
7115            }
7116            #[inline]
7117            fn encode_topics_raw(
7118                &self,
7119                out: &mut [alloy_sol_types::abi::token::WordToken],
7120            ) -> alloy_sol_types::Result<()> {
7121                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7122                    return Err(alloy_sol_types::Error::Overrun);
7123                }
7124                out[0usize] = alloy_sol_types::abi::token::WordToken(
7125                    Self::SIGNATURE_HASH,
7126                );
7127                Ok(())
7128            }
7129        }
7130        #[automatically_derived]
7131        impl alloy_sol_types::private::IntoLogData for Upgrade {
7132            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7133                From::from(self)
7134            }
7135            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7136                From::from(&self)
7137            }
7138        }
7139        #[automatically_derived]
7140        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7141            #[inline]
7142            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7143                alloy_sol_types::SolEvent::encode_log_data(this)
7144            }
7145        }
7146    };
7147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7148    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7149```solidity
7150event Upgraded(address indexed implementation);
7151```*/
7152    #[allow(
7153        non_camel_case_types,
7154        non_snake_case,
7155        clippy::pub_underscore_fields,
7156        clippy::style
7157    )]
7158    #[derive(Clone)]
7159    pub struct Upgraded {
7160        #[allow(missing_docs)]
7161        pub implementation: alloy::sol_types::private::Address,
7162    }
7163    #[allow(
7164        non_camel_case_types,
7165        non_snake_case,
7166        clippy::pub_underscore_fields,
7167        clippy::style
7168    )]
7169    const _: () = {
7170        use alloy::sol_types as alloy_sol_types;
7171        #[automatically_derived]
7172        impl alloy_sol_types::SolEvent for Upgraded {
7173            type DataTuple<'a> = ();
7174            type DataToken<'a> = <Self::DataTuple<
7175                'a,
7176            > as alloy_sol_types::SolType>::Token<'a>;
7177            type TopicList = (
7178                alloy_sol_types::sol_data::FixedBytes<32>,
7179                alloy::sol_types::sol_data::Address,
7180            );
7181            const SIGNATURE: &'static str = "Upgraded(address)";
7182            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7183                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7184                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7185                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7186            ]);
7187            const ANONYMOUS: bool = false;
7188            #[allow(unused_variables)]
7189            #[inline]
7190            fn new(
7191                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7192                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7193            ) -> Self {
7194                Self { implementation: topics.1 }
7195            }
7196            #[inline]
7197            fn check_signature(
7198                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7199            ) -> alloy_sol_types::Result<()> {
7200                if topics.0 != Self::SIGNATURE_HASH {
7201                    return Err(
7202                        alloy_sol_types::Error::invalid_event_signature_hash(
7203                            Self::SIGNATURE,
7204                            topics.0,
7205                            Self::SIGNATURE_HASH,
7206                        ),
7207                    );
7208                }
7209                Ok(())
7210            }
7211            #[inline]
7212            fn tokenize_body(&self) -> Self::DataToken<'_> {
7213                ()
7214            }
7215            #[inline]
7216            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7217                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7218            }
7219            #[inline]
7220            fn encode_topics_raw(
7221                &self,
7222                out: &mut [alloy_sol_types::abi::token::WordToken],
7223            ) -> alloy_sol_types::Result<()> {
7224                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7225                    return Err(alloy_sol_types::Error::Overrun);
7226                }
7227                out[0usize] = alloy_sol_types::abi::token::WordToken(
7228                    Self::SIGNATURE_HASH,
7229                );
7230                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7231                    &self.implementation,
7232                );
7233                Ok(())
7234            }
7235        }
7236        #[automatically_derived]
7237        impl alloy_sol_types::private::IntoLogData for Upgraded {
7238            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7239                From::from(self)
7240            }
7241            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7242                From::from(&self)
7243            }
7244        }
7245        #[automatically_derived]
7246        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7247            #[inline]
7248            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7249                alloy_sol_types::SolEvent::encode_log_data(this)
7250            }
7251        }
7252    };
7253    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7254    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7255```solidity
7256function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7257```*/
7258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7259    #[derive(Clone)]
7260    pub struct UPGRADE_INTERFACE_VERSIONCall {}
7261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7262    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7264    #[derive(Clone)]
7265    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7266        #[allow(missing_docs)]
7267        pub _0: alloy::sol_types::private::String,
7268    }
7269    #[allow(
7270        non_camel_case_types,
7271        non_snake_case,
7272        clippy::pub_underscore_fields,
7273        clippy::style
7274    )]
7275    const _: () = {
7276        use alloy::sol_types as alloy_sol_types;
7277        {
7278            #[doc(hidden)]
7279            type UnderlyingSolTuple<'a> = ();
7280            #[doc(hidden)]
7281            type UnderlyingRustTuple<'a> = ();
7282            #[cfg(test)]
7283            #[allow(dead_code, unreachable_patterns)]
7284            fn _type_assertion(
7285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7286            ) {
7287                match _t {
7288                    alloy_sol_types::private::AssertTypeEq::<
7289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7290                    >(_) => {}
7291                }
7292            }
7293            #[automatically_derived]
7294            #[doc(hidden)]
7295            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7296            for UnderlyingRustTuple<'_> {
7297                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7298                    ()
7299                }
7300            }
7301            #[automatically_derived]
7302            #[doc(hidden)]
7303            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7304            for UPGRADE_INTERFACE_VERSIONCall {
7305                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7306                    Self {}
7307                }
7308            }
7309        }
7310        {
7311            #[doc(hidden)]
7312            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7313            #[doc(hidden)]
7314            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7315            #[cfg(test)]
7316            #[allow(dead_code, unreachable_patterns)]
7317            fn _type_assertion(
7318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7319            ) {
7320                match _t {
7321                    alloy_sol_types::private::AssertTypeEq::<
7322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7323                    >(_) => {}
7324                }
7325            }
7326            #[automatically_derived]
7327            #[doc(hidden)]
7328            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7329            for UnderlyingRustTuple<'_> {
7330                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7331                    (value._0,)
7332                }
7333            }
7334            #[automatically_derived]
7335            #[doc(hidden)]
7336            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7337            for UPGRADE_INTERFACE_VERSIONReturn {
7338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7339                    Self { _0: tuple.0 }
7340                }
7341            }
7342        }
7343        #[automatically_derived]
7344        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7345            type Parameters<'a> = ();
7346            type Token<'a> = <Self::Parameters<
7347                'a,
7348            > as alloy_sol_types::SolType>::Token<'a>;
7349            type Return = UPGRADE_INTERFACE_VERSIONReturn;
7350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7351            type ReturnToken<'a> = <Self::ReturnTuple<
7352                'a,
7353            > as alloy_sol_types::SolType>::Token<'a>;
7354            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7355            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7356            #[inline]
7357            fn new<'a>(
7358                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7359            ) -> Self {
7360                tuple.into()
7361            }
7362            #[inline]
7363            fn tokenize(&self) -> Self::Token<'_> {
7364                ()
7365            }
7366            #[inline]
7367            fn abi_decode_returns(
7368                data: &[u8],
7369                validate: bool,
7370            ) -> alloy_sol_types::Result<Self::Return> {
7371                <Self::ReturnTuple<
7372                    '_,
7373                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7374                    .map(Into::into)
7375            }
7376        }
7377    };
7378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7379    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7380```solidity
7381function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7382```*/
7383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7384    #[derive(Clone)]
7385    pub struct _getVkCall {}
7386    #[derive()]
7387    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7389    #[derive(Clone)]
7390    pub struct _getVkReturn {
7391        #[allow(missing_docs)]
7392        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7393    }
7394    #[allow(
7395        non_camel_case_types,
7396        non_snake_case,
7397        clippy::pub_underscore_fields,
7398        clippy::style
7399    )]
7400    const _: () = {
7401        use alloy::sol_types as alloy_sol_types;
7402        {
7403            #[doc(hidden)]
7404            type UnderlyingSolTuple<'a> = ();
7405            #[doc(hidden)]
7406            type UnderlyingRustTuple<'a> = ();
7407            #[cfg(test)]
7408            #[allow(dead_code, unreachable_patterns)]
7409            fn _type_assertion(
7410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7411            ) {
7412                match _t {
7413                    alloy_sol_types::private::AssertTypeEq::<
7414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7415                    >(_) => {}
7416                }
7417            }
7418            #[automatically_derived]
7419            #[doc(hidden)]
7420            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7421                fn from(value: _getVkCall) -> Self {
7422                    ()
7423                }
7424            }
7425            #[automatically_derived]
7426            #[doc(hidden)]
7427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7429                    Self {}
7430                }
7431            }
7432        }
7433        {
7434            #[doc(hidden)]
7435            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7436            #[doc(hidden)]
7437            type UnderlyingRustTuple<'a> = (
7438                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7439            );
7440            #[cfg(test)]
7441            #[allow(dead_code, unreachable_patterns)]
7442            fn _type_assertion(
7443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7444            ) {
7445                match _t {
7446                    alloy_sol_types::private::AssertTypeEq::<
7447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7448                    >(_) => {}
7449                }
7450            }
7451            #[automatically_derived]
7452            #[doc(hidden)]
7453            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7454                fn from(value: _getVkReturn) -> Self {
7455                    (value.vk,)
7456                }
7457            }
7458            #[automatically_derived]
7459            #[doc(hidden)]
7460            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7461                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7462                    Self { vk: tuple.0 }
7463                }
7464            }
7465        }
7466        #[automatically_derived]
7467        impl alloy_sol_types::SolCall for _getVkCall {
7468            type Parameters<'a> = ();
7469            type Token<'a> = <Self::Parameters<
7470                'a,
7471            > as alloy_sol_types::SolType>::Token<'a>;
7472            type Return = _getVkReturn;
7473            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7474            type ReturnToken<'a> = <Self::ReturnTuple<
7475                'a,
7476            > as alloy_sol_types::SolType>::Token<'a>;
7477            const SIGNATURE: &'static str = "_getVk()";
7478            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7479            #[inline]
7480            fn new<'a>(
7481                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7482            ) -> Self {
7483                tuple.into()
7484            }
7485            #[inline]
7486            fn tokenize(&self) -> Self::Token<'_> {
7487                ()
7488            }
7489            #[inline]
7490            fn abi_decode_returns(
7491                data: &[u8],
7492                validate: bool,
7493            ) -> alloy_sol_types::Result<Self::Return> {
7494                <Self::ReturnTuple<
7495                    '_,
7496                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7497                    .map(Into::into)
7498            }
7499        }
7500    };
7501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7502    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7503```solidity
7504function blocksPerEpoch() external view returns (uint64);
7505```*/
7506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7507    #[derive(Clone)]
7508    pub struct blocksPerEpochCall {}
7509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7510    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7512    #[derive(Clone)]
7513    pub struct blocksPerEpochReturn {
7514        #[allow(missing_docs)]
7515        pub _0: u64,
7516    }
7517    #[allow(
7518        non_camel_case_types,
7519        non_snake_case,
7520        clippy::pub_underscore_fields,
7521        clippy::style
7522    )]
7523    const _: () = {
7524        use alloy::sol_types as alloy_sol_types;
7525        {
7526            #[doc(hidden)]
7527            type UnderlyingSolTuple<'a> = ();
7528            #[doc(hidden)]
7529            type UnderlyingRustTuple<'a> = ();
7530            #[cfg(test)]
7531            #[allow(dead_code, unreachable_patterns)]
7532            fn _type_assertion(
7533                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7534            ) {
7535                match _t {
7536                    alloy_sol_types::private::AssertTypeEq::<
7537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7538                    >(_) => {}
7539                }
7540            }
7541            #[automatically_derived]
7542            #[doc(hidden)]
7543            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7544                fn from(value: blocksPerEpochCall) -> Self {
7545                    ()
7546                }
7547            }
7548            #[automatically_derived]
7549            #[doc(hidden)]
7550            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7552                    Self {}
7553                }
7554            }
7555        }
7556        {
7557            #[doc(hidden)]
7558            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7559            #[doc(hidden)]
7560            type UnderlyingRustTuple<'a> = (u64,);
7561            #[cfg(test)]
7562            #[allow(dead_code, unreachable_patterns)]
7563            fn _type_assertion(
7564                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7565            ) {
7566                match _t {
7567                    alloy_sol_types::private::AssertTypeEq::<
7568                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7569                    >(_) => {}
7570                }
7571            }
7572            #[automatically_derived]
7573            #[doc(hidden)]
7574            impl ::core::convert::From<blocksPerEpochReturn>
7575            for UnderlyingRustTuple<'_> {
7576                fn from(value: blocksPerEpochReturn) -> Self {
7577                    (value._0,)
7578                }
7579            }
7580            #[automatically_derived]
7581            #[doc(hidden)]
7582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7583            for blocksPerEpochReturn {
7584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7585                    Self { _0: tuple.0 }
7586                }
7587            }
7588        }
7589        #[automatically_derived]
7590        impl alloy_sol_types::SolCall for blocksPerEpochCall {
7591            type Parameters<'a> = ();
7592            type Token<'a> = <Self::Parameters<
7593                'a,
7594            > as alloy_sol_types::SolType>::Token<'a>;
7595            type Return = blocksPerEpochReturn;
7596            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7597            type ReturnToken<'a> = <Self::ReturnTuple<
7598                'a,
7599            > as alloy_sol_types::SolType>::Token<'a>;
7600            const SIGNATURE: &'static str = "blocksPerEpoch()";
7601            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
7602            #[inline]
7603            fn new<'a>(
7604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7605            ) -> Self {
7606                tuple.into()
7607            }
7608            #[inline]
7609            fn tokenize(&self) -> Self::Token<'_> {
7610                ()
7611            }
7612            #[inline]
7613            fn abi_decode_returns(
7614                data: &[u8],
7615                validate: bool,
7616            ) -> alloy_sol_types::Result<Self::Return> {
7617                <Self::ReturnTuple<
7618                    '_,
7619                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7620                    .map(Into::into)
7621            }
7622        }
7623    };
7624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7625    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7626```solidity
7627function currentBlockNumber() external view returns (uint256);
7628```*/
7629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7630    #[derive(Clone)]
7631    pub struct currentBlockNumberCall {}
7632    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7633    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7635    #[derive(Clone)]
7636    pub struct currentBlockNumberReturn {
7637        #[allow(missing_docs)]
7638        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7639    }
7640    #[allow(
7641        non_camel_case_types,
7642        non_snake_case,
7643        clippy::pub_underscore_fields,
7644        clippy::style
7645    )]
7646    const _: () = {
7647        use alloy::sol_types as alloy_sol_types;
7648        {
7649            #[doc(hidden)]
7650            type UnderlyingSolTuple<'a> = ();
7651            #[doc(hidden)]
7652            type UnderlyingRustTuple<'a> = ();
7653            #[cfg(test)]
7654            #[allow(dead_code, unreachable_patterns)]
7655            fn _type_assertion(
7656                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7657            ) {
7658                match _t {
7659                    alloy_sol_types::private::AssertTypeEq::<
7660                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7661                    >(_) => {}
7662                }
7663            }
7664            #[automatically_derived]
7665            #[doc(hidden)]
7666            impl ::core::convert::From<currentBlockNumberCall>
7667            for UnderlyingRustTuple<'_> {
7668                fn from(value: currentBlockNumberCall) -> Self {
7669                    ()
7670                }
7671            }
7672            #[automatically_derived]
7673            #[doc(hidden)]
7674            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7675            for currentBlockNumberCall {
7676                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7677                    Self {}
7678                }
7679            }
7680        }
7681        {
7682            #[doc(hidden)]
7683            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7684            #[doc(hidden)]
7685            type UnderlyingRustTuple<'a> = (
7686                alloy::sol_types::private::primitives::aliases::U256,
7687            );
7688            #[cfg(test)]
7689            #[allow(dead_code, unreachable_patterns)]
7690            fn _type_assertion(
7691                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7692            ) {
7693                match _t {
7694                    alloy_sol_types::private::AssertTypeEq::<
7695                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7696                    >(_) => {}
7697                }
7698            }
7699            #[automatically_derived]
7700            #[doc(hidden)]
7701            impl ::core::convert::From<currentBlockNumberReturn>
7702            for UnderlyingRustTuple<'_> {
7703                fn from(value: currentBlockNumberReturn) -> Self {
7704                    (value._0,)
7705                }
7706            }
7707            #[automatically_derived]
7708            #[doc(hidden)]
7709            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7710            for currentBlockNumberReturn {
7711                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7712                    Self { _0: tuple.0 }
7713                }
7714            }
7715        }
7716        #[automatically_derived]
7717        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7718            type Parameters<'a> = ();
7719            type Token<'a> = <Self::Parameters<
7720                'a,
7721            > as alloy_sol_types::SolType>::Token<'a>;
7722            type Return = currentBlockNumberReturn;
7723            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7724            type ReturnToken<'a> = <Self::ReturnTuple<
7725                'a,
7726            > as alloy_sol_types::SolType>::Token<'a>;
7727            const SIGNATURE: &'static str = "currentBlockNumber()";
7728            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7729            #[inline]
7730            fn new<'a>(
7731                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7732            ) -> Self {
7733                tuple.into()
7734            }
7735            #[inline]
7736            fn tokenize(&self) -> Self::Token<'_> {
7737                ()
7738            }
7739            #[inline]
7740            fn abi_decode_returns(
7741                data: &[u8],
7742                validate: bool,
7743            ) -> alloy_sol_types::Result<Self::Return> {
7744                <Self::ReturnTuple<
7745                    '_,
7746                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7747                    .map(Into::into)
7748            }
7749        }
7750    };
7751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7752    /**Function with signature `currentEpoch()` and selector `0x76671808`.
7753```solidity
7754function currentEpoch() external view returns (uint64);
7755```*/
7756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7757    #[derive(Clone)]
7758    pub struct currentEpochCall {}
7759    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7760    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
7761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7762    #[derive(Clone)]
7763    pub struct currentEpochReturn {
7764        #[allow(missing_docs)]
7765        pub _0: u64,
7766    }
7767    #[allow(
7768        non_camel_case_types,
7769        non_snake_case,
7770        clippy::pub_underscore_fields,
7771        clippy::style
7772    )]
7773    const _: () = {
7774        use alloy::sol_types as alloy_sol_types;
7775        {
7776            #[doc(hidden)]
7777            type UnderlyingSolTuple<'a> = ();
7778            #[doc(hidden)]
7779            type UnderlyingRustTuple<'a> = ();
7780            #[cfg(test)]
7781            #[allow(dead_code, unreachable_patterns)]
7782            fn _type_assertion(
7783                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7784            ) {
7785                match _t {
7786                    alloy_sol_types::private::AssertTypeEq::<
7787                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7788                    >(_) => {}
7789                }
7790            }
7791            #[automatically_derived]
7792            #[doc(hidden)]
7793            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
7794                fn from(value: currentEpochCall) -> Self {
7795                    ()
7796                }
7797            }
7798            #[automatically_derived]
7799            #[doc(hidden)]
7800            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
7801                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7802                    Self {}
7803                }
7804            }
7805        }
7806        {
7807            #[doc(hidden)]
7808            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7809            #[doc(hidden)]
7810            type UnderlyingRustTuple<'a> = (u64,);
7811            #[cfg(test)]
7812            #[allow(dead_code, unreachable_patterns)]
7813            fn _type_assertion(
7814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7815            ) {
7816                match _t {
7817                    alloy_sol_types::private::AssertTypeEq::<
7818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7819                    >(_) => {}
7820                }
7821            }
7822            #[automatically_derived]
7823            #[doc(hidden)]
7824            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
7825                fn from(value: currentEpochReturn) -> Self {
7826                    (value._0,)
7827                }
7828            }
7829            #[automatically_derived]
7830            #[doc(hidden)]
7831            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
7832                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7833                    Self { _0: tuple.0 }
7834                }
7835            }
7836        }
7837        #[automatically_derived]
7838        impl alloy_sol_types::SolCall for currentEpochCall {
7839            type Parameters<'a> = ();
7840            type Token<'a> = <Self::Parameters<
7841                'a,
7842            > as alloy_sol_types::SolType>::Token<'a>;
7843            type Return = currentEpochReturn;
7844            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7845            type ReturnToken<'a> = <Self::ReturnTuple<
7846                'a,
7847            > as alloy_sol_types::SolType>::Token<'a>;
7848            const SIGNATURE: &'static str = "currentEpoch()";
7849            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
7850            #[inline]
7851            fn new<'a>(
7852                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7853            ) -> Self {
7854                tuple.into()
7855            }
7856            #[inline]
7857            fn tokenize(&self) -> Self::Token<'_> {
7858                ()
7859            }
7860            #[inline]
7861            fn abi_decode_returns(
7862                data: &[u8],
7863                validate: bool,
7864            ) -> alloy_sol_types::Result<Self::Return> {
7865                <Self::ReturnTuple<
7866                    '_,
7867                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7868                    .map(Into::into)
7869            }
7870        }
7871    };
7872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7873    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7874```solidity
7875function disablePermissionedProverMode() external;
7876```*/
7877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7878    #[derive(Clone)]
7879    pub struct disablePermissionedProverModeCall {}
7880    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7882    #[derive(Clone)]
7883    pub struct disablePermissionedProverModeReturn {}
7884    #[allow(
7885        non_camel_case_types,
7886        non_snake_case,
7887        clippy::pub_underscore_fields,
7888        clippy::style
7889    )]
7890    const _: () = {
7891        use alloy::sol_types as alloy_sol_types;
7892        {
7893            #[doc(hidden)]
7894            type UnderlyingSolTuple<'a> = ();
7895            #[doc(hidden)]
7896            type UnderlyingRustTuple<'a> = ();
7897            #[cfg(test)]
7898            #[allow(dead_code, unreachable_patterns)]
7899            fn _type_assertion(
7900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7901            ) {
7902                match _t {
7903                    alloy_sol_types::private::AssertTypeEq::<
7904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7905                    >(_) => {}
7906                }
7907            }
7908            #[automatically_derived]
7909            #[doc(hidden)]
7910            impl ::core::convert::From<disablePermissionedProverModeCall>
7911            for UnderlyingRustTuple<'_> {
7912                fn from(value: disablePermissionedProverModeCall) -> Self {
7913                    ()
7914                }
7915            }
7916            #[automatically_derived]
7917            #[doc(hidden)]
7918            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7919            for disablePermissionedProverModeCall {
7920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7921                    Self {}
7922                }
7923            }
7924        }
7925        {
7926            #[doc(hidden)]
7927            type UnderlyingSolTuple<'a> = ();
7928            #[doc(hidden)]
7929            type UnderlyingRustTuple<'a> = ();
7930            #[cfg(test)]
7931            #[allow(dead_code, unreachable_patterns)]
7932            fn _type_assertion(
7933                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7934            ) {
7935                match _t {
7936                    alloy_sol_types::private::AssertTypeEq::<
7937                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7938                    >(_) => {}
7939                }
7940            }
7941            #[automatically_derived]
7942            #[doc(hidden)]
7943            impl ::core::convert::From<disablePermissionedProverModeReturn>
7944            for UnderlyingRustTuple<'_> {
7945                fn from(value: disablePermissionedProverModeReturn) -> Self {
7946                    ()
7947                }
7948            }
7949            #[automatically_derived]
7950            #[doc(hidden)]
7951            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7952            for disablePermissionedProverModeReturn {
7953                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7954                    Self {}
7955                }
7956            }
7957        }
7958        #[automatically_derived]
7959        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7960            type Parameters<'a> = ();
7961            type Token<'a> = <Self::Parameters<
7962                'a,
7963            > as alloy_sol_types::SolType>::Token<'a>;
7964            type Return = disablePermissionedProverModeReturn;
7965            type ReturnTuple<'a> = ();
7966            type ReturnToken<'a> = <Self::ReturnTuple<
7967                'a,
7968            > as alloy_sol_types::SolType>::Token<'a>;
7969            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7970            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7971            #[inline]
7972            fn new<'a>(
7973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7974            ) -> Self {
7975                tuple.into()
7976            }
7977            #[inline]
7978            fn tokenize(&self) -> Self::Token<'_> {
7979                ()
7980            }
7981            #[inline]
7982            fn abi_decode_returns(
7983                data: &[u8],
7984                validate: bool,
7985            ) -> alloy_sol_types::Result<Self::Return> {
7986                <Self::ReturnTuple<
7987                    '_,
7988                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7989                    .map(Into::into)
7990            }
7991        }
7992    };
7993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7994    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
7995```solidity
7996function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
7997```*/
7998    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7999    #[derive(Clone)]
8000    pub struct epochFromBlockNumberCall {
8001        #[allow(missing_docs)]
8002        pub _blockNum: u64,
8003        #[allow(missing_docs)]
8004        pub _blocksPerEpoch: u64,
8005    }
8006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8007    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8009    #[derive(Clone)]
8010    pub struct epochFromBlockNumberReturn {
8011        #[allow(missing_docs)]
8012        pub _0: u64,
8013    }
8014    #[allow(
8015        non_camel_case_types,
8016        non_snake_case,
8017        clippy::pub_underscore_fields,
8018        clippy::style
8019    )]
8020    const _: () = {
8021        use alloy::sol_types as alloy_sol_types;
8022        {
8023            #[doc(hidden)]
8024            type UnderlyingSolTuple<'a> = (
8025                alloy::sol_types::sol_data::Uint<64>,
8026                alloy::sol_types::sol_data::Uint<64>,
8027            );
8028            #[doc(hidden)]
8029            type UnderlyingRustTuple<'a> = (u64, u64);
8030            #[cfg(test)]
8031            #[allow(dead_code, unreachable_patterns)]
8032            fn _type_assertion(
8033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8034            ) {
8035                match _t {
8036                    alloy_sol_types::private::AssertTypeEq::<
8037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8038                    >(_) => {}
8039                }
8040            }
8041            #[automatically_derived]
8042            #[doc(hidden)]
8043            impl ::core::convert::From<epochFromBlockNumberCall>
8044            for UnderlyingRustTuple<'_> {
8045                fn from(value: epochFromBlockNumberCall) -> Self {
8046                    (value._blockNum, value._blocksPerEpoch)
8047                }
8048            }
8049            #[automatically_derived]
8050            #[doc(hidden)]
8051            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8052            for epochFromBlockNumberCall {
8053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8054                    Self {
8055                        _blockNum: tuple.0,
8056                        _blocksPerEpoch: tuple.1,
8057                    }
8058                }
8059            }
8060        }
8061        {
8062            #[doc(hidden)]
8063            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8064            #[doc(hidden)]
8065            type UnderlyingRustTuple<'a> = (u64,);
8066            #[cfg(test)]
8067            #[allow(dead_code, unreachable_patterns)]
8068            fn _type_assertion(
8069                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8070            ) {
8071                match _t {
8072                    alloy_sol_types::private::AssertTypeEq::<
8073                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8074                    >(_) => {}
8075                }
8076            }
8077            #[automatically_derived]
8078            #[doc(hidden)]
8079            impl ::core::convert::From<epochFromBlockNumberReturn>
8080            for UnderlyingRustTuple<'_> {
8081                fn from(value: epochFromBlockNumberReturn) -> Self {
8082                    (value._0,)
8083                }
8084            }
8085            #[automatically_derived]
8086            #[doc(hidden)]
8087            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8088            for epochFromBlockNumberReturn {
8089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8090                    Self { _0: tuple.0 }
8091                }
8092            }
8093        }
8094        #[automatically_derived]
8095        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8096            type Parameters<'a> = (
8097                alloy::sol_types::sol_data::Uint<64>,
8098                alloy::sol_types::sol_data::Uint<64>,
8099            );
8100            type Token<'a> = <Self::Parameters<
8101                'a,
8102            > as alloy_sol_types::SolType>::Token<'a>;
8103            type Return = epochFromBlockNumberReturn;
8104            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8105            type ReturnToken<'a> = <Self::ReturnTuple<
8106                'a,
8107            > as alloy_sol_types::SolType>::Token<'a>;
8108            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8109            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8110            #[inline]
8111            fn new<'a>(
8112                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8113            ) -> Self {
8114                tuple.into()
8115            }
8116            #[inline]
8117            fn tokenize(&self) -> Self::Token<'_> {
8118                (
8119                    <alloy::sol_types::sol_data::Uint<
8120                        64,
8121                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8122                    <alloy::sol_types::sol_data::Uint<
8123                        64,
8124                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8125                )
8126            }
8127            #[inline]
8128            fn abi_decode_returns(
8129                data: &[u8],
8130                validate: bool,
8131            ) -> alloy_sol_types::Result<Self::Return> {
8132                <Self::ReturnTuple<
8133                    '_,
8134                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8135                    .map(Into::into)
8136            }
8137        }
8138    };
8139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8140    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8141```solidity
8142function epochStartBlock() external view returns (uint64);
8143```*/
8144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8145    #[derive(Clone)]
8146    pub struct epochStartBlockCall {}
8147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8148    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8150    #[derive(Clone)]
8151    pub struct epochStartBlockReturn {
8152        #[allow(missing_docs)]
8153        pub _0: u64,
8154    }
8155    #[allow(
8156        non_camel_case_types,
8157        non_snake_case,
8158        clippy::pub_underscore_fields,
8159        clippy::style
8160    )]
8161    const _: () = {
8162        use alloy::sol_types as alloy_sol_types;
8163        {
8164            #[doc(hidden)]
8165            type UnderlyingSolTuple<'a> = ();
8166            #[doc(hidden)]
8167            type UnderlyingRustTuple<'a> = ();
8168            #[cfg(test)]
8169            #[allow(dead_code, unreachable_patterns)]
8170            fn _type_assertion(
8171                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8172            ) {
8173                match _t {
8174                    alloy_sol_types::private::AssertTypeEq::<
8175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8176                    >(_) => {}
8177                }
8178            }
8179            #[automatically_derived]
8180            #[doc(hidden)]
8181            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8182                fn from(value: epochStartBlockCall) -> Self {
8183                    ()
8184                }
8185            }
8186            #[automatically_derived]
8187            #[doc(hidden)]
8188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8190                    Self {}
8191                }
8192            }
8193        }
8194        {
8195            #[doc(hidden)]
8196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8197            #[doc(hidden)]
8198            type UnderlyingRustTuple<'a> = (u64,);
8199            #[cfg(test)]
8200            #[allow(dead_code, unreachable_patterns)]
8201            fn _type_assertion(
8202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8203            ) {
8204                match _t {
8205                    alloy_sol_types::private::AssertTypeEq::<
8206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8207                    >(_) => {}
8208                }
8209            }
8210            #[automatically_derived]
8211            #[doc(hidden)]
8212            impl ::core::convert::From<epochStartBlockReturn>
8213            for UnderlyingRustTuple<'_> {
8214                fn from(value: epochStartBlockReturn) -> Self {
8215                    (value._0,)
8216                }
8217            }
8218            #[automatically_derived]
8219            #[doc(hidden)]
8220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8221            for epochStartBlockReturn {
8222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8223                    Self { _0: tuple.0 }
8224                }
8225            }
8226        }
8227        #[automatically_derived]
8228        impl alloy_sol_types::SolCall for epochStartBlockCall {
8229            type Parameters<'a> = ();
8230            type Token<'a> = <Self::Parameters<
8231                'a,
8232            > as alloy_sol_types::SolType>::Token<'a>;
8233            type Return = epochStartBlockReturn;
8234            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8235            type ReturnToken<'a> = <Self::ReturnTuple<
8236                'a,
8237            > as alloy_sol_types::SolType>::Token<'a>;
8238            const SIGNATURE: &'static str = "epochStartBlock()";
8239            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8240            #[inline]
8241            fn new<'a>(
8242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8243            ) -> Self {
8244                tuple.into()
8245            }
8246            #[inline]
8247            fn tokenize(&self) -> Self::Token<'_> {
8248                ()
8249            }
8250            #[inline]
8251            fn abi_decode_returns(
8252                data: &[u8],
8253                validate: bool,
8254            ) -> alloy_sol_types::Result<Self::Return> {
8255                <Self::ReturnTuple<
8256                    '_,
8257                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8258                    .map(Into::into)
8259            }
8260        }
8261    };
8262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8263    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8264```solidity
8265function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8266```*/
8267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8268    #[derive(Clone)]
8269    pub struct finalizedStateCall {}
8270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8271    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8273    #[derive(Clone)]
8274    pub struct finalizedStateReturn {
8275        #[allow(missing_docs)]
8276        pub viewNum: u64,
8277        #[allow(missing_docs)]
8278        pub blockHeight: u64,
8279        #[allow(missing_docs)]
8280        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8281    }
8282    #[allow(
8283        non_camel_case_types,
8284        non_snake_case,
8285        clippy::pub_underscore_fields,
8286        clippy::style
8287    )]
8288    const _: () = {
8289        use alloy::sol_types as alloy_sol_types;
8290        {
8291            #[doc(hidden)]
8292            type UnderlyingSolTuple<'a> = ();
8293            #[doc(hidden)]
8294            type UnderlyingRustTuple<'a> = ();
8295            #[cfg(test)]
8296            #[allow(dead_code, unreachable_patterns)]
8297            fn _type_assertion(
8298                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8299            ) {
8300                match _t {
8301                    alloy_sol_types::private::AssertTypeEq::<
8302                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8303                    >(_) => {}
8304                }
8305            }
8306            #[automatically_derived]
8307            #[doc(hidden)]
8308            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8309                fn from(value: finalizedStateCall) -> Self {
8310                    ()
8311                }
8312            }
8313            #[automatically_derived]
8314            #[doc(hidden)]
8315            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8316                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8317                    Self {}
8318                }
8319            }
8320        }
8321        {
8322            #[doc(hidden)]
8323            type UnderlyingSolTuple<'a> = (
8324                alloy::sol_types::sol_data::Uint<64>,
8325                alloy::sol_types::sol_data::Uint<64>,
8326                BN254::ScalarField,
8327            );
8328            #[doc(hidden)]
8329            type UnderlyingRustTuple<'a> = (
8330                u64,
8331                u64,
8332                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8333            );
8334            #[cfg(test)]
8335            #[allow(dead_code, unreachable_patterns)]
8336            fn _type_assertion(
8337                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8338            ) {
8339                match _t {
8340                    alloy_sol_types::private::AssertTypeEq::<
8341                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8342                    >(_) => {}
8343                }
8344            }
8345            #[automatically_derived]
8346            #[doc(hidden)]
8347            impl ::core::convert::From<finalizedStateReturn>
8348            for UnderlyingRustTuple<'_> {
8349                fn from(value: finalizedStateReturn) -> Self {
8350                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8351                }
8352            }
8353            #[automatically_derived]
8354            #[doc(hidden)]
8355            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8356            for finalizedStateReturn {
8357                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8358                    Self {
8359                        viewNum: tuple.0,
8360                        blockHeight: tuple.1,
8361                        blockCommRoot: tuple.2,
8362                    }
8363                }
8364            }
8365        }
8366        #[automatically_derived]
8367        impl alloy_sol_types::SolCall for finalizedStateCall {
8368            type Parameters<'a> = ();
8369            type Token<'a> = <Self::Parameters<
8370                'a,
8371            > as alloy_sol_types::SolType>::Token<'a>;
8372            type Return = finalizedStateReturn;
8373            type ReturnTuple<'a> = (
8374                alloy::sol_types::sol_data::Uint<64>,
8375                alloy::sol_types::sol_data::Uint<64>,
8376                BN254::ScalarField,
8377            );
8378            type ReturnToken<'a> = <Self::ReturnTuple<
8379                'a,
8380            > as alloy_sol_types::SolType>::Token<'a>;
8381            const SIGNATURE: &'static str = "finalizedState()";
8382            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8383            #[inline]
8384            fn new<'a>(
8385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8386            ) -> Self {
8387                tuple.into()
8388            }
8389            #[inline]
8390            fn tokenize(&self) -> Self::Token<'_> {
8391                ()
8392            }
8393            #[inline]
8394            fn abi_decode_returns(
8395                data: &[u8],
8396                validate: bool,
8397            ) -> alloy_sol_types::Result<Self::Return> {
8398                <Self::ReturnTuple<
8399                    '_,
8400                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8401                    .map(Into::into)
8402            }
8403        }
8404    };
8405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8406    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8407```solidity
8408function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8409```*/
8410    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8411    #[derive(Clone)]
8412    pub struct genesisStakeTableStateCall {}
8413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8414    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8416    #[derive(Clone)]
8417    pub struct genesisStakeTableStateReturn {
8418        #[allow(missing_docs)]
8419        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8420        #[allow(missing_docs)]
8421        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8422        #[allow(missing_docs)]
8423        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8424        #[allow(missing_docs)]
8425        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8426    }
8427    #[allow(
8428        non_camel_case_types,
8429        non_snake_case,
8430        clippy::pub_underscore_fields,
8431        clippy::style
8432    )]
8433    const _: () = {
8434        use alloy::sol_types as alloy_sol_types;
8435        {
8436            #[doc(hidden)]
8437            type UnderlyingSolTuple<'a> = ();
8438            #[doc(hidden)]
8439            type UnderlyingRustTuple<'a> = ();
8440            #[cfg(test)]
8441            #[allow(dead_code, unreachable_patterns)]
8442            fn _type_assertion(
8443                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8444            ) {
8445                match _t {
8446                    alloy_sol_types::private::AssertTypeEq::<
8447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8448                    >(_) => {}
8449                }
8450            }
8451            #[automatically_derived]
8452            #[doc(hidden)]
8453            impl ::core::convert::From<genesisStakeTableStateCall>
8454            for UnderlyingRustTuple<'_> {
8455                fn from(value: genesisStakeTableStateCall) -> Self {
8456                    ()
8457                }
8458            }
8459            #[automatically_derived]
8460            #[doc(hidden)]
8461            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8462            for genesisStakeTableStateCall {
8463                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8464                    Self {}
8465                }
8466            }
8467        }
8468        {
8469            #[doc(hidden)]
8470            type UnderlyingSolTuple<'a> = (
8471                alloy::sol_types::sol_data::Uint<256>,
8472                BN254::ScalarField,
8473                BN254::ScalarField,
8474                BN254::ScalarField,
8475            );
8476            #[doc(hidden)]
8477            type UnderlyingRustTuple<'a> = (
8478                alloy::sol_types::private::primitives::aliases::U256,
8479                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8480                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8481                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8482            );
8483            #[cfg(test)]
8484            #[allow(dead_code, unreachable_patterns)]
8485            fn _type_assertion(
8486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8487            ) {
8488                match _t {
8489                    alloy_sol_types::private::AssertTypeEq::<
8490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8491                    >(_) => {}
8492                }
8493            }
8494            #[automatically_derived]
8495            #[doc(hidden)]
8496            impl ::core::convert::From<genesisStakeTableStateReturn>
8497            for UnderlyingRustTuple<'_> {
8498                fn from(value: genesisStakeTableStateReturn) -> Self {
8499                    (
8500                        value.threshold,
8501                        value.blsKeyComm,
8502                        value.schnorrKeyComm,
8503                        value.amountComm,
8504                    )
8505                }
8506            }
8507            #[automatically_derived]
8508            #[doc(hidden)]
8509            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8510            for genesisStakeTableStateReturn {
8511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8512                    Self {
8513                        threshold: tuple.0,
8514                        blsKeyComm: tuple.1,
8515                        schnorrKeyComm: tuple.2,
8516                        amountComm: tuple.3,
8517                    }
8518                }
8519            }
8520        }
8521        #[automatically_derived]
8522        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8523            type Parameters<'a> = ();
8524            type Token<'a> = <Self::Parameters<
8525                'a,
8526            > as alloy_sol_types::SolType>::Token<'a>;
8527            type Return = genesisStakeTableStateReturn;
8528            type ReturnTuple<'a> = (
8529                alloy::sol_types::sol_data::Uint<256>,
8530                BN254::ScalarField,
8531                BN254::ScalarField,
8532                BN254::ScalarField,
8533            );
8534            type ReturnToken<'a> = <Self::ReturnTuple<
8535                'a,
8536            > as alloy_sol_types::SolType>::Token<'a>;
8537            const SIGNATURE: &'static str = "genesisStakeTableState()";
8538            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8539            #[inline]
8540            fn new<'a>(
8541                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8542            ) -> Self {
8543                tuple.into()
8544            }
8545            #[inline]
8546            fn tokenize(&self) -> Self::Token<'_> {
8547                ()
8548            }
8549            #[inline]
8550            fn abi_decode_returns(
8551                data: &[u8],
8552                validate: bool,
8553            ) -> alloy_sol_types::Result<Self::Return> {
8554                <Self::ReturnTuple<
8555                    '_,
8556                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8557                    .map(Into::into)
8558            }
8559        }
8560    };
8561    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8562    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8563```solidity
8564function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8565```*/
8566    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8567    #[derive(Clone)]
8568    pub struct genesisStateCall {}
8569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8570    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8572    #[derive(Clone)]
8573    pub struct genesisStateReturn {
8574        #[allow(missing_docs)]
8575        pub viewNum: u64,
8576        #[allow(missing_docs)]
8577        pub blockHeight: u64,
8578        #[allow(missing_docs)]
8579        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8580    }
8581    #[allow(
8582        non_camel_case_types,
8583        non_snake_case,
8584        clippy::pub_underscore_fields,
8585        clippy::style
8586    )]
8587    const _: () = {
8588        use alloy::sol_types as alloy_sol_types;
8589        {
8590            #[doc(hidden)]
8591            type UnderlyingSolTuple<'a> = ();
8592            #[doc(hidden)]
8593            type UnderlyingRustTuple<'a> = ();
8594            #[cfg(test)]
8595            #[allow(dead_code, unreachable_patterns)]
8596            fn _type_assertion(
8597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8598            ) {
8599                match _t {
8600                    alloy_sol_types::private::AssertTypeEq::<
8601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8602                    >(_) => {}
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8608                fn from(value: genesisStateCall) -> Self {
8609                    ()
8610                }
8611            }
8612            #[automatically_derived]
8613            #[doc(hidden)]
8614            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8616                    Self {}
8617                }
8618            }
8619        }
8620        {
8621            #[doc(hidden)]
8622            type UnderlyingSolTuple<'a> = (
8623                alloy::sol_types::sol_data::Uint<64>,
8624                alloy::sol_types::sol_data::Uint<64>,
8625                BN254::ScalarField,
8626            );
8627            #[doc(hidden)]
8628            type UnderlyingRustTuple<'a> = (
8629                u64,
8630                u64,
8631                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8632            );
8633            #[cfg(test)]
8634            #[allow(dead_code, unreachable_patterns)]
8635            fn _type_assertion(
8636                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8637            ) {
8638                match _t {
8639                    alloy_sol_types::private::AssertTypeEq::<
8640                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8641                    >(_) => {}
8642                }
8643            }
8644            #[automatically_derived]
8645            #[doc(hidden)]
8646            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8647                fn from(value: genesisStateReturn) -> Self {
8648                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8649                }
8650            }
8651            #[automatically_derived]
8652            #[doc(hidden)]
8653            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8655                    Self {
8656                        viewNum: tuple.0,
8657                        blockHeight: tuple.1,
8658                        blockCommRoot: tuple.2,
8659                    }
8660                }
8661            }
8662        }
8663        #[automatically_derived]
8664        impl alloy_sol_types::SolCall for genesisStateCall {
8665            type Parameters<'a> = ();
8666            type Token<'a> = <Self::Parameters<
8667                'a,
8668            > as alloy_sol_types::SolType>::Token<'a>;
8669            type Return = genesisStateReturn;
8670            type ReturnTuple<'a> = (
8671                alloy::sol_types::sol_data::Uint<64>,
8672                alloy::sol_types::sol_data::Uint<64>,
8673                BN254::ScalarField,
8674            );
8675            type ReturnToken<'a> = <Self::ReturnTuple<
8676                'a,
8677            > as alloy_sol_types::SolType>::Token<'a>;
8678            const SIGNATURE: &'static str = "genesisState()";
8679            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8680            #[inline]
8681            fn new<'a>(
8682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8683            ) -> Self {
8684                tuple.into()
8685            }
8686            #[inline]
8687            fn tokenize(&self) -> Self::Token<'_> {
8688                ()
8689            }
8690            #[inline]
8691            fn abi_decode_returns(
8692                data: &[u8],
8693                validate: bool,
8694            ) -> alloy_sol_types::Result<Self::Return> {
8695                <Self::ReturnTuple<
8696                    '_,
8697                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8698                    .map(Into::into)
8699            }
8700        }
8701    };
8702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8703    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8704```solidity
8705function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8706```*/
8707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8708    #[derive(Clone)]
8709    pub struct getHotShotCommitmentCall {
8710        #[allow(missing_docs)]
8711        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8712    }
8713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8714    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8716    #[derive(Clone)]
8717    pub struct getHotShotCommitmentReturn {
8718        #[allow(missing_docs)]
8719        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8720        #[allow(missing_docs)]
8721        pub hotshotBlockHeight: u64,
8722    }
8723    #[allow(
8724        non_camel_case_types,
8725        non_snake_case,
8726        clippy::pub_underscore_fields,
8727        clippy::style
8728    )]
8729    const _: () = {
8730        use alloy::sol_types as alloy_sol_types;
8731        {
8732            #[doc(hidden)]
8733            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8734            #[doc(hidden)]
8735            type UnderlyingRustTuple<'a> = (
8736                alloy::sol_types::private::primitives::aliases::U256,
8737            );
8738            #[cfg(test)]
8739            #[allow(dead_code, unreachable_patterns)]
8740            fn _type_assertion(
8741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8742            ) {
8743                match _t {
8744                    alloy_sol_types::private::AssertTypeEq::<
8745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8746                    >(_) => {}
8747                }
8748            }
8749            #[automatically_derived]
8750            #[doc(hidden)]
8751            impl ::core::convert::From<getHotShotCommitmentCall>
8752            for UnderlyingRustTuple<'_> {
8753                fn from(value: getHotShotCommitmentCall) -> Self {
8754                    (value.hotShotBlockHeight,)
8755                }
8756            }
8757            #[automatically_derived]
8758            #[doc(hidden)]
8759            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8760            for getHotShotCommitmentCall {
8761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8762                    Self {
8763                        hotShotBlockHeight: tuple.0,
8764                    }
8765                }
8766            }
8767        }
8768        {
8769            #[doc(hidden)]
8770            type UnderlyingSolTuple<'a> = (
8771                BN254::ScalarField,
8772                alloy::sol_types::sol_data::Uint<64>,
8773            );
8774            #[doc(hidden)]
8775            type UnderlyingRustTuple<'a> = (
8776                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8777                u64,
8778            );
8779            #[cfg(test)]
8780            #[allow(dead_code, unreachable_patterns)]
8781            fn _type_assertion(
8782                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8783            ) {
8784                match _t {
8785                    alloy_sol_types::private::AssertTypeEq::<
8786                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8787                    >(_) => {}
8788                }
8789            }
8790            #[automatically_derived]
8791            #[doc(hidden)]
8792            impl ::core::convert::From<getHotShotCommitmentReturn>
8793            for UnderlyingRustTuple<'_> {
8794                fn from(value: getHotShotCommitmentReturn) -> Self {
8795                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8796                }
8797            }
8798            #[automatically_derived]
8799            #[doc(hidden)]
8800            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8801            for getHotShotCommitmentReturn {
8802                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8803                    Self {
8804                        hotShotBlockCommRoot: tuple.0,
8805                        hotshotBlockHeight: tuple.1,
8806                    }
8807                }
8808            }
8809        }
8810        #[automatically_derived]
8811        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8812            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8813            type Token<'a> = <Self::Parameters<
8814                'a,
8815            > as alloy_sol_types::SolType>::Token<'a>;
8816            type Return = getHotShotCommitmentReturn;
8817            type ReturnTuple<'a> = (
8818                BN254::ScalarField,
8819                alloy::sol_types::sol_data::Uint<64>,
8820            );
8821            type ReturnToken<'a> = <Self::ReturnTuple<
8822                'a,
8823            > as alloy_sol_types::SolType>::Token<'a>;
8824            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8825            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8826            #[inline]
8827            fn new<'a>(
8828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8829            ) -> Self {
8830                tuple.into()
8831            }
8832            #[inline]
8833            fn tokenize(&self) -> Self::Token<'_> {
8834                (
8835                    <alloy::sol_types::sol_data::Uint<
8836                        256,
8837                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8838                )
8839            }
8840            #[inline]
8841            fn abi_decode_returns(
8842                data: &[u8],
8843                validate: bool,
8844            ) -> alloy_sol_types::Result<Self::Return> {
8845                <Self::ReturnTuple<
8846                    '_,
8847                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8848                    .map(Into::into)
8849            }
8850        }
8851    };
8852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8853    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8854```solidity
8855function getStateHistoryCount() external view returns (uint256);
8856```*/
8857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8858    #[derive(Clone)]
8859    pub struct getStateHistoryCountCall {}
8860    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8861    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8862    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8863    #[derive(Clone)]
8864    pub struct getStateHistoryCountReturn {
8865        #[allow(missing_docs)]
8866        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8867    }
8868    #[allow(
8869        non_camel_case_types,
8870        non_snake_case,
8871        clippy::pub_underscore_fields,
8872        clippy::style
8873    )]
8874    const _: () = {
8875        use alloy::sol_types as alloy_sol_types;
8876        {
8877            #[doc(hidden)]
8878            type UnderlyingSolTuple<'a> = ();
8879            #[doc(hidden)]
8880            type UnderlyingRustTuple<'a> = ();
8881            #[cfg(test)]
8882            #[allow(dead_code, unreachable_patterns)]
8883            fn _type_assertion(
8884                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8885            ) {
8886                match _t {
8887                    alloy_sol_types::private::AssertTypeEq::<
8888                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8889                    >(_) => {}
8890                }
8891            }
8892            #[automatically_derived]
8893            #[doc(hidden)]
8894            impl ::core::convert::From<getStateHistoryCountCall>
8895            for UnderlyingRustTuple<'_> {
8896                fn from(value: getStateHistoryCountCall) -> Self {
8897                    ()
8898                }
8899            }
8900            #[automatically_derived]
8901            #[doc(hidden)]
8902            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8903            for getStateHistoryCountCall {
8904                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8905                    Self {}
8906                }
8907            }
8908        }
8909        {
8910            #[doc(hidden)]
8911            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8912            #[doc(hidden)]
8913            type UnderlyingRustTuple<'a> = (
8914                alloy::sol_types::private::primitives::aliases::U256,
8915            );
8916            #[cfg(test)]
8917            #[allow(dead_code, unreachable_patterns)]
8918            fn _type_assertion(
8919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8920            ) {
8921                match _t {
8922                    alloy_sol_types::private::AssertTypeEq::<
8923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8924                    >(_) => {}
8925                }
8926            }
8927            #[automatically_derived]
8928            #[doc(hidden)]
8929            impl ::core::convert::From<getStateHistoryCountReturn>
8930            for UnderlyingRustTuple<'_> {
8931                fn from(value: getStateHistoryCountReturn) -> Self {
8932                    (value._0,)
8933                }
8934            }
8935            #[automatically_derived]
8936            #[doc(hidden)]
8937            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8938            for getStateHistoryCountReturn {
8939                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8940                    Self { _0: tuple.0 }
8941                }
8942            }
8943        }
8944        #[automatically_derived]
8945        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8946            type Parameters<'a> = ();
8947            type Token<'a> = <Self::Parameters<
8948                'a,
8949            > as alloy_sol_types::SolType>::Token<'a>;
8950            type Return = getStateHistoryCountReturn;
8951            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8952            type ReturnToken<'a> = <Self::ReturnTuple<
8953                'a,
8954            > as alloy_sol_types::SolType>::Token<'a>;
8955            const SIGNATURE: &'static str = "getStateHistoryCount()";
8956            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8957            #[inline]
8958            fn new<'a>(
8959                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8960            ) -> Self {
8961                tuple.into()
8962            }
8963            #[inline]
8964            fn tokenize(&self) -> Self::Token<'_> {
8965                ()
8966            }
8967            #[inline]
8968            fn abi_decode_returns(
8969                data: &[u8],
8970                validate: bool,
8971            ) -> alloy_sol_types::Result<Self::Return> {
8972                <Self::ReturnTuple<
8973                    '_,
8974                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8975                    .map(Into::into)
8976            }
8977        }
8978    };
8979    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8980    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8981```solidity
8982function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8983```*/
8984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8985    #[derive(Clone)]
8986    pub struct getVersionCall {}
8987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8988    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8990    #[derive(Clone)]
8991    pub struct getVersionReturn {
8992        #[allow(missing_docs)]
8993        pub majorVersion: u8,
8994        #[allow(missing_docs)]
8995        pub minorVersion: u8,
8996        #[allow(missing_docs)]
8997        pub patchVersion: u8,
8998    }
8999    #[allow(
9000        non_camel_case_types,
9001        non_snake_case,
9002        clippy::pub_underscore_fields,
9003        clippy::style
9004    )]
9005    const _: () = {
9006        use alloy::sol_types as alloy_sol_types;
9007        {
9008            #[doc(hidden)]
9009            type UnderlyingSolTuple<'a> = ();
9010            #[doc(hidden)]
9011            type UnderlyingRustTuple<'a> = ();
9012            #[cfg(test)]
9013            #[allow(dead_code, unreachable_patterns)]
9014            fn _type_assertion(
9015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9016            ) {
9017                match _t {
9018                    alloy_sol_types::private::AssertTypeEq::<
9019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9020                    >(_) => {}
9021                }
9022            }
9023            #[automatically_derived]
9024            #[doc(hidden)]
9025            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9026                fn from(value: getVersionCall) -> Self {
9027                    ()
9028                }
9029            }
9030            #[automatically_derived]
9031            #[doc(hidden)]
9032            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9034                    Self {}
9035                }
9036            }
9037        }
9038        {
9039            #[doc(hidden)]
9040            type UnderlyingSolTuple<'a> = (
9041                alloy::sol_types::sol_data::Uint<8>,
9042                alloy::sol_types::sol_data::Uint<8>,
9043                alloy::sol_types::sol_data::Uint<8>,
9044            );
9045            #[doc(hidden)]
9046            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9047            #[cfg(test)]
9048            #[allow(dead_code, unreachable_patterns)]
9049            fn _type_assertion(
9050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9051            ) {
9052                match _t {
9053                    alloy_sol_types::private::AssertTypeEq::<
9054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9055                    >(_) => {}
9056                }
9057            }
9058            #[automatically_derived]
9059            #[doc(hidden)]
9060            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9061                fn from(value: getVersionReturn) -> Self {
9062                    (value.majorVersion, value.minorVersion, value.patchVersion)
9063                }
9064            }
9065            #[automatically_derived]
9066            #[doc(hidden)]
9067            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9069                    Self {
9070                        majorVersion: tuple.0,
9071                        minorVersion: tuple.1,
9072                        patchVersion: tuple.2,
9073                    }
9074                }
9075            }
9076        }
9077        #[automatically_derived]
9078        impl alloy_sol_types::SolCall for getVersionCall {
9079            type Parameters<'a> = ();
9080            type Token<'a> = <Self::Parameters<
9081                'a,
9082            > as alloy_sol_types::SolType>::Token<'a>;
9083            type Return = getVersionReturn;
9084            type ReturnTuple<'a> = (
9085                alloy::sol_types::sol_data::Uint<8>,
9086                alloy::sol_types::sol_data::Uint<8>,
9087                alloy::sol_types::sol_data::Uint<8>,
9088            );
9089            type ReturnToken<'a> = <Self::ReturnTuple<
9090                'a,
9091            > as alloy_sol_types::SolType>::Token<'a>;
9092            const SIGNATURE: &'static str = "getVersion()";
9093            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9094            #[inline]
9095            fn new<'a>(
9096                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9097            ) -> Self {
9098                tuple.into()
9099            }
9100            #[inline]
9101            fn tokenize(&self) -> Self::Token<'_> {
9102                ()
9103            }
9104            #[inline]
9105            fn abi_decode_returns(
9106                data: &[u8],
9107                validate: bool,
9108            ) -> alloy_sol_types::Result<Self::Return> {
9109                <Self::ReturnTuple<
9110                    '_,
9111                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9112                    .map(Into::into)
9113            }
9114        }
9115    };
9116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9117    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9118```solidity
9119function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9120```*/
9121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9122    #[derive(Clone)]
9123    pub struct initializeCall {
9124        #[allow(missing_docs)]
9125        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9126        #[allow(missing_docs)]
9127        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9128        #[allow(missing_docs)]
9129        pub _stateHistoryRetentionPeriod: u32,
9130        #[allow(missing_docs)]
9131        pub owner: alloy::sol_types::private::Address,
9132    }
9133    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9135    #[derive(Clone)]
9136    pub struct initializeReturn {}
9137    #[allow(
9138        non_camel_case_types,
9139        non_snake_case,
9140        clippy::pub_underscore_fields,
9141        clippy::style
9142    )]
9143    const _: () = {
9144        use alloy::sol_types as alloy_sol_types;
9145        {
9146            #[doc(hidden)]
9147            type UnderlyingSolTuple<'a> = (
9148                LightClient::LightClientState,
9149                LightClient::StakeTableState,
9150                alloy::sol_types::sol_data::Uint<32>,
9151                alloy::sol_types::sol_data::Address,
9152            );
9153            #[doc(hidden)]
9154            type UnderlyingRustTuple<'a> = (
9155                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9156                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9157                u32,
9158                alloy::sol_types::private::Address,
9159            );
9160            #[cfg(test)]
9161            #[allow(dead_code, unreachable_patterns)]
9162            fn _type_assertion(
9163                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9164            ) {
9165                match _t {
9166                    alloy_sol_types::private::AssertTypeEq::<
9167                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9168                    >(_) => {}
9169                }
9170            }
9171            #[automatically_derived]
9172            #[doc(hidden)]
9173            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9174                fn from(value: initializeCall) -> Self {
9175                    (
9176                        value._genesis,
9177                        value._genesisStakeTableState,
9178                        value._stateHistoryRetentionPeriod,
9179                        value.owner,
9180                    )
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9187                    Self {
9188                        _genesis: tuple.0,
9189                        _genesisStakeTableState: tuple.1,
9190                        _stateHistoryRetentionPeriod: tuple.2,
9191                        owner: tuple.3,
9192                    }
9193                }
9194            }
9195        }
9196        {
9197            #[doc(hidden)]
9198            type UnderlyingSolTuple<'a> = ();
9199            #[doc(hidden)]
9200            type UnderlyingRustTuple<'a> = ();
9201            #[cfg(test)]
9202            #[allow(dead_code, unreachable_patterns)]
9203            fn _type_assertion(
9204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9205            ) {
9206                match _t {
9207                    alloy_sol_types::private::AssertTypeEq::<
9208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9209                    >(_) => {}
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9215                fn from(value: initializeReturn) -> Self {
9216                    ()
9217                }
9218            }
9219            #[automatically_derived]
9220            #[doc(hidden)]
9221            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9223                    Self {}
9224                }
9225            }
9226        }
9227        #[automatically_derived]
9228        impl alloy_sol_types::SolCall for initializeCall {
9229            type Parameters<'a> = (
9230                LightClient::LightClientState,
9231                LightClient::StakeTableState,
9232                alloy::sol_types::sol_data::Uint<32>,
9233                alloy::sol_types::sol_data::Address,
9234            );
9235            type Token<'a> = <Self::Parameters<
9236                'a,
9237            > as alloy_sol_types::SolType>::Token<'a>;
9238            type Return = initializeReturn;
9239            type ReturnTuple<'a> = ();
9240            type ReturnToken<'a> = <Self::ReturnTuple<
9241                'a,
9242            > as alloy_sol_types::SolType>::Token<'a>;
9243            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9244            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9245            #[inline]
9246            fn new<'a>(
9247                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9248            ) -> Self {
9249                tuple.into()
9250            }
9251            #[inline]
9252            fn tokenize(&self) -> Self::Token<'_> {
9253                (
9254                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9255                        &self._genesis,
9256                    ),
9257                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9258                        &self._genesisStakeTableState,
9259                    ),
9260                    <alloy::sol_types::sol_data::Uint<
9261                        32,
9262                    > as alloy_sol_types::SolType>::tokenize(
9263                        &self._stateHistoryRetentionPeriod,
9264                    ),
9265                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9266                        &self.owner,
9267                    ),
9268                )
9269            }
9270            #[inline]
9271            fn abi_decode_returns(
9272                data: &[u8],
9273                validate: bool,
9274            ) -> alloy_sol_types::Result<Self::Return> {
9275                <Self::ReturnTuple<
9276                    '_,
9277                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9278                    .map(Into::into)
9279            }
9280        }
9281    };
9282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9283    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9284```solidity
9285function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9286```*/
9287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9288    #[derive(Clone)]
9289    pub struct initializeV2Call {
9290        #[allow(missing_docs)]
9291        pub _blocksPerEpoch: u64,
9292        #[allow(missing_docs)]
9293        pub _epochStartBlock: u64,
9294    }
9295    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
9296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9297    #[derive(Clone)]
9298    pub struct initializeV2Return {}
9299    #[allow(
9300        non_camel_case_types,
9301        non_snake_case,
9302        clippy::pub_underscore_fields,
9303        clippy::style
9304    )]
9305    const _: () = {
9306        use alloy::sol_types as alloy_sol_types;
9307        {
9308            #[doc(hidden)]
9309            type UnderlyingSolTuple<'a> = (
9310                alloy::sol_types::sol_data::Uint<64>,
9311                alloy::sol_types::sol_data::Uint<64>,
9312            );
9313            #[doc(hidden)]
9314            type UnderlyingRustTuple<'a> = (u64, u64);
9315            #[cfg(test)]
9316            #[allow(dead_code, unreachable_patterns)]
9317            fn _type_assertion(
9318                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9319            ) {
9320                match _t {
9321                    alloy_sol_types::private::AssertTypeEq::<
9322                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9323                    >(_) => {}
9324                }
9325            }
9326            #[automatically_derived]
9327            #[doc(hidden)]
9328            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
9329                fn from(value: initializeV2Call) -> Self {
9330                    (value._blocksPerEpoch, value._epochStartBlock)
9331                }
9332            }
9333            #[automatically_derived]
9334            #[doc(hidden)]
9335            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
9336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9337                    Self {
9338                        _blocksPerEpoch: tuple.0,
9339                        _epochStartBlock: tuple.1,
9340                    }
9341                }
9342            }
9343        }
9344        {
9345            #[doc(hidden)]
9346            type UnderlyingSolTuple<'a> = ();
9347            #[doc(hidden)]
9348            type UnderlyingRustTuple<'a> = ();
9349            #[cfg(test)]
9350            #[allow(dead_code, unreachable_patterns)]
9351            fn _type_assertion(
9352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9353            ) {
9354                match _t {
9355                    alloy_sol_types::private::AssertTypeEq::<
9356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9357                    >(_) => {}
9358                }
9359            }
9360            #[automatically_derived]
9361            #[doc(hidden)]
9362            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
9363                fn from(value: initializeV2Return) -> Self {
9364                    ()
9365                }
9366            }
9367            #[automatically_derived]
9368            #[doc(hidden)]
9369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
9370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9371                    Self {}
9372                }
9373            }
9374        }
9375        #[automatically_derived]
9376        impl alloy_sol_types::SolCall for initializeV2Call {
9377            type Parameters<'a> = (
9378                alloy::sol_types::sol_data::Uint<64>,
9379                alloy::sol_types::sol_data::Uint<64>,
9380            );
9381            type Token<'a> = <Self::Parameters<
9382                'a,
9383            > as alloy_sol_types::SolType>::Token<'a>;
9384            type Return = initializeV2Return;
9385            type ReturnTuple<'a> = ();
9386            type ReturnToken<'a> = <Self::ReturnTuple<
9387                'a,
9388            > as alloy_sol_types::SolType>::Token<'a>;
9389            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
9390            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
9391            #[inline]
9392            fn new<'a>(
9393                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9394            ) -> Self {
9395                tuple.into()
9396            }
9397            #[inline]
9398            fn tokenize(&self) -> Self::Token<'_> {
9399                (
9400                    <alloy::sol_types::sol_data::Uint<
9401                        64,
9402                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9403                    <alloy::sol_types::sol_data::Uint<
9404                        64,
9405                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
9406                )
9407            }
9408            #[inline]
9409            fn abi_decode_returns(
9410                data: &[u8],
9411                validate: bool,
9412            ) -> alloy_sol_types::Result<Self::Return> {
9413                <Self::ReturnTuple<
9414                    '_,
9415                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9416                    .map(Into::into)
9417            }
9418        }
9419    };
9420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9421    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
9422```solidity
9423function isEpochRoot(uint64 blockHeight) external view returns (bool);
9424```*/
9425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9426    #[derive(Clone)]
9427    pub struct isEpochRootCall {
9428        #[allow(missing_docs)]
9429        pub blockHeight: u64,
9430    }
9431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9432    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
9433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9434    #[derive(Clone)]
9435    pub struct isEpochRootReturn {
9436        #[allow(missing_docs)]
9437        pub _0: bool,
9438    }
9439    #[allow(
9440        non_camel_case_types,
9441        non_snake_case,
9442        clippy::pub_underscore_fields,
9443        clippy::style
9444    )]
9445    const _: () = {
9446        use alloy::sol_types as alloy_sol_types;
9447        {
9448            #[doc(hidden)]
9449            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9450            #[doc(hidden)]
9451            type UnderlyingRustTuple<'a> = (u64,);
9452            #[cfg(test)]
9453            #[allow(dead_code, unreachable_patterns)]
9454            fn _type_assertion(
9455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9456            ) {
9457                match _t {
9458                    alloy_sol_types::private::AssertTypeEq::<
9459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9460                    >(_) => {}
9461                }
9462            }
9463            #[automatically_derived]
9464            #[doc(hidden)]
9465            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
9466                fn from(value: isEpochRootCall) -> Self {
9467                    (value.blockHeight,)
9468                }
9469            }
9470            #[automatically_derived]
9471            #[doc(hidden)]
9472            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
9473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9474                    Self { blockHeight: tuple.0 }
9475                }
9476            }
9477        }
9478        {
9479            #[doc(hidden)]
9480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9481            #[doc(hidden)]
9482            type UnderlyingRustTuple<'a> = (bool,);
9483            #[cfg(test)]
9484            #[allow(dead_code, unreachable_patterns)]
9485            fn _type_assertion(
9486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9487            ) {
9488                match _t {
9489                    alloy_sol_types::private::AssertTypeEq::<
9490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9491                    >(_) => {}
9492                }
9493            }
9494            #[automatically_derived]
9495            #[doc(hidden)]
9496            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
9497                fn from(value: isEpochRootReturn) -> Self {
9498                    (value._0,)
9499                }
9500            }
9501            #[automatically_derived]
9502            #[doc(hidden)]
9503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
9504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9505                    Self { _0: tuple.0 }
9506                }
9507            }
9508        }
9509        #[automatically_derived]
9510        impl alloy_sol_types::SolCall for isEpochRootCall {
9511            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9512            type Token<'a> = <Self::Parameters<
9513                'a,
9514            > as alloy_sol_types::SolType>::Token<'a>;
9515            type Return = isEpochRootReturn;
9516            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9517            type ReturnToken<'a> = <Self::ReturnTuple<
9518                'a,
9519            > as alloy_sol_types::SolType>::Token<'a>;
9520            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
9521            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
9522            #[inline]
9523            fn new<'a>(
9524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9525            ) -> Self {
9526                tuple.into()
9527            }
9528            #[inline]
9529            fn tokenize(&self) -> Self::Token<'_> {
9530                (
9531                    <alloy::sol_types::sol_data::Uint<
9532                        64,
9533                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9534                )
9535            }
9536            #[inline]
9537            fn abi_decode_returns(
9538                data: &[u8],
9539                validate: bool,
9540            ) -> alloy_sol_types::Result<Self::Return> {
9541                <Self::ReturnTuple<
9542                    '_,
9543                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9544                    .map(Into::into)
9545            }
9546        }
9547    };
9548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9549    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
9550```solidity
9551function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
9552```*/
9553    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9554    #[derive(Clone)]
9555    pub struct isGtEpochRootCall {
9556        #[allow(missing_docs)]
9557        pub blockHeight: u64,
9558    }
9559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9560    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
9561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9562    #[derive(Clone)]
9563    pub struct isGtEpochRootReturn {
9564        #[allow(missing_docs)]
9565        pub _0: bool,
9566    }
9567    #[allow(
9568        non_camel_case_types,
9569        non_snake_case,
9570        clippy::pub_underscore_fields,
9571        clippy::style
9572    )]
9573    const _: () = {
9574        use alloy::sol_types as alloy_sol_types;
9575        {
9576            #[doc(hidden)]
9577            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9578            #[doc(hidden)]
9579            type UnderlyingRustTuple<'a> = (u64,);
9580            #[cfg(test)]
9581            #[allow(dead_code, unreachable_patterns)]
9582            fn _type_assertion(
9583                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9584            ) {
9585                match _t {
9586                    alloy_sol_types::private::AssertTypeEq::<
9587                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9588                    >(_) => {}
9589                }
9590            }
9591            #[automatically_derived]
9592            #[doc(hidden)]
9593            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
9594                fn from(value: isGtEpochRootCall) -> Self {
9595                    (value.blockHeight,)
9596                }
9597            }
9598            #[automatically_derived]
9599            #[doc(hidden)]
9600            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
9601                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9602                    Self { blockHeight: tuple.0 }
9603                }
9604            }
9605        }
9606        {
9607            #[doc(hidden)]
9608            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9609            #[doc(hidden)]
9610            type UnderlyingRustTuple<'a> = (bool,);
9611            #[cfg(test)]
9612            #[allow(dead_code, unreachable_patterns)]
9613            fn _type_assertion(
9614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9615            ) {
9616                match _t {
9617                    alloy_sol_types::private::AssertTypeEq::<
9618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9619                    >(_) => {}
9620                }
9621            }
9622            #[automatically_derived]
9623            #[doc(hidden)]
9624            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
9625                fn from(value: isGtEpochRootReturn) -> Self {
9626                    (value._0,)
9627                }
9628            }
9629            #[automatically_derived]
9630            #[doc(hidden)]
9631            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
9632                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9633                    Self { _0: tuple.0 }
9634                }
9635            }
9636        }
9637        #[automatically_derived]
9638        impl alloy_sol_types::SolCall for isGtEpochRootCall {
9639            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9640            type Token<'a> = <Self::Parameters<
9641                'a,
9642            > as alloy_sol_types::SolType>::Token<'a>;
9643            type Return = isGtEpochRootReturn;
9644            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9645            type ReturnToken<'a> = <Self::ReturnTuple<
9646                'a,
9647            > as alloy_sol_types::SolType>::Token<'a>;
9648            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
9649            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
9650            #[inline]
9651            fn new<'a>(
9652                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9653            ) -> Self {
9654                tuple.into()
9655            }
9656            #[inline]
9657            fn tokenize(&self) -> Self::Token<'_> {
9658                (
9659                    <alloy::sol_types::sol_data::Uint<
9660                        64,
9661                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9662                )
9663            }
9664            #[inline]
9665            fn abi_decode_returns(
9666                data: &[u8],
9667                validate: bool,
9668            ) -> alloy_sol_types::Result<Self::Return> {
9669                <Self::ReturnTuple<
9670                    '_,
9671                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9672                    .map(Into::into)
9673            }
9674        }
9675    };
9676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9677    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
9678```solidity
9679function isPermissionedProverEnabled() external view returns (bool);
9680```*/
9681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9682    #[derive(Clone)]
9683    pub struct isPermissionedProverEnabledCall {}
9684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9685    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
9686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9687    #[derive(Clone)]
9688    pub struct isPermissionedProverEnabledReturn {
9689        #[allow(missing_docs)]
9690        pub _0: bool,
9691    }
9692    #[allow(
9693        non_camel_case_types,
9694        non_snake_case,
9695        clippy::pub_underscore_fields,
9696        clippy::style
9697    )]
9698    const _: () = {
9699        use alloy::sol_types as alloy_sol_types;
9700        {
9701            #[doc(hidden)]
9702            type UnderlyingSolTuple<'a> = ();
9703            #[doc(hidden)]
9704            type UnderlyingRustTuple<'a> = ();
9705            #[cfg(test)]
9706            #[allow(dead_code, unreachable_patterns)]
9707            fn _type_assertion(
9708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9709            ) {
9710                match _t {
9711                    alloy_sol_types::private::AssertTypeEq::<
9712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9713                    >(_) => {}
9714                }
9715            }
9716            #[automatically_derived]
9717            #[doc(hidden)]
9718            impl ::core::convert::From<isPermissionedProverEnabledCall>
9719            for UnderlyingRustTuple<'_> {
9720                fn from(value: isPermissionedProverEnabledCall) -> Self {
9721                    ()
9722                }
9723            }
9724            #[automatically_derived]
9725            #[doc(hidden)]
9726            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9727            for isPermissionedProverEnabledCall {
9728                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9729                    Self {}
9730                }
9731            }
9732        }
9733        {
9734            #[doc(hidden)]
9735            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9736            #[doc(hidden)]
9737            type UnderlyingRustTuple<'a> = (bool,);
9738            #[cfg(test)]
9739            #[allow(dead_code, unreachable_patterns)]
9740            fn _type_assertion(
9741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9742            ) {
9743                match _t {
9744                    alloy_sol_types::private::AssertTypeEq::<
9745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9746                    >(_) => {}
9747                }
9748            }
9749            #[automatically_derived]
9750            #[doc(hidden)]
9751            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9752            for UnderlyingRustTuple<'_> {
9753                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9754                    (value._0,)
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9760            for isPermissionedProverEnabledReturn {
9761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9762                    Self { _0: tuple.0 }
9763                }
9764            }
9765        }
9766        #[automatically_derived]
9767        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9768            type Parameters<'a> = ();
9769            type Token<'a> = <Self::Parameters<
9770                'a,
9771            > as alloy_sol_types::SolType>::Token<'a>;
9772            type Return = isPermissionedProverEnabledReturn;
9773            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9774            type ReturnToken<'a> = <Self::ReturnTuple<
9775                'a,
9776            > as alloy_sol_types::SolType>::Token<'a>;
9777            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9778            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9779            #[inline]
9780            fn new<'a>(
9781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9782            ) -> Self {
9783                tuple.into()
9784            }
9785            #[inline]
9786            fn tokenize(&self) -> Self::Token<'_> {
9787                ()
9788            }
9789            #[inline]
9790            fn abi_decode_returns(
9791                data: &[u8],
9792                validate: bool,
9793            ) -> alloy_sol_types::Result<Self::Return> {
9794                <Self::ReturnTuple<
9795                    '_,
9796                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9797                    .map(Into::into)
9798            }
9799        }
9800    };
9801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9802    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9803```solidity
9804function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
9805```*/
9806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9807    #[derive(Clone)]
9808    pub struct lagOverEscapeHatchThresholdCall {
9809        #[allow(missing_docs)]
9810        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9811        #[allow(missing_docs)]
9812        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
9813    }
9814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9815    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9817    #[derive(Clone)]
9818    pub struct lagOverEscapeHatchThresholdReturn {
9819        #[allow(missing_docs)]
9820        pub _0: bool,
9821    }
9822    #[allow(
9823        non_camel_case_types,
9824        non_snake_case,
9825        clippy::pub_underscore_fields,
9826        clippy::style
9827    )]
9828    const _: () = {
9829        use alloy::sol_types as alloy_sol_types;
9830        {
9831            #[doc(hidden)]
9832            type UnderlyingSolTuple<'a> = (
9833                alloy::sol_types::sol_data::Uint<256>,
9834                alloy::sol_types::sol_data::Uint<256>,
9835            );
9836            #[doc(hidden)]
9837            type UnderlyingRustTuple<'a> = (
9838                alloy::sol_types::private::primitives::aliases::U256,
9839                alloy::sol_types::private::primitives::aliases::U256,
9840            );
9841            #[cfg(test)]
9842            #[allow(dead_code, unreachable_patterns)]
9843            fn _type_assertion(
9844                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9845            ) {
9846                match _t {
9847                    alloy_sol_types::private::AssertTypeEq::<
9848                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9849                    >(_) => {}
9850                }
9851            }
9852            #[automatically_derived]
9853            #[doc(hidden)]
9854            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9855            for UnderlyingRustTuple<'_> {
9856                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9857                    (value.blockNumber, value.blockThreshold)
9858                }
9859            }
9860            #[automatically_derived]
9861            #[doc(hidden)]
9862            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9863            for lagOverEscapeHatchThresholdCall {
9864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9865                    Self {
9866                        blockNumber: tuple.0,
9867                        blockThreshold: tuple.1,
9868                    }
9869                }
9870            }
9871        }
9872        {
9873            #[doc(hidden)]
9874            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9875            #[doc(hidden)]
9876            type UnderlyingRustTuple<'a> = (bool,);
9877            #[cfg(test)]
9878            #[allow(dead_code, unreachable_patterns)]
9879            fn _type_assertion(
9880                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9881            ) {
9882                match _t {
9883                    alloy_sol_types::private::AssertTypeEq::<
9884                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9885                    >(_) => {}
9886                }
9887            }
9888            #[automatically_derived]
9889            #[doc(hidden)]
9890            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9891            for UnderlyingRustTuple<'_> {
9892                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9893                    (value._0,)
9894                }
9895            }
9896            #[automatically_derived]
9897            #[doc(hidden)]
9898            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9899            for lagOverEscapeHatchThresholdReturn {
9900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9901                    Self { _0: tuple.0 }
9902                }
9903            }
9904        }
9905        #[automatically_derived]
9906        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9907            type Parameters<'a> = (
9908                alloy::sol_types::sol_data::Uint<256>,
9909                alloy::sol_types::sol_data::Uint<256>,
9910            );
9911            type Token<'a> = <Self::Parameters<
9912                'a,
9913            > as alloy_sol_types::SolType>::Token<'a>;
9914            type Return = lagOverEscapeHatchThresholdReturn;
9915            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9916            type ReturnToken<'a> = <Self::ReturnTuple<
9917                'a,
9918            > as alloy_sol_types::SolType>::Token<'a>;
9919            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9920            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9921            #[inline]
9922            fn new<'a>(
9923                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9924            ) -> Self {
9925                tuple.into()
9926            }
9927            #[inline]
9928            fn tokenize(&self) -> Self::Token<'_> {
9929                (
9930                    <alloy::sol_types::sol_data::Uint<
9931                        256,
9932                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9933                    <alloy::sol_types::sol_data::Uint<
9934                        256,
9935                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
9936                )
9937            }
9938            #[inline]
9939            fn abi_decode_returns(
9940                data: &[u8],
9941                validate: bool,
9942            ) -> alloy_sol_types::Result<Self::Return> {
9943                <Self::ReturnTuple<
9944                    '_,
9945                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9946                    .map(Into::into)
9947            }
9948        }
9949    };
9950    #[derive()]
9951    /**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`.
9952```solidity
9953function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
9954```*/
9955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9956    #[derive(Clone)]
9957    pub struct newFinalizedState_0Call {
9958        #[allow(missing_docs)]
9959        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9960        #[allow(missing_docs)]
9961        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9962    }
9963    ///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.
9964    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9965    #[derive(Clone)]
9966    pub struct newFinalizedState_0Return {}
9967    #[allow(
9968        non_camel_case_types,
9969        non_snake_case,
9970        clippy::pub_underscore_fields,
9971        clippy::style
9972    )]
9973    const _: () = {
9974        use alloy::sol_types as alloy_sol_types;
9975        {
9976            #[doc(hidden)]
9977            type UnderlyingSolTuple<'a> = (
9978                LightClient::LightClientState,
9979                IPlonkVerifier::PlonkProof,
9980            );
9981            #[doc(hidden)]
9982            type UnderlyingRustTuple<'a> = (
9983                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9984                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9985            );
9986            #[cfg(test)]
9987            #[allow(dead_code, unreachable_patterns)]
9988            fn _type_assertion(
9989                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9990            ) {
9991                match _t {
9992                    alloy_sol_types::private::AssertTypeEq::<
9993                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9994                    >(_) => {}
9995                }
9996            }
9997            #[automatically_derived]
9998            #[doc(hidden)]
9999            impl ::core::convert::From<newFinalizedState_0Call>
10000            for UnderlyingRustTuple<'_> {
10001                fn from(value: newFinalizedState_0Call) -> Self {
10002                    (value._0, value._1)
10003                }
10004            }
10005            #[automatically_derived]
10006            #[doc(hidden)]
10007            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10008            for newFinalizedState_0Call {
10009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10010                    Self { _0: tuple.0, _1: tuple.1 }
10011                }
10012            }
10013        }
10014        {
10015            #[doc(hidden)]
10016            type UnderlyingSolTuple<'a> = ();
10017            #[doc(hidden)]
10018            type UnderlyingRustTuple<'a> = ();
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<newFinalizedState_0Return>
10033            for UnderlyingRustTuple<'_> {
10034                fn from(value: newFinalizedState_0Return) -> Self {
10035                    ()
10036                }
10037            }
10038            #[automatically_derived]
10039            #[doc(hidden)]
10040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10041            for newFinalizedState_0Return {
10042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10043                    Self {}
10044                }
10045            }
10046        }
10047        #[automatically_derived]
10048        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10049            type Parameters<'a> = (
10050                LightClient::LightClientState,
10051                IPlonkVerifier::PlonkProof,
10052            );
10053            type Token<'a> = <Self::Parameters<
10054                'a,
10055            > as alloy_sol_types::SolType>::Token<'a>;
10056            type Return = newFinalizedState_0Return;
10057            type ReturnTuple<'a> = ();
10058            type ReturnToken<'a> = <Self::ReturnTuple<
10059                'a,
10060            > as alloy_sol_types::SolType>::Token<'a>;
10061            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))";
10062            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10063            #[inline]
10064            fn new<'a>(
10065                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10066            ) -> Self {
10067                tuple.into()
10068            }
10069            #[inline]
10070            fn tokenize(&self) -> Self::Token<'_> {
10071                (
10072                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10073                        &self._0,
10074                    ),
10075                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10076                        &self._1,
10077                    ),
10078                )
10079            }
10080            #[inline]
10081            fn abi_decode_returns(
10082                data: &[u8],
10083                validate: bool,
10084            ) -> alloy_sol_types::Result<Self::Return> {
10085                <Self::ReturnTuple<
10086                    '_,
10087                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10088                    .map(Into::into)
10089            }
10090        }
10091    };
10092    #[derive()]
10093    /**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`.
10094```solidity
10095function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
10096```*/
10097    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10098    #[derive(Clone)]
10099    pub struct newFinalizedState_1Call {
10100        #[allow(missing_docs)]
10101        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10102        #[allow(missing_docs)]
10103        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10104        #[allow(missing_docs)]
10105        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10106    }
10107    ///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.
10108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10109    #[derive(Clone)]
10110    pub struct newFinalizedState_1Return {}
10111    #[allow(
10112        non_camel_case_types,
10113        non_snake_case,
10114        clippy::pub_underscore_fields,
10115        clippy::style
10116    )]
10117    const _: () = {
10118        use alloy::sol_types as alloy_sol_types;
10119        {
10120            #[doc(hidden)]
10121            type UnderlyingSolTuple<'a> = (
10122                LightClient::LightClientState,
10123                LightClient::StakeTableState,
10124                IPlonkVerifier::PlonkProof,
10125            );
10126            #[doc(hidden)]
10127            type UnderlyingRustTuple<'a> = (
10128                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10129                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10130                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10131            );
10132            #[cfg(test)]
10133            #[allow(dead_code, unreachable_patterns)]
10134            fn _type_assertion(
10135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10136            ) {
10137                match _t {
10138                    alloy_sol_types::private::AssertTypeEq::<
10139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10140                    >(_) => {}
10141                }
10142            }
10143            #[automatically_derived]
10144            #[doc(hidden)]
10145            impl ::core::convert::From<newFinalizedState_1Call>
10146            for UnderlyingRustTuple<'_> {
10147                fn from(value: newFinalizedState_1Call) -> Self {
10148                    (value.newState, value.nextStakeTable, value.proof)
10149                }
10150            }
10151            #[automatically_derived]
10152            #[doc(hidden)]
10153            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10154            for newFinalizedState_1Call {
10155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10156                    Self {
10157                        newState: tuple.0,
10158                        nextStakeTable: tuple.1,
10159                        proof: tuple.2,
10160                    }
10161                }
10162            }
10163        }
10164        {
10165            #[doc(hidden)]
10166            type UnderlyingSolTuple<'a> = ();
10167            #[doc(hidden)]
10168            type UnderlyingRustTuple<'a> = ();
10169            #[cfg(test)]
10170            #[allow(dead_code, unreachable_patterns)]
10171            fn _type_assertion(
10172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10173            ) {
10174                match _t {
10175                    alloy_sol_types::private::AssertTypeEq::<
10176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10177                    >(_) => {}
10178                }
10179            }
10180            #[automatically_derived]
10181            #[doc(hidden)]
10182            impl ::core::convert::From<newFinalizedState_1Return>
10183            for UnderlyingRustTuple<'_> {
10184                fn from(value: newFinalizedState_1Return) -> Self {
10185                    ()
10186                }
10187            }
10188            #[automatically_derived]
10189            #[doc(hidden)]
10190            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10191            for newFinalizedState_1Return {
10192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10193                    Self {}
10194                }
10195            }
10196        }
10197        #[automatically_derived]
10198        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
10199            type Parameters<'a> = (
10200                LightClient::LightClientState,
10201                LightClient::StakeTableState,
10202                IPlonkVerifier::PlonkProof,
10203            );
10204            type Token<'a> = <Self::Parameters<
10205                'a,
10206            > as alloy_sol_types::SolType>::Token<'a>;
10207            type Return = newFinalizedState_1Return;
10208            type ReturnTuple<'a> = ();
10209            type ReturnToken<'a> = <Self::ReturnTuple<
10210                'a,
10211            > as alloy_sol_types::SolType>::Token<'a>;
10212            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))";
10213            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
10214            #[inline]
10215            fn new<'a>(
10216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10217            ) -> Self {
10218                tuple.into()
10219            }
10220            #[inline]
10221            fn tokenize(&self) -> Self::Token<'_> {
10222                (
10223                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10224                        &self.newState,
10225                    ),
10226                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10227                        &self.nextStakeTable,
10228                    ),
10229                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10230                        &self.proof,
10231                    ),
10232                )
10233            }
10234            #[inline]
10235            fn abi_decode_returns(
10236                data: &[u8],
10237                validate: bool,
10238            ) -> alloy_sol_types::Result<Self::Return> {
10239                <Self::ReturnTuple<
10240                    '_,
10241                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10242                    .map(Into::into)
10243            }
10244        }
10245    };
10246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10247    /**Function with signature `owner()` and selector `0x8da5cb5b`.
10248```solidity
10249function owner() external view returns (address);
10250```*/
10251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10252    #[derive(Clone)]
10253    pub struct ownerCall {}
10254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10255    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
10256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10257    #[derive(Clone)]
10258    pub struct ownerReturn {
10259        #[allow(missing_docs)]
10260        pub _0: alloy::sol_types::private::Address,
10261    }
10262    #[allow(
10263        non_camel_case_types,
10264        non_snake_case,
10265        clippy::pub_underscore_fields,
10266        clippy::style
10267    )]
10268    const _: () = {
10269        use alloy::sol_types as alloy_sol_types;
10270        {
10271            #[doc(hidden)]
10272            type UnderlyingSolTuple<'a> = ();
10273            #[doc(hidden)]
10274            type UnderlyingRustTuple<'a> = ();
10275            #[cfg(test)]
10276            #[allow(dead_code, unreachable_patterns)]
10277            fn _type_assertion(
10278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10279            ) {
10280                match _t {
10281                    alloy_sol_types::private::AssertTypeEq::<
10282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10283                    >(_) => {}
10284                }
10285            }
10286            #[automatically_derived]
10287            #[doc(hidden)]
10288            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
10289                fn from(value: ownerCall) -> Self {
10290                    ()
10291                }
10292            }
10293            #[automatically_derived]
10294            #[doc(hidden)]
10295            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
10296                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10297                    Self {}
10298                }
10299            }
10300        }
10301        {
10302            #[doc(hidden)]
10303            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10304            #[doc(hidden)]
10305            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10306            #[cfg(test)]
10307            #[allow(dead_code, unreachable_patterns)]
10308            fn _type_assertion(
10309                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10310            ) {
10311                match _t {
10312                    alloy_sol_types::private::AssertTypeEq::<
10313                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10314                    >(_) => {}
10315                }
10316            }
10317            #[automatically_derived]
10318            #[doc(hidden)]
10319            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
10320                fn from(value: ownerReturn) -> Self {
10321                    (value._0,)
10322                }
10323            }
10324            #[automatically_derived]
10325            #[doc(hidden)]
10326            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
10327                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10328                    Self { _0: tuple.0 }
10329                }
10330            }
10331        }
10332        #[automatically_derived]
10333        impl alloy_sol_types::SolCall for ownerCall {
10334            type Parameters<'a> = ();
10335            type Token<'a> = <Self::Parameters<
10336                'a,
10337            > as alloy_sol_types::SolType>::Token<'a>;
10338            type Return = ownerReturn;
10339            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10340            type ReturnToken<'a> = <Self::ReturnTuple<
10341                'a,
10342            > as alloy_sol_types::SolType>::Token<'a>;
10343            const SIGNATURE: &'static str = "owner()";
10344            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
10345            #[inline]
10346            fn new<'a>(
10347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10348            ) -> Self {
10349                tuple.into()
10350            }
10351            #[inline]
10352            fn tokenize(&self) -> Self::Token<'_> {
10353                ()
10354            }
10355            #[inline]
10356            fn abi_decode_returns(
10357                data: &[u8],
10358                validate: bool,
10359            ) -> alloy_sol_types::Result<Self::Return> {
10360                <Self::ReturnTuple<
10361                    '_,
10362                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10363                    .map(Into::into)
10364            }
10365        }
10366    };
10367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10368    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
10369```solidity
10370function permissionedProver() external view returns (address);
10371```*/
10372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10373    #[derive(Clone)]
10374    pub struct permissionedProverCall {}
10375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10376    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
10377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10378    #[derive(Clone)]
10379    pub struct permissionedProverReturn {
10380        #[allow(missing_docs)]
10381        pub _0: alloy::sol_types::private::Address,
10382    }
10383    #[allow(
10384        non_camel_case_types,
10385        non_snake_case,
10386        clippy::pub_underscore_fields,
10387        clippy::style
10388    )]
10389    const _: () = {
10390        use alloy::sol_types as alloy_sol_types;
10391        {
10392            #[doc(hidden)]
10393            type UnderlyingSolTuple<'a> = ();
10394            #[doc(hidden)]
10395            type UnderlyingRustTuple<'a> = ();
10396            #[cfg(test)]
10397            #[allow(dead_code, unreachable_patterns)]
10398            fn _type_assertion(
10399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10400            ) {
10401                match _t {
10402                    alloy_sol_types::private::AssertTypeEq::<
10403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10404                    >(_) => {}
10405                }
10406            }
10407            #[automatically_derived]
10408            #[doc(hidden)]
10409            impl ::core::convert::From<permissionedProverCall>
10410            for UnderlyingRustTuple<'_> {
10411                fn from(value: permissionedProverCall) -> Self {
10412                    ()
10413                }
10414            }
10415            #[automatically_derived]
10416            #[doc(hidden)]
10417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10418            for permissionedProverCall {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self {}
10421                }
10422            }
10423        }
10424        {
10425            #[doc(hidden)]
10426            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10427            #[doc(hidden)]
10428            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10429            #[cfg(test)]
10430            #[allow(dead_code, unreachable_patterns)]
10431            fn _type_assertion(
10432                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10433            ) {
10434                match _t {
10435                    alloy_sol_types::private::AssertTypeEq::<
10436                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10437                    >(_) => {}
10438                }
10439            }
10440            #[automatically_derived]
10441            #[doc(hidden)]
10442            impl ::core::convert::From<permissionedProverReturn>
10443            for UnderlyingRustTuple<'_> {
10444                fn from(value: permissionedProverReturn) -> Self {
10445                    (value._0,)
10446                }
10447            }
10448            #[automatically_derived]
10449            #[doc(hidden)]
10450            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10451            for permissionedProverReturn {
10452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10453                    Self { _0: tuple.0 }
10454                }
10455            }
10456        }
10457        #[automatically_derived]
10458        impl alloy_sol_types::SolCall for permissionedProverCall {
10459            type Parameters<'a> = ();
10460            type Token<'a> = <Self::Parameters<
10461                'a,
10462            > as alloy_sol_types::SolType>::Token<'a>;
10463            type Return = permissionedProverReturn;
10464            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
10465            type ReturnToken<'a> = <Self::ReturnTuple<
10466                'a,
10467            > as alloy_sol_types::SolType>::Token<'a>;
10468            const SIGNATURE: &'static str = "permissionedProver()";
10469            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
10470            #[inline]
10471            fn new<'a>(
10472                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10473            ) -> Self {
10474                tuple.into()
10475            }
10476            #[inline]
10477            fn tokenize(&self) -> Self::Token<'_> {
10478                ()
10479            }
10480            #[inline]
10481            fn abi_decode_returns(
10482                data: &[u8],
10483                validate: bool,
10484            ) -> alloy_sol_types::Result<Self::Return> {
10485                <Self::ReturnTuple<
10486                    '_,
10487                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10488                    .map(Into::into)
10489            }
10490        }
10491    };
10492    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10493    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
10494```solidity
10495function proxiableUUID() external view returns (bytes32);
10496```*/
10497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10498    #[derive(Clone)]
10499    pub struct proxiableUUIDCall {}
10500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10501    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
10502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10503    #[derive(Clone)]
10504    pub struct proxiableUUIDReturn {
10505        #[allow(missing_docs)]
10506        pub _0: alloy::sol_types::private::FixedBytes<32>,
10507    }
10508    #[allow(
10509        non_camel_case_types,
10510        non_snake_case,
10511        clippy::pub_underscore_fields,
10512        clippy::style
10513    )]
10514    const _: () = {
10515        use alloy::sol_types as alloy_sol_types;
10516        {
10517            #[doc(hidden)]
10518            type UnderlyingSolTuple<'a> = ();
10519            #[doc(hidden)]
10520            type UnderlyingRustTuple<'a> = ();
10521            #[cfg(test)]
10522            #[allow(dead_code, unreachable_patterns)]
10523            fn _type_assertion(
10524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10525            ) {
10526                match _t {
10527                    alloy_sol_types::private::AssertTypeEq::<
10528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10529                    >(_) => {}
10530                }
10531            }
10532            #[automatically_derived]
10533            #[doc(hidden)]
10534            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
10535                fn from(value: proxiableUUIDCall) -> Self {
10536                    ()
10537                }
10538            }
10539            #[automatically_derived]
10540            #[doc(hidden)]
10541            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
10542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10543                    Self {}
10544                }
10545            }
10546        }
10547        {
10548            #[doc(hidden)]
10549            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10550            #[doc(hidden)]
10551            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
10552            #[cfg(test)]
10553            #[allow(dead_code, unreachable_patterns)]
10554            fn _type_assertion(
10555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10556            ) {
10557                match _t {
10558                    alloy_sol_types::private::AssertTypeEq::<
10559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10560                    >(_) => {}
10561                }
10562            }
10563            #[automatically_derived]
10564            #[doc(hidden)]
10565            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
10566                fn from(value: proxiableUUIDReturn) -> Self {
10567                    (value._0,)
10568                }
10569            }
10570            #[automatically_derived]
10571            #[doc(hidden)]
10572            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
10573                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10574                    Self { _0: tuple.0 }
10575                }
10576            }
10577        }
10578        #[automatically_derived]
10579        impl alloy_sol_types::SolCall for proxiableUUIDCall {
10580            type Parameters<'a> = ();
10581            type Token<'a> = <Self::Parameters<
10582                'a,
10583            > as alloy_sol_types::SolType>::Token<'a>;
10584            type Return = proxiableUUIDReturn;
10585            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
10586            type ReturnToken<'a> = <Self::ReturnTuple<
10587                'a,
10588            > as alloy_sol_types::SolType>::Token<'a>;
10589            const SIGNATURE: &'static str = "proxiableUUID()";
10590            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
10591            #[inline]
10592            fn new<'a>(
10593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10594            ) -> Self {
10595                tuple.into()
10596            }
10597            #[inline]
10598            fn tokenize(&self) -> Self::Token<'_> {
10599                ()
10600            }
10601            #[inline]
10602            fn abi_decode_returns(
10603                data: &[u8],
10604                validate: bool,
10605            ) -> alloy_sol_types::Result<Self::Return> {
10606                <Self::ReturnTuple<
10607                    '_,
10608                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10609                    .map(Into::into)
10610            }
10611        }
10612    };
10613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10614    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
10615```solidity
10616function renounceOwnership() external;
10617```*/
10618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10619    #[derive(Clone)]
10620    pub struct renounceOwnershipCall {}
10621    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
10622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10623    #[derive(Clone)]
10624    pub struct renounceOwnershipReturn {}
10625    #[allow(
10626        non_camel_case_types,
10627        non_snake_case,
10628        clippy::pub_underscore_fields,
10629        clippy::style
10630    )]
10631    const _: () = {
10632        use alloy::sol_types as alloy_sol_types;
10633        {
10634            #[doc(hidden)]
10635            type UnderlyingSolTuple<'a> = ();
10636            #[doc(hidden)]
10637            type UnderlyingRustTuple<'a> = ();
10638            #[cfg(test)]
10639            #[allow(dead_code, unreachable_patterns)]
10640            fn _type_assertion(
10641                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10642            ) {
10643                match _t {
10644                    alloy_sol_types::private::AssertTypeEq::<
10645                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10646                    >(_) => {}
10647                }
10648            }
10649            #[automatically_derived]
10650            #[doc(hidden)]
10651            impl ::core::convert::From<renounceOwnershipCall>
10652            for UnderlyingRustTuple<'_> {
10653                fn from(value: renounceOwnershipCall) -> Self {
10654                    ()
10655                }
10656            }
10657            #[automatically_derived]
10658            #[doc(hidden)]
10659            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10660            for renounceOwnershipCall {
10661                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10662                    Self {}
10663                }
10664            }
10665        }
10666        {
10667            #[doc(hidden)]
10668            type UnderlyingSolTuple<'a> = ();
10669            #[doc(hidden)]
10670            type UnderlyingRustTuple<'a> = ();
10671            #[cfg(test)]
10672            #[allow(dead_code, unreachable_patterns)]
10673            fn _type_assertion(
10674                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10675            ) {
10676                match _t {
10677                    alloy_sol_types::private::AssertTypeEq::<
10678                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10679                    >(_) => {}
10680                }
10681            }
10682            #[automatically_derived]
10683            #[doc(hidden)]
10684            impl ::core::convert::From<renounceOwnershipReturn>
10685            for UnderlyingRustTuple<'_> {
10686                fn from(value: renounceOwnershipReturn) -> Self {
10687                    ()
10688                }
10689            }
10690            #[automatically_derived]
10691            #[doc(hidden)]
10692            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10693            for renounceOwnershipReturn {
10694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10695                    Self {}
10696                }
10697            }
10698        }
10699        #[automatically_derived]
10700        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10701            type Parameters<'a> = ();
10702            type Token<'a> = <Self::Parameters<
10703                'a,
10704            > as alloy_sol_types::SolType>::Token<'a>;
10705            type Return = renounceOwnershipReturn;
10706            type ReturnTuple<'a> = ();
10707            type ReturnToken<'a> = <Self::ReturnTuple<
10708                'a,
10709            > as alloy_sol_types::SolType>::Token<'a>;
10710            const SIGNATURE: &'static str = "renounceOwnership()";
10711            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10712            #[inline]
10713            fn new<'a>(
10714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10715            ) -> Self {
10716                tuple.into()
10717            }
10718            #[inline]
10719            fn tokenize(&self) -> Self::Token<'_> {
10720                ()
10721            }
10722            #[inline]
10723            fn abi_decode_returns(
10724                data: &[u8],
10725                validate: bool,
10726            ) -> alloy_sol_types::Result<Self::Return> {
10727                <Self::ReturnTuple<
10728                    '_,
10729                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10730                    .map(Into::into)
10731            }
10732        }
10733    };
10734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10735    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10736```solidity
10737function setPermissionedProver(address prover) external;
10738```*/
10739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10740    #[derive(Clone)]
10741    pub struct setPermissionedProverCall {
10742        #[allow(missing_docs)]
10743        pub prover: alloy::sol_types::private::Address,
10744    }
10745    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10747    #[derive(Clone)]
10748    pub struct setPermissionedProverReturn {}
10749    #[allow(
10750        non_camel_case_types,
10751        non_snake_case,
10752        clippy::pub_underscore_fields,
10753        clippy::style
10754    )]
10755    const _: () = {
10756        use alloy::sol_types as alloy_sol_types;
10757        {
10758            #[doc(hidden)]
10759            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10760            #[doc(hidden)]
10761            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10762            #[cfg(test)]
10763            #[allow(dead_code, unreachable_patterns)]
10764            fn _type_assertion(
10765                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10766            ) {
10767                match _t {
10768                    alloy_sol_types::private::AssertTypeEq::<
10769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10770                    >(_) => {}
10771                }
10772            }
10773            #[automatically_derived]
10774            #[doc(hidden)]
10775            impl ::core::convert::From<setPermissionedProverCall>
10776            for UnderlyingRustTuple<'_> {
10777                fn from(value: setPermissionedProverCall) -> Self {
10778                    (value.prover,)
10779                }
10780            }
10781            #[automatically_derived]
10782            #[doc(hidden)]
10783            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10784            for setPermissionedProverCall {
10785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10786                    Self { prover: tuple.0 }
10787                }
10788            }
10789        }
10790        {
10791            #[doc(hidden)]
10792            type UnderlyingSolTuple<'a> = ();
10793            #[doc(hidden)]
10794            type UnderlyingRustTuple<'a> = ();
10795            #[cfg(test)]
10796            #[allow(dead_code, unreachable_patterns)]
10797            fn _type_assertion(
10798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10799            ) {
10800                match _t {
10801                    alloy_sol_types::private::AssertTypeEq::<
10802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10803                    >(_) => {}
10804                }
10805            }
10806            #[automatically_derived]
10807            #[doc(hidden)]
10808            impl ::core::convert::From<setPermissionedProverReturn>
10809            for UnderlyingRustTuple<'_> {
10810                fn from(value: setPermissionedProverReturn) -> Self {
10811                    ()
10812                }
10813            }
10814            #[automatically_derived]
10815            #[doc(hidden)]
10816            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10817            for setPermissionedProverReturn {
10818                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10819                    Self {}
10820                }
10821            }
10822        }
10823        #[automatically_derived]
10824        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10825            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10826            type Token<'a> = <Self::Parameters<
10827                'a,
10828            > as alloy_sol_types::SolType>::Token<'a>;
10829            type Return = setPermissionedProverReturn;
10830            type ReturnTuple<'a> = ();
10831            type ReturnToken<'a> = <Self::ReturnTuple<
10832                'a,
10833            > as alloy_sol_types::SolType>::Token<'a>;
10834            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10835            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10836            #[inline]
10837            fn new<'a>(
10838                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10839            ) -> Self {
10840                tuple.into()
10841            }
10842            #[inline]
10843            fn tokenize(&self) -> Self::Token<'_> {
10844                (
10845                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10846                        &self.prover,
10847                    ),
10848                )
10849            }
10850            #[inline]
10851            fn abi_decode_returns(
10852                data: &[u8],
10853                validate: bool,
10854            ) -> alloy_sol_types::Result<Self::Return> {
10855                <Self::ReturnTuple<
10856                    '_,
10857                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10858                    .map(Into::into)
10859            }
10860        }
10861    };
10862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10863    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
10864```solidity
10865function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
10866```*/
10867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10868    #[derive(Clone)]
10869    pub struct setStateHistoryRetentionPeriodCall {
10870        #[allow(missing_docs)]
10871        pub historySeconds: u32,
10872    }
10873    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
10874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10875    #[derive(Clone)]
10876    pub struct setStateHistoryRetentionPeriodReturn {}
10877    #[allow(
10878        non_camel_case_types,
10879        non_snake_case,
10880        clippy::pub_underscore_fields,
10881        clippy::style
10882    )]
10883    const _: () = {
10884        use alloy::sol_types as alloy_sol_types;
10885        {
10886            #[doc(hidden)]
10887            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10888            #[doc(hidden)]
10889            type UnderlyingRustTuple<'a> = (u32,);
10890            #[cfg(test)]
10891            #[allow(dead_code, unreachable_patterns)]
10892            fn _type_assertion(
10893                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10894            ) {
10895                match _t {
10896                    alloy_sol_types::private::AssertTypeEq::<
10897                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10898                    >(_) => {}
10899                }
10900            }
10901            #[automatically_derived]
10902            #[doc(hidden)]
10903            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
10904            for UnderlyingRustTuple<'_> {
10905                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
10906                    (value.historySeconds,)
10907                }
10908            }
10909            #[automatically_derived]
10910            #[doc(hidden)]
10911            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10912            for setStateHistoryRetentionPeriodCall {
10913                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10914                    Self { historySeconds: tuple.0 }
10915                }
10916            }
10917        }
10918        {
10919            #[doc(hidden)]
10920            type UnderlyingSolTuple<'a> = ();
10921            #[doc(hidden)]
10922            type UnderlyingRustTuple<'a> = ();
10923            #[cfg(test)]
10924            #[allow(dead_code, unreachable_patterns)]
10925            fn _type_assertion(
10926                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10927            ) {
10928                match _t {
10929                    alloy_sol_types::private::AssertTypeEq::<
10930                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10931                    >(_) => {}
10932                }
10933            }
10934            #[automatically_derived]
10935            #[doc(hidden)]
10936            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
10937            for UnderlyingRustTuple<'_> {
10938                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
10939                    ()
10940                }
10941            }
10942            #[automatically_derived]
10943            #[doc(hidden)]
10944            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10945            for setStateHistoryRetentionPeriodReturn {
10946                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10947                    Self {}
10948                }
10949            }
10950        }
10951        #[automatically_derived]
10952        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
10953            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10954            type Token<'a> = <Self::Parameters<
10955                'a,
10956            > as alloy_sol_types::SolType>::Token<'a>;
10957            type Return = setStateHistoryRetentionPeriodReturn;
10958            type ReturnTuple<'a> = ();
10959            type ReturnToken<'a> = <Self::ReturnTuple<
10960                'a,
10961            > as alloy_sol_types::SolType>::Token<'a>;
10962            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
10963            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
10964            #[inline]
10965            fn new<'a>(
10966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10967            ) -> Self {
10968                tuple.into()
10969            }
10970            #[inline]
10971            fn tokenize(&self) -> Self::Token<'_> {
10972                (
10973                    <alloy::sol_types::sol_data::Uint<
10974                        32,
10975                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10976                )
10977            }
10978            #[inline]
10979            fn abi_decode_returns(
10980                data: &[u8],
10981                validate: bool,
10982            ) -> alloy_sol_types::Result<Self::Return> {
10983                <Self::ReturnTuple<
10984                    '_,
10985                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
10986                    .map(Into::into)
10987            }
10988        }
10989    };
10990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10991    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10992```solidity
10993function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10994```*/
10995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10996    #[derive(Clone)]
10997    pub struct setstateHistoryRetentionPeriodCall {
10998        #[allow(missing_docs)]
10999        pub historySeconds: u32,
11000    }
11001    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11002    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11003    #[derive(Clone)]
11004    pub struct setstateHistoryRetentionPeriodReturn {}
11005    #[allow(
11006        non_camel_case_types,
11007        non_snake_case,
11008        clippy::pub_underscore_fields,
11009        clippy::style
11010    )]
11011    const _: () = {
11012        use alloy::sol_types as alloy_sol_types;
11013        {
11014            #[doc(hidden)]
11015            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11016            #[doc(hidden)]
11017            type UnderlyingRustTuple<'a> = (u32,);
11018            #[cfg(test)]
11019            #[allow(dead_code, unreachable_patterns)]
11020            fn _type_assertion(
11021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11022            ) {
11023                match _t {
11024                    alloy_sol_types::private::AssertTypeEq::<
11025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11026                    >(_) => {}
11027                }
11028            }
11029            #[automatically_derived]
11030            #[doc(hidden)]
11031            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
11032            for UnderlyingRustTuple<'_> {
11033                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
11034                    (value.historySeconds,)
11035                }
11036            }
11037            #[automatically_derived]
11038            #[doc(hidden)]
11039            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11040            for setstateHistoryRetentionPeriodCall {
11041                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11042                    Self { historySeconds: tuple.0 }
11043                }
11044            }
11045        }
11046        {
11047            #[doc(hidden)]
11048            type UnderlyingSolTuple<'a> = ();
11049            #[doc(hidden)]
11050            type UnderlyingRustTuple<'a> = ();
11051            #[cfg(test)]
11052            #[allow(dead_code, unreachable_patterns)]
11053            fn _type_assertion(
11054                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11055            ) {
11056                match _t {
11057                    alloy_sol_types::private::AssertTypeEq::<
11058                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11059                    >(_) => {}
11060                }
11061            }
11062            #[automatically_derived]
11063            #[doc(hidden)]
11064            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
11065            for UnderlyingRustTuple<'_> {
11066                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
11067                    ()
11068                }
11069            }
11070            #[automatically_derived]
11071            #[doc(hidden)]
11072            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11073            for setstateHistoryRetentionPeriodReturn {
11074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11075                    Self {}
11076                }
11077            }
11078        }
11079        #[automatically_derived]
11080        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
11081            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11082            type Token<'a> = <Self::Parameters<
11083                'a,
11084            > as alloy_sol_types::SolType>::Token<'a>;
11085            type Return = setstateHistoryRetentionPeriodReturn;
11086            type ReturnTuple<'a> = ();
11087            type ReturnToken<'a> = <Self::ReturnTuple<
11088                'a,
11089            > as alloy_sol_types::SolType>::Token<'a>;
11090            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
11091            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
11092            #[inline]
11093            fn new<'a>(
11094                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11095            ) -> Self {
11096                tuple.into()
11097            }
11098            #[inline]
11099            fn tokenize(&self) -> Self::Token<'_> {
11100                (
11101                    <alloy::sol_types::sol_data::Uint<
11102                        32,
11103                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11104                )
11105            }
11106            #[inline]
11107            fn abi_decode_returns(
11108                data: &[u8],
11109                validate: bool,
11110            ) -> alloy_sol_types::Result<Self::Return> {
11111                <Self::ReturnTuple<
11112                    '_,
11113                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11114                    .map(Into::into)
11115            }
11116        }
11117    };
11118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11119    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
11120```solidity
11121function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
11122```*/
11123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11124    #[derive(Clone)]
11125    pub struct stateHistoryCommitmentsCall {
11126        #[allow(missing_docs)]
11127        pub _0: alloy::sol_types::private::primitives::aliases::U256,
11128    }
11129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11130    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11131    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11132    #[derive(Clone)]
11133    pub struct stateHistoryCommitmentsReturn {
11134        #[allow(missing_docs)]
11135        pub l1BlockHeight: u64,
11136        #[allow(missing_docs)]
11137        pub l1BlockTimestamp: u64,
11138        #[allow(missing_docs)]
11139        pub hotShotBlockHeight: u64,
11140        #[allow(missing_docs)]
11141        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11142    }
11143    #[allow(
11144        non_camel_case_types,
11145        non_snake_case,
11146        clippy::pub_underscore_fields,
11147        clippy::style
11148    )]
11149    const _: () = {
11150        use alloy::sol_types as alloy_sol_types;
11151        {
11152            #[doc(hidden)]
11153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11154            #[doc(hidden)]
11155            type UnderlyingRustTuple<'a> = (
11156                alloy::sol_types::private::primitives::aliases::U256,
11157            );
11158            #[cfg(test)]
11159            #[allow(dead_code, unreachable_patterns)]
11160            fn _type_assertion(
11161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11162            ) {
11163                match _t {
11164                    alloy_sol_types::private::AssertTypeEq::<
11165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11166                    >(_) => {}
11167                }
11168            }
11169            #[automatically_derived]
11170            #[doc(hidden)]
11171            impl ::core::convert::From<stateHistoryCommitmentsCall>
11172            for UnderlyingRustTuple<'_> {
11173                fn from(value: stateHistoryCommitmentsCall) -> Self {
11174                    (value._0,)
11175                }
11176            }
11177            #[automatically_derived]
11178            #[doc(hidden)]
11179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11180            for stateHistoryCommitmentsCall {
11181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11182                    Self { _0: tuple.0 }
11183                }
11184            }
11185        }
11186        {
11187            #[doc(hidden)]
11188            type UnderlyingSolTuple<'a> = (
11189                alloy::sol_types::sol_data::Uint<64>,
11190                alloy::sol_types::sol_data::Uint<64>,
11191                alloy::sol_types::sol_data::Uint<64>,
11192                BN254::ScalarField,
11193            );
11194            #[doc(hidden)]
11195            type UnderlyingRustTuple<'a> = (
11196                u64,
11197                u64,
11198                u64,
11199                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11200            );
11201            #[cfg(test)]
11202            #[allow(dead_code, unreachable_patterns)]
11203            fn _type_assertion(
11204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11205            ) {
11206                match _t {
11207                    alloy_sol_types::private::AssertTypeEq::<
11208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11209                    >(_) => {}
11210                }
11211            }
11212            #[automatically_derived]
11213            #[doc(hidden)]
11214            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11215            for UnderlyingRustTuple<'_> {
11216                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11217                    (
11218                        value.l1BlockHeight,
11219                        value.l1BlockTimestamp,
11220                        value.hotShotBlockHeight,
11221                        value.hotShotBlockCommRoot,
11222                    )
11223                }
11224            }
11225            #[automatically_derived]
11226            #[doc(hidden)]
11227            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11228            for stateHistoryCommitmentsReturn {
11229                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11230                    Self {
11231                        l1BlockHeight: tuple.0,
11232                        l1BlockTimestamp: tuple.1,
11233                        hotShotBlockHeight: tuple.2,
11234                        hotShotBlockCommRoot: tuple.3,
11235                    }
11236                }
11237            }
11238        }
11239        #[automatically_derived]
11240        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11241            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11242            type Token<'a> = <Self::Parameters<
11243                'a,
11244            > as alloy_sol_types::SolType>::Token<'a>;
11245            type Return = stateHistoryCommitmentsReturn;
11246            type ReturnTuple<'a> = (
11247                alloy::sol_types::sol_data::Uint<64>,
11248                alloy::sol_types::sol_data::Uint<64>,
11249                alloy::sol_types::sol_data::Uint<64>,
11250                BN254::ScalarField,
11251            );
11252            type ReturnToken<'a> = <Self::ReturnTuple<
11253                'a,
11254            > as alloy_sol_types::SolType>::Token<'a>;
11255            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11256            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11257            #[inline]
11258            fn new<'a>(
11259                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11260            ) -> Self {
11261                tuple.into()
11262            }
11263            #[inline]
11264            fn tokenize(&self) -> Self::Token<'_> {
11265                (
11266                    <alloy::sol_types::sol_data::Uint<
11267                        256,
11268                    > as alloy_sol_types::SolType>::tokenize(&self._0),
11269                )
11270            }
11271            #[inline]
11272            fn abi_decode_returns(
11273                data: &[u8],
11274                validate: bool,
11275            ) -> alloy_sol_types::Result<Self::Return> {
11276                <Self::ReturnTuple<
11277                    '_,
11278                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11279                    .map(Into::into)
11280            }
11281        }
11282    };
11283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11284    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11285```solidity
11286function stateHistoryFirstIndex() external view returns (uint64);
11287```*/
11288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11289    #[derive(Clone)]
11290    pub struct stateHistoryFirstIndexCall {}
11291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11292    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11294    #[derive(Clone)]
11295    pub struct stateHistoryFirstIndexReturn {
11296        #[allow(missing_docs)]
11297        pub _0: u64,
11298    }
11299    #[allow(
11300        non_camel_case_types,
11301        non_snake_case,
11302        clippy::pub_underscore_fields,
11303        clippy::style
11304    )]
11305    const _: () = {
11306        use alloy::sol_types as alloy_sol_types;
11307        {
11308            #[doc(hidden)]
11309            type UnderlyingSolTuple<'a> = ();
11310            #[doc(hidden)]
11311            type UnderlyingRustTuple<'a> = ();
11312            #[cfg(test)]
11313            #[allow(dead_code, unreachable_patterns)]
11314            fn _type_assertion(
11315                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11316            ) {
11317                match _t {
11318                    alloy_sol_types::private::AssertTypeEq::<
11319                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11320                    >(_) => {}
11321                }
11322            }
11323            #[automatically_derived]
11324            #[doc(hidden)]
11325            impl ::core::convert::From<stateHistoryFirstIndexCall>
11326            for UnderlyingRustTuple<'_> {
11327                fn from(value: stateHistoryFirstIndexCall) -> Self {
11328                    ()
11329                }
11330            }
11331            #[automatically_derived]
11332            #[doc(hidden)]
11333            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11334            for stateHistoryFirstIndexCall {
11335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11336                    Self {}
11337                }
11338            }
11339        }
11340        {
11341            #[doc(hidden)]
11342            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11343            #[doc(hidden)]
11344            type UnderlyingRustTuple<'a> = (u64,);
11345            #[cfg(test)]
11346            #[allow(dead_code, unreachable_patterns)]
11347            fn _type_assertion(
11348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11349            ) {
11350                match _t {
11351                    alloy_sol_types::private::AssertTypeEq::<
11352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11353                    >(_) => {}
11354                }
11355            }
11356            #[automatically_derived]
11357            #[doc(hidden)]
11358            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11359            for UnderlyingRustTuple<'_> {
11360                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11361                    (value._0,)
11362                }
11363            }
11364            #[automatically_derived]
11365            #[doc(hidden)]
11366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11367            for stateHistoryFirstIndexReturn {
11368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11369                    Self { _0: tuple.0 }
11370                }
11371            }
11372        }
11373        #[automatically_derived]
11374        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11375            type Parameters<'a> = ();
11376            type Token<'a> = <Self::Parameters<
11377                'a,
11378            > as alloy_sol_types::SolType>::Token<'a>;
11379            type Return = stateHistoryFirstIndexReturn;
11380            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11381            type ReturnToken<'a> = <Self::ReturnTuple<
11382                'a,
11383            > as alloy_sol_types::SolType>::Token<'a>;
11384            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11385            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11386            #[inline]
11387            fn new<'a>(
11388                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11389            ) -> Self {
11390                tuple.into()
11391            }
11392            #[inline]
11393            fn tokenize(&self) -> Self::Token<'_> {
11394                ()
11395            }
11396            #[inline]
11397            fn abi_decode_returns(
11398                data: &[u8],
11399                validate: bool,
11400            ) -> alloy_sol_types::Result<Self::Return> {
11401                <Self::ReturnTuple<
11402                    '_,
11403                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11404                    .map(Into::into)
11405            }
11406        }
11407    };
11408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11409    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11410```solidity
11411function stateHistoryRetentionPeriod() external view returns (uint32);
11412```*/
11413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11414    #[derive(Clone)]
11415    pub struct stateHistoryRetentionPeriodCall {}
11416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11417    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11419    #[derive(Clone)]
11420    pub struct stateHistoryRetentionPeriodReturn {
11421        #[allow(missing_docs)]
11422        pub _0: u32,
11423    }
11424    #[allow(
11425        non_camel_case_types,
11426        non_snake_case,
11427        clippy::pub_underscore_fields,
11428        clippy::style
11429    )]
11430    const _: () = {
11431        use alloy::sol_types as alloy_sol_types;
11432        {
11433            #[doc(hidden)]
11434            type UnderlyingSolTuple<'a> = ();
11435            #[doc(hidden)]
11436            type UnderlyingRustTuple<'a> = ();
11437            #[cfg(test)]
11438            #[allow(dead_code, unreachable_patterns)]
11439            fn _type_assertion(
11440                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11441            ) {
11442                match _t {
11443                    alloy_sol_types::private::AssertTypeEq::<
11444                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11445                    >(_) => {}
11446                }
11447            }
11448            #[automatically_derived]
11449            #[doc(hidden)]
11450            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11451            for UnderlyingRustTuple<'_> {
11452                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11453                    ()
11454                }
11455            }
11456            #[automatically_derived]
11457            #[doc(hidden)]
11458            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11459            for stateHistoryRetentionPeriodCall {
11460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11461                    Self {}
11462                }
11463            }
11464        }
11465        {
11466            #[doc(hidden)]
11467            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11468            #[doc(hidden)]
11469            type UnderlyingRustTuple<'a> = (u32,);
11470            #[cfg(test)]
11471            #[allow(dead_code, unreachable_patterns)]
11472            fn _type_assertion(
11473                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11474            ) {
11475                match _t {
11476                    alloy_sol_types::private::AssertTypeEq::<
11477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11478                    >(_) => {}
11479                }
11480            }
11481            #[automatically_derived]
11482            #[doc(hidden)]
11483            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11484            for UnderlyingRustTuple<'_> {
11485                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11486                    (value._0,)
11487                }
11488            }
11489            #[automatically_derived]
11490            #[doc(hidden)]
11491            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11492            for stateHistoryRetentionPeriodReturn {
11493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11494                    Self { _0: tuple.0 }
11495                }
11496            }
11497        }
11498        #[automatically_derived]
11499        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11500            type Parameters<'a> = ();
11501            type Token<'a> = <Self::Parameters<
11502                'a,
11503            > as alloy_sol_types::SolType>::Token<'a>;
11504            type Return = stateHistoryRetentionPeriodReturn;
11505            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11506            type ReturnToken<'a> = <Self::ReturnTuple<
11507                'a,
11508            > as alloy_sol_types::SolType>::Token<'a>;
11509            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11510            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11511            #[inline]
11512            fn new<'a>(
11513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11514            ) -> Self {
11515                tuple.into()
11516            }
11517            #[inline]
11518            fn tokenize(&self) -> Self::Token<'_> {
11519                ()
11520            }
11521            #[inline]
11522            fn abi_decode_returns(
11523                data: &[u8],
11524                validate: bool,
11525            ) -> alloy_sol_types::Result<Self::Return> {
11526                <Self::ReturnTuple<
11527                    '_,
11528                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11529                    .map(Into::into)
11530            }
11531        }
11532    };
11533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11534    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11535```solidity
11536function transferOwnership(address newOwner) external;
11537```*/
11538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11539    #[derive(Clone)]
11540    pub struct transferOwnershipCall {
11541        #[allow(missing_docs)]
11542        pub newOwner: alloy::sol_types::private::Address,
11543    }
11544    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11546    #[derive(Clone)]
11547    pub struct transferOwnershipReturn {}
11548    #[allow(
11549        non_camel_case_types,
11550        non_snake_case,
11551        clippy::pub_underscore_fields,
11552        clippy::style
11553    )]
11554    const _: () = {
11555        use alloy::sol_types as alloy_sol_types;
11556        {
11557            #[doc(hidden)]
11558            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11559            #[doc(hidden)]
11560            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11561            #[cfg(test)]
11562            #[allow(dead_code, unreachable_patterns)]
11563            fn _type_assertion(
11564                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11565            ) {
11566                match _t {
11567                    alloy_sol_types::private::AssertTypeEq::<
11568                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11569                    >(_) => {}
11570                }
11571            }
11572            #[automatically_derived]
11573            #[doc(hidden)]
11574            impl ::core::convert::From<transferOwnershipCall>
11575            for UnderlyingRustTuple<'_> {
11576                fn from(value: transferOwnershipCall) -> Self {
11577                    (value.newOwner,)
11578                }
11579            }
11580            #[automatically_derived]
11581            #[doc(hidden)]
11582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11583            for transferOwnershipCall {
11584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11585                    Self { newOwner: tuple.0 }
11586                }
11587            }
11588        }
11589        {
11590            #[doc(hidden)]
11591            type UnderlyingSolTuple<'a> = ();
11592            #[doc(hidden)]
11593            type UnderlyingRustTuple<'a> = ();
11594            #[cfg(test)]
11595            #[allow(dead_code, unreachable_patterns)]
11596            fn _type_assertion(
11597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11598            ) {
11599                match _t {
11600                    alloy_sol_types::private::AssertTypeEq::<
11601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11602                    >(_) => {}
11603                }
11604            }
11605            #[automatically_derived]
11606            #[doc(hidden)]
11607            impl ::core::convert::From<transferOwnershipReturn>
11608            for UnderlyingRustTuple<'_> {
11609                fn from(value: transferOwnershipReturn) -> Self {
11610                    ()
11611                }
11612            }
11613            #[automatically_derived]
11614            #[doc(hidden)]
11615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11616            for transferOwnershipReturn {
11617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11618                    Self {}
11619                }
11620            }
11621        }
11622        #[automatically_derived]
11623        impl alloy_sol_types::SolCall for transferOwnershipCall {
11624            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11625            type Token<'a> = <Self::Parameters<
11626                'a,
11627            > as alloy_sol_types::SolType>::Token<'a>;
11628            type Return = transferOwnershipReturn;
11629            type ReturnTuple<'a> = ();
11630            type ReturnToken<'a> = <Self::ReturnTuple<
11631                'a,
11632            > as alloy_sol_types::SolType>::Token<'a>;
11633            const SIGNATURE: &'static str = "transferOwnership(address)";
11634            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11635            #[inline]
11636            fn new<'a>(
11637                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11638            ) -> Self {
11639                tuple.into()
11640            }
11641            #[inline]
11642            fn tokenize(&self) -> Self::Token<'_> {
11643                (
11644                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11645                        &self.newOwner,
11646                    ),
11647                )
11648            }
11649            #[inline]
11650            fn abi_decode_returns(
11651                data: &[u8],
11652                validate: bool,
11653            ) -> alloy_sol_types::Result<Self::Return> {
11654                <Self::ReturnTuple<
11655                    '_,
11656                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11657                    .map(Into::into)
11658            }
11659        }
11660    };
11661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11662    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
11663```solidity
11664function updateEpochStartBlock(uint64 newEpochStartBlock) external;
11665```*/
11666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11667    #[derive(Clone)]
11668    pub struct updateEpochStartBlockCall {
11669        #[allow(missing_docs)]
11670        pub newEpochStartBlock: u64,
11671    }
11672    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
11673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11674    #[derive(Clone)]
11675    pub struct updateEpochStartBlockReturn {}
11676    #[allow(
11677        non_camel_case_types,
11678        non_snake_case,
11679        clippy::pub_underscore_fields,
11680        clippy::style
11681    )]
11682    const _: () = {
11683        use alloy::sol_types as alloy_sol_types;
11684        {
11685            #[doc(hidden)]
11686            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11687            #[doc(hidden)]
11688            type UnderlyingRustTuple<'a> = (u64,);
11689            #[cfg(test)]
11690            #[allow(dead_code, unreachable_patterns)]
11691            fn _type_assertion(
11692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11693            ) {
11694                match _t {
11695                    alloy_sol_types::private::AssertTypeEq::<
11696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11697                    >(_) => {}
11698                }
11699            }
11700            #[automatically_derived]
11701            #[doc(hidden)]
11702            impl ::core::convert::From<updateEpochStartBlockCall>
11703            for UnderlyingRustTuple<'_> {
11704                fn from(value: updateEpochStartBlockCall) -> Self {
11705                    (value.newEpochStartBlock,)
11706                }
11707            }
11708            #[automatically_derived]
11709            #[doc(hidden)]
11710            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11711            for updateEpochStartBlockCall {
11712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11713                    Self {
11714                        newEpochStartBlock: tuple.0,
11715                    }
11716                }
11717            }
11718        }
11719        {
11720            #[doc(hidden)]
11721            type UnderlyingSolTuple<'a> = ();
11722            #[doc(hidden)]
11723            type UnderlyingRustTuple<'a> = ();
11724            #[cfg(test)]
11725            #[allow(dead_code, unreachable_patterns)]
11726            fn _type_assertion(
11727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11728            ) {
11729                match _t {
11730                    alloy_sol_types::private::AssertTypeEq::<
11731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11732                    >(_) => {}
11733                }
11734            }
11735            #[automatically_derived]
11736            #[doc(hidden)]
11737            impl ::core::convert::From<updateEpochStartBlockReturn>
11738            for UnderlyingRustTuple<'_> {
11739                fn from(value: updateEpochStartBlockReturn) -> Self {
11740                    ()
11741                }
11742            }
11743            #[automatically_derived]
11744            #[doc(hidden)]
11745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11746            for updateEpochStartBlockReturn {
11747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11748                    Self {}
11749                }
11750            }
11751        }
11752        #[automatically_derived]
11753        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
11754            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11755            type Token<'a> = <Self::Parameters<
11756                'a,
11757            > as alloy_sol_types::SolType>::Token<'a>;
11758            type Return = updateEpochStartBlockReturn;
11759            type ReturnTuple<'a> = ();
11760            type ReturnToken<'a> = <Self::ReturnTuple<
11761                'a,
11762            > as alloy_sol_types::SolType>::Token<'a>;
11763            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
11764            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
11765            #[inline]
11766            fn new<'a>(
11767                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11768            ) -> Self {
11769                tuple.into()
11770            }
11771            #[inline]
11772            fn tokenize(&self) -> Self::Token<'_> {
11773                (
11774                    <alloy::sol_types::sol_data::Uint<
11775                        64,
11776                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
11777                )
11778            }
11779            #[inline]
11780            fn abi_decode_returns(
11781                data: &[u8],
11782                validate: bool,
11783            ) -> alloy_sol_types::Result<Self::Return> {
11784                <Self::ReturnTuple<
11785                    '_,
11786                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11787                    .map(Into::into)
11788            }
11789        }
11790    };
11791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11792    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11793```solidity
11794function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11795```*/
11796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11797    #[derive(Clone)]
11798    pub struct upgradeToAndCallCall {
11799        #[allow(missing_docs)]
11800        pub newImplementation: alloy::sol_types::private::Address,
11801        #[allow(missing_docs)]
11802        pub data: alloy::sol_types::private::Bytes,
11803    }
11804    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11806    #[derive(Clone)]
11807    pub struct upgradeToAndCallReturn {}
11808    #[allow(
11809        non_camel_case_types,
11810        non_snake_case,
11811        clippy::pub_underscore_fields,
11812        clippy::style
11813    )]
11814    const _: () = {
11815        use alloy::sol_types as alloy_sol_types;
11816        {
11817            #[doc(hidden)]
11818            type UnderlyingSolTuple<'a> = (
11819                alloy::sol_types::sol_data::Address,
11820                alloy::sol_types::sol_data::Bytes,
11821            );
11822            #[doc(hidden)]
11823            type UnderlyingRustTuple<'a> = (
11824                alloy::sol_types::private::Address,
11825                alloy::sol_types::private::Bytes,
11826            );
11827            #[cfg(test)]
11828            #[allow(dead_code, unreachable_patterns)]
11829            fn _type_assertion(
11830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11831            ) {
11832                match _t {
11833                    alloy_sol_types::private::AssertTypeEq::<
11834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11835                    >(_) => {}
11836                }
11837            }
11838            #[automatically_derived]
11839            #[doc(hidden)]
11840            impl ::core::convert::From<upgradeToAndCallCall>
11841            for UnderlyingRustTuple<'_> {
11842                fn from(value: upgradeToAndCallCall) -> Self {
11843                    (value.newImplementation, value.data)
11844                }
11845            }
11846            #[automatically_derived]
11847            #[doc(hidden)]
11848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11849            for upgradeToAndCallCall {
11850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11851                    Self {
11852                        newImplementation: tuple.0,
11853                        data: tuple.1,
11854                    }
11855                }
11856            }
11857        }
11858        {
11859            #[doc(hidden)]
11860            type UnderlyingSolTuple<'a> = ();
11861            #[doc(hidden)]
11862            type UnderlyingRustTuple<'a> = ();
11863            #[cfg(test)]
11864            #[allow(dead_code, unreachable_patterns)]
11865            fn _type_assertion(
11866                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11867            ) {
11868                match _t {
11869                    alloy_sol_types::private::AssertTypeEq::<
11870                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11871                    >(_) => {}
11872                }
11873            }
11874            #[automatically_derived]
11875            #[doc(hidden)]
11876            impl ::core::convert::From<upgradeToAndCallReturn>
11877            for UnderlyingRustTuple<'_> {
11878                fn from(value: upgradeToAndCallReturn) -> Self {
11879                    ()
11880                }
11881            }
11882            #[automatically_derived]
11883            #[doc(hidden)]
11884            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11885            for upgradeToAndCallReturn {
11886                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11887                    Self {}
11888                }
11889            }
11890        }
11891        #[automatically_derived]
11892        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11893            type Parameters<'a> = (
11894                alloy::sol_types::sol_data::Address,
11895                alloy::sol_types::sol_data::Bytes,
11896            );
11897            type Token<'a> = <Self::Parameters<
11898                'a,
11899            > as alloy_sol_types::SolType>::Token<'a>;
11900            type Return = upgradeToAndCallReturn;
11901            type ReturnTuple<'a> = ();
11902            type ReturnToken<'a> = <Self::ReturnTuple<
11903                'a,
11904            > as alloy_sol_types::SolType>::Token<'a>;
11905            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11906            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11907            #[inline]
11908            fn new<'a>(
11909                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11910            ) -> Self {
11911                tuple.into()
11912            }
11913            #[inline]
11914            fn tokenize(&self) -> Self::Token<'_> {
11915                (
11916                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11917                        &self.newImplementation,
11918                    ),
11919                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11920                        &self.data,
11921                    ),
11922                )
11923            }
11924            #[inline]
11925            fn abi_decode_returns(
11926                data: &[u8],
11927                validate: bool,
11928            ) -> alloy_sol_types::Result<Self::Return> {
11929                <Self::ReturnTuple<
11930                    '_,
11931                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
11932                    .map(Into::into)
11933            }
11934        }
11935    };
11936    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11937    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
11938```solidity
11939function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
11940```*/
11941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11942    #[derive(Clone)]
11943    pub struct votingStakeTableStateCall {}
11944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11945    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
11946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11947    #[derive(Clone)]
11948    pub struct votingStakeTableStateReturn {
11949        #[allow(missing_docs)]
11950        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11951        #[allow(missing_docs)]
11952        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11953        #[allow(missing_docs)]
11954        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11955        #[allow(missing_docs)]
11956        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11957    }
11958    #[allow(
11959        non_camel_case_types,
11960        non_snake_case,
11961        clippy::pub_underscore_fields,
11962        clippy::style
11963    )]
11964    const _: () = {
11965        use alloy::sol_types as alloy_sol_types;
11966        {
11967            #[doc(hidden)]
11968            type UnderlyingSolTuple<'a> = ();
11969            #[doc(hidden)]
11970            type UnderlyingRustTuple<'a> = ();
11971            #[cfg(test)]
11972            #[allow(dead_code, unreachable_patterns)]
11973            fn _type_assertion(
11974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11975            ) {
11976                match _t {
11977                    alloy_sol_types::private::AssertTypeEq::<
11978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11979                    >(_) => {}
11980                }
11981            }
11982            #[automatically_derived]
11983            #[doc(hidden)]
11984            impl ::core::convert::From<votingStakeTableStateCall>
11985            for UnderlyingRustTuple<'_> {
11986                fn from(value: votingStakeTableStateCall) -> Self {
11987                    ()
11988                }
11989            }
11990            #[automatically_derived]
11991            #[doc(hidden)]
11992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11993            for votingStakeTableStateCall {
11994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11995                    Self {}
11996                }
11997            }
11998        }
11999        {
12000            #[doc(hidden)]
12001            type UnderlyingSolTuple<'a> = (
12002                alloy::sol_types::sol_data::Uint<256>,
12003                BN254::ScalarField,
12004                BN254::ScalarField,
12005                BN254::ScalarField,
12006            );
12007            #[doc(hidden)]
12008            type UnderlyingRustTuple<'a> = (
12009                alloy::sol_types::private::primitives::aliases::U256,
12010                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12011                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12012                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12013            );
12014            #[cfg(test)]
12015            #[allow(dead_code, unreachable_patterns)]
12016            fn _type_assertion(
12017                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12018            ) {
12019                match _t {
12020                    alloy_sol_types::private::AssertTypeEq::<
12021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12022                    >(_) => {}
12023                }
12024            }
12025            #[automatically_derived]
12026            #[doc(hidden)]
12027            impl ::core::convert::From<votingStakeTableStateReturn>
12028            for UnderlyingRustTuple<'_> {
12029                fn from(value: votingStakeTableStateReturn) -> Self {
12030                    (
12031                        value.threshold,
12032                        value.blsKeyComm,
12033                        value.schnorrKeyComm,
12034                        value.amountComm,
12035                    )
12036                }
12037            }
12038            #[automatically_derived]
12039            #[doc(hidden)]
12040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12041            for votingStakeTableStateReturn {
12042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12043                    Self {
12044                        threshold: tuple.0,
12045                        blsKeyComm: tuple.1,
12046                        schnorrKeyComm: tuple.2,
12047                        amountComm: tuple.3,
12048                    }
12049                }
12050            }
12051        }
12052        #[automatically_derived]
12053        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
12054            type Parameters<'a> = ();
12055            type Token<'a> = <Self::Parameters<
12056                'a,
12057            > as alloy_sol_types::SolType>::Token<'a>;
12058            type Return = votingStakeTableStateReturn;
12059            type ReturnTuple<'a> = (
12060                alloy::sol_types::sol_data::Uint<256>,
12061                BN254::ScalarField,
12062                BN254::ScalarField,
12063                BN254::ScalarField,
12064            );
12065            type ReturnToken<'a> = <Self::ReturnTuple<
12066                'a,
12067            > as alloy_sol_types::SolType>::Token<'a>;
12068            const SIGNATURE: &'static str = "votingStakeTableState()";
12069            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
12070            #[inline]
12071            fn new<'a>(
12072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12073            ) -> Self {
12074                tuple.into()
12075            }
12076            #[inline]
12077            fn tokenize(&self) -> Self::Token<'_> {
12078                ()
12079            }
12080            #[inline]
12081            fn abi_decode_returns(
12082                data: &[u8],
12083                validate: bool,
12084            ) -> alloy_sol_types::Result<Self::Return> {
12085                <Self::ReturnTuple<
12086                    '_,
12087                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
12088                    .map(Into::into)
12089            }
12090        }
12091    };
12092    ///Container for all the [`LightClientV2`](self) function calls.
12093    #[derive()]
12094    pub enum LightClientV2Calls {
12095        #[allow(missing_docs)]
12096        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
12097        #[allow(missing_docs)]
12098        _getVk(_getVkCall),
12099        #[allow(missing_docs)]
12100        blocksPerEpoch(blocksPerEpochCall),
12101        #[allow(missing_docs)]
12102        currentBlockNumber(currentBlockNumberCall),
12103        #[allow(missing_docs)]
12104        currentEpoch(currentEpochCall),
12105        #[allow(missing_docs)]
12106        disablePermissionedProverMode(disablePermissionedProverModeCall),
12107        #[allow(missing_docs)]
12108        epochFromBlockNumber(epochFromBlockNumberCall),
12109        #[allow(missing_docs)]
12110        epochStartBlock(epochStartBlockCall),
12111        #[allow(missing_docs)]
12112        finalizedState(finalizedStateCall),
12113        #[allow(missing_docs)]
12114        genesisStakeTableState(genesisStakeTableStateCall),
12115        #[allow(missing_docs)]
12116        genesisState(genesisStateCall),
12117        #[allow(missing_docs)]
12118        getHotShotCommitment(getHotShotCommitmentCall),
12119        #[allow(missing_docs)]
12120        getStateHistoryCount(getStateHistoryCountCall),
12121        #[allow(missing_docs)]
12122        getVersion(getVersionCall),
12123        #[allow(missing_docs)]
12124        initialize(initializeCall),
12125        #[allow(missing_docs)]
12126        initializeV2(initializeV2Call),
12127        #[allow(missing_docs)]
12128        isEpochRoot(isEpochRootCall),
12129        #[allow(missing_docs)]
12130        isGtEpochRoot(isGtEpochRootCall),
12131        #[allow(missing_docs)]
12132        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
12133        #[allow(missing_docs)]
12134        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
12135        #[allow(missing_docs)]
12136        newFinalizedState_0(newFinalizedState_0Call),
12137        #[allow(missing_docs)]
12138        newFinalizedState_1(newFinalizedState_1Call),
12139        #[allow(missing_docs)]
12140        owner(ownerCall),
12141        #[allow(missing_docs)]
12142        permissionedProver(permissionedProverCall),
12143        #[allow(missing_docs)]
12144        proxiableUUID(proxiableUUIDCall),
12145        #[allow(missing_docs)]
12146        renounceOwnership(renounceOwnershipCall),
12147        #[allow(missing_docs)]
12148        setPermissionedProver(setPermissionedProverCall),
12149        #[allow(missing_docs)]
12150        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
12151        #[allow(missing_docs)]
12152        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
12153        #[allow(missing_docs)]
12154        stateHistoryCommitments(stateHistoryCommitmentsCall),
12155        #[allow(missing_docs)]
12156        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
12157        #[allow(missing_docs)]
12158        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
12159        #[allow(missing_docs)]
12160        transferOwnership(transferOwnershipCall),
12161        #[allow(missing_docs)]
12162        updateEpochStartBlock(updateEpochStartBlockCall),
12163        #[allow(missing_docs)]
12164        upgradeToAndCall(upgradeToAndCallCall),
12165        #[allow(missing_docs)]
12166        votingStakeTableState(votingStakeTableStateCall),
12167    }
12168    #[automatically_derived]
12169    impl LightClientV2Calls {
12170        /// All the selectors of this enum.
12171        ///
12172        /// Note that the selectors might not be in the same order as the variants.
12173        /// No guarantees are made about the order of the selectors.
12174        ///
12175        /// Prefer using `SolInterface` methods instead.
12176        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12177            [1u8, 63u8, 165u8, 252u8],
12178            [2u8, 181u8, 146u8, 243u8],
12179            [6u8, 37u8, 225u8, 155u8],
12180            [13u8, 142u8, 110u8, 44u8],
12181            [18u8, 23u8, 60u8, 44u8],
12182            [22u8, 122u8, 198u8, 24u8],
12183            [32u8, 99u8, 212u8, 247u8],
12184            [37u8, 41u8, 116u8, 39u8],
12185            [47u8, 121u8, 136u8, 157u8],
12186            [48u8, 12u8, 137u8, 221u8],
12187            [49u8, 61u8, 247u8, 177u8],
12188            [55u8, 142u8, 194u8, 59u8],
12189            [62u8, 213u8, 91u8, 123u8],
12190            [66u8, 109u8, 49u8, 148u8],
12191            [67u8, 61u8, 186u8, 159u8],
12192            [79u8, 30u8, 242u8, 134u8],
12193            [82u8, 209u8, 144u8, 45u8],
12194            [105u8, 204u8, 106u8, 4u8],
12195            [113u8, 80u8, 24u8, 166u8],
12196            [117u8, 124u8, 55u8, 173u8],
12197            [118u8, 103u8, 24u8, 8u8],
12198            [130u8, 110u8, 65u8, 252u8],
12199            [133u8, 132u8, 210u8, 63u8],
12200            [141u8, 165u8, 203u8, 91u8],
12201            [144u8, 193u8, 67u8, 144u8],
12202            [150u8, 193u8, 202u8, 97u8],
12203            [155u8, 170u8, 60u8, 201u8],
12204            [159u8, 219u8, 84u8, 167u8],
12205            [173u8, 60u8, 177u8, 204u8],
12206            [179u8, 59u8, 196u8, 145u8],
12207            [194u8, 59u8, 158u8, 158u8],
12208            [210u8, 77u8, 147u8, 61u8],
12209            [224u8, 48u8, 51u8, 1u8],
12210            [240u8, 104u8, 32u8, 84u8],
12211            [242u8, 253u8, 227u8, 139u8],
12212            [249u8, 229u8, 13u8, 25u8],
12213        ];
12214    }
12215    #[automatically_derived]
12216    impl alloy_sol_types::SolInterface for LightClientV2Calls {
12217        const NAME: &'static str = "LightClientV2Calls";
12218        const MIN_DATA_LENGTH: usize = 0usize;
12219        const COUNT: usize = 36usize;
12220        #[inline]
12221        fn selector(&self) -> [u8; 4] {
12222            match self {
12223                Self::UPGRADE_INTERFACE_VERSION(_) => {
12224                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
12225                }
12226                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
12227                Self::blocksPerEpoch(_) => {
12228                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
12229                }
12230                Self::currentBlockNumber(_) => {
12231                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12232                }
12233                Self::currentEpoch(_) => {
12234                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
12235                }
12236                Self::disablePermissionedProverMode(_) => {
12237                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
12238                }
12239                Self::epochFromBlockNumber(_) => {
12240                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12241                }
12242                Self::epochStartBlock(_) => {
12243                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12244                }
12245                Self::finalizedState(_) => {
12246                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12247                }
12248                Self::genesisStakeTableState(_) => {
12249                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12250                }
12251                Self::genesisState(_) => {
12252                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
12253                }
12254                Self::getHotShotCommitment(_) => {
12255                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
12256                }
12257                Self::getStateHistoryCount(_) => {
12258                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
12259                }
12260                Self::getVersion(_) => {
12261                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
12262                }
12263                Self::initialize(_) => {
12264                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
12265                }
12266                Self::initializeV2(_) => {
12267                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
12268                }
12269                Self::isEpochRoot(_) => {
12270                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
12271                }
12272                Self::isGtEpochRoot(_) => {
12273                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
12274                }
12275                Self::isPermissionedProverEnabled(_) => {
12276                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
12277                }
12278                Self::lagOverEscapeHatchThreshold(_) => {
12279                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
12280                }
12281                Self::newFinalizedState_0(_) => {
12282                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
12283                }
12284                Self::newFinalizedState_1(_) => {
12285                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
12286                }
12287                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12288                Self::permissionedProver(_) => {
12289                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12290                }
12291                Self::proxiableUUID(_) => {
12292                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
12293                }
12294                Self::renounceOwnership(_) => {
12295                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12296                }
12297                Self::setPermissionedProver(_) => {
12298                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12299                }
12300                Self::setStateHistoryRetentionPeriod(_) => {
12301                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12302                }
12303                Self::setstateHistoryRetentionPeriod(_) => {
12304                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12305                }
12306                Self::stateHistoryCommitments(_) => {
12307                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
12308                }
12309                Self::stateHistoryFirstIndex(_) => {
12310                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
12311                }
12312                Self::stateHistoryRetentionPeriod(_) => {
12313                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12314                }
12315                Self::transferOwnership(_) => {
12316                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12317                }
12318                Self::updateEpochStartBlock(_) => {
12319                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
12320                }
12321                Self::upgradeToAndCall(_) => {
12322                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12323                }
12324                Self::votingStakeTableState(_) => {
12325                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12326                }
12327            }
12328        }
12329        #[inline]
12330        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12331            Self::SELECTORS.get(i).copied()
12332        }
12333        #[inline]
12334        fn valid_selector(selector: [u8; 4]) -> bool {
12335            Self::SELECTORS.binary_search(&selector).is_ok()
12336        }
12337        #[inline]
12338        #[allow(non_snake_case)]
12339        fn abi_decode_raw(
12340            selector: [u8; 4],
12341            data: &[u8],
12342            validate: bool,
12343        ) -> alloy_sol_types::Result<Self> {
12344            static DECODE_SHIMS: &[fn(
12345                &[u8],
12346                bool,
12347            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
12348                {
12349                    fn setPermissionedProver(
12350                        data: &[u8],
12351                        validate: bool,
12352                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12353                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12354                                data,
12355                                validate,
12356                            )
12357                            .map(LightClientV2Calls::setPermissionedProver)
12358                    }
12359                    setPermissionedProver
12360                },
12361                {
12362                    fn stateHistoryCommitments(
12363                        data: &[u8],
12364                        validate: bool,
12365                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12366                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12367                                data,
12368                                validate,
12369                            )
12370                            .map(LightClientV2Calls::stateHistoryCommitments)
12371                    }
12372                    stateHistoryCommitments
12373                },
12374                {
12375                    fn votingStakeTableState(
12376                        data: &[u8],
12377                        validate: bool,
12378                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12379                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12380                                data,
12381                                validate,
12382                            )
12383                            .map(LightClientV2Calls::votingStakeTableState)
12384                    }
12385                    votingStakeTableState
12386                },
12387                {
12388                    fn getVersion(
12389                        data: &[u8],
12390                        validate: bool,
12391                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12392                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
12393                                data,
12394                                validate,
12395                            )
12396                            .map(LightClientV2Calls::getVersion)
12397                    }
12398                    getVersion
12399                },
12400                {
12401                    fn _getVk(
12402                        data: &[u8],
12403                        validate: bool,
12404                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12405                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
12406                                data,
12407                                validate,
12408                            )
12409                            .map(LightClientV2Calls::_getVk)
12410                    }
12411                    _getVk
12412                },
12413                {
12414                    fn updateEpochStartBlock(
12415                        data: &[u8],
12416                        validate: bool,
12417                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12418                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12419                                data,
12420                                validate,
12421                            )
12422                            .map(LightClientV2Calls::updateEpochStartBlock)
12423                    }
12424                    updateEpochStartBlock
12425                },
12426                {
12427                    fn newFinalizedState_0(
12428                        data: &[u8],
12429                        validate: bool,
12430                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12431                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
12432                                data,
12433                                validate,
12434                            )
12435                            .map(LightClientV2Calls::newFinalizedState_0)
12436                    }
12437                    newFinalizedState_0
12438                },
12439                {
12440                    fn isEpochRoot(
12441                        data: &[u8],
12442                        validate: bool,
12443                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12444                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12445                                data,
12446                                validate,
12447                            )
12448                            .map(LightClientV2Calls::isEpochRoot)
12449                    }
12450                    isEpochRoot
12451                },
12452                {
12453                    fn stateHistoryFirstIndex(
12454                        data: &[u8],
12455                        validate: bool,
12456                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12457                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12458                                data,
12459                                validate,
12460                            )
12461                            .map(LightClientV2Calls::stateHistoryFirstIndex)
12462                    }
12463                    stateHistoryFirstIndex
12464                },
12465                {
12466                    fn isGtEpochRoot(
12467                        data: &[u8],
12468                        validate: bool,
12469                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12470                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
12471                                data,
12472                                validate,
12473                            )
12474                            .map(LightClientV2Calls::isGtEpochRoot)
12475                    }
12476                    isGtEpochRoot
12477                },
12478                {
12479                    fn permissionedProver(
12480                        data: &[u8],
12481                        validate: bool,
12482                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12483                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12484                                data,
12485                                validate,
12486                            )
12487                            .map(LightClientV2Calls::permissionedProver)
12488                    }
12489                    permissionedProver
12490                },
12491                {
12492                    fn currentBlockNumber(
12493                        data: &[u8],
12494                        validate: bool,
12495                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12496                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12497                                data,
12498                                validate,
12499                            )
12500                            .map(LightClientV2Calls::currentBlockNumber)
12501                    }
12502                    currentBlockNumber
12503                },
12504                {
12505                    fn epochStartBlock(
12506                        data: &[u8],
12507                        validate: bool,
12508                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12509                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
12510                                data,
12511                                validate,
12512                            )
12513                            .map(LightClientV2Calls::epochStartBlock)
12514                    }
12515                    epochStartBlock
12516                },
12517                {
12518                    fn genesisStakeTableState(
12519                        data: &[u8],
12520                        validate: bool,
12521                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12522                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12523                                data,
12524                                validate,
12525                            )
12526                            .map(LightClientV2Calls::genesisStakeTableState)
12527                    }
12528                    genesisStakeTableState
12529                },
12530                {
12531                    fn setStateHistoryRetentionPeriod(
12532                        data: &[u8],
12533                        validate: bool,
12534                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12535                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12536                                data,
12537                                validate,
12538                            )
12539                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
12540                    }
12541                    setStateHistoryRetentionPeriod
12542                },
12543                {
12544                    fn upgradeToAndCall(
12545                        data: &[u8],
12546                        validate: bool,
12547                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12548                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12549                                data,
12550                                validate,
12551                            )
12552                            .map(LightClientV2Calls::upgradeToAndCall)
12553                    }
12554                    upgradeToAndCall
12555                },
12556                {
12557                    fn proxiableUUID(
12558                        data: &[u8],
12559                        validate: bool,
12560                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12561                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12562                                data,
12563                                validate,
12564                            )
12565                            .map(LightClientV2Calls::proxiableUUID)
12566                    }
12567                    proxiableUUID
12568                },
12569                {
12570                    fn disablePermissionedProverMode(
12571                        data: &[u8],
12572                        validate: bool,
12573                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12574                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12575                                data,
12576                                validate,
12577                            )
12578                            .map(LightClientV2Calls::disablePermissionedProverMode)
12579                    }
12580                    disablePermissionedProverMode
12581                },
12582                {
12583                    fn renounceOwnership(
12584                        data: &[u8],
12585                        validate: bool,
12586                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12587                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12588                                data,
12589                                validate,
12590                            )
12591                            .map(LightClientV2Calls::renounceOwnership)
12592                    }
12593                    renounceOwnership
12594                },
12595                {
12596                    fn newFinalizedState_1(
12597                        data: &[u8],
12598                        validate: bool,
12599                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12600                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
12601                                data,
12602                                validate,
12603                            )
12604                            .map(LightClientV2Calls::newFinalizedState_1)
12605                    }
12606                    newFinalizedState_1
12607                },
12608                {
12609                    fn currentEpoch(
12610                        data: &[u8],
12611                        validate: bool,
12612                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12613                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12614                                data,
12615                                validate,
12616                            )
12617                            .map(LightClientV2Calls::currentEpoch)
12618                    }
12619                    currentEpoch
12620                },
12621                {
12622                    fn isPermissionedProverEnabled(
12623                        data: &[u8],
12624                        validate: bool,
12625                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12626                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12627                                data,
12628                                validate,
12629                            )
12630                            .map(LightClientV2Calls::isPermissionedProverEnabled)
12631                    }
12632                    isPermissionedProverEnabled
12633                },
12634                {
12635                    fn getHotShotCommitment(
12636                        data: &[u8],
12637                        validate: bool,
12638                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12639                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12640                                data,
12641                                validate,
12642                            )
12643                            .map(LightClientV2Calls::getHotShotCommitment)
12644                    }
12645                    getHotShotCommitment
12646                },
12647                {
12648                    fn owner(
12649                        data: &[u8],
12650                        validate: bool,
12651                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12652                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
12653                                data,
12654                                validate,
12655                            )
12656                            .map(LightClientV2Calls::owner)
12657                    }
12658                    owner
12659                },
12660                {
12661                    fn epochFromBlockNumber(
12662                        data: &[u8],
12663                        validate: bool,
12664                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12665                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12666                                data,
12667                                validate,
12668                            )
12669                            .map(LightClientV2Calls::epochFromBlockNumber)
12670                    }
12671                    epochFromBlockNumber
12672                },
12673                {
12674                    fn setstateHistoryRetentionPeriod(
12675                        data: &[u8],
12676                        validate: bool,
12677                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12678                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12679                                data,
12680                                validate,
12681                            )
12682                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
12683                    }
12684                    setstateHistoryRetentionPeriod
12685                },
12686                {
12687                    fn initialize(
12688                        data: &[u8],
12689                        validate: bool,
12690                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12691                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12692                                data,
12693                                validate,
12694                            )
12695                            .map(LightClientV2Calls::initialize)
12696                    }
12697                    initialize
12698                },
12699                {
12700                    fn finalizedState(
12701                        data: &[u8],
12702                        validate: bool,
12703                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12704                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12705                                data,
12706                                validate,
12707                            )
12708                            .map(LightClientV2Calls::finalizedState)
12709                    }
12710                    finalizedState
12711                },
12712                {
12713                    fn UPGRADE_INTERFACE_VERSION(
12714                        data: &[u8],
12715                        validate: bool,
12716                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12717                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12718                                data,
12719                                validate,
12720                            )
12721                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
12722                    }
12723                    UPGRADE_INTERFACE_VERSION
12724                },
12725                {
12726                    fn initializeV2(
12727                        data: &[u8],
12728                        validate: bool,
12729                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12730                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
12731                                data,
12732                                validate,
12733                            )
12734                            .map(LightClientV2Calls::initializeV2)
12735                    }
12736                    initializeV2
12737                },
12738                {
12739                    fn stateHistoryRetentionPeriod(
12740                        data: &[u8],
12741                        validate: bool,
12742                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12743                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12744                                data,
12745                                validate,
12746                            )
12747                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
12748                    }
12749                    stateHistoryRetentionPeriod
12750                },
12751                {
12752                    fn genesisState(
12753                        data: &[u8],
12754                        validate: bool,
12755                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12756                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12757                                data,
12758                                validate,
12759                            )
12760                            .map(LightClientV2Calls::genesisState)
12761                    }
12762                    genesisState
12763                },
12764                {
12765                    fn lagOverEscapeHatchThreshold(
12766                        data: &[u8],
12767                        validate: bool,
12768                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12769                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
12770                                data,
12771                                validate,
12772                            )
12773                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
12774                    }
12775                    lagOverEscapeHatchThreshold
12776                },
12777                {
12778                    fn blocksPerEpoch(
12779                        data: &[u8],
12780                        validate: bool,
12781                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12782                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
12783                                data,
12784                                validate,
12785                            )
12786                            .map(LightClientV2Calls::blocksPerEpoch)
12787                    }
12788                    blocksPerEpoch
12789                },
12790                {
12791                    fn transferOwnership(
12792                        data: &[u8],
12793                        validate: bool,
12794                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12795                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12796                                data,
12797                                validate,
12798                            )
12799                            .map(LightClientV2Calls::transferOwnership)
12800                    }
12801                    transferOwnership
12802                },
12803                {
12804                    fn getStateHistoryCount(
12805                        data: &[u8],
12806                        validate: bool,
12807                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
12808                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
12809                                data,
12810                                validate,
12811                            )
12812                            .map(LightClientV2Calls::getStateHistoryCount)
12813                    }
12814                    getStateHistoryCount
12815                },
12816            ];
12817            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12818                return Err(
12819                    alloy_sol_types::Error::unknown_selector(
12820                        <Self as alloy_sol_types::SolInterface>::NAME,
12821                        selector,
12822                    ),
12823                );
12824            };
12825            DECODE_SHIMS[idx](data, validate)
12826        }
12827        #[inline]
12828        fn abi_encoded_size(&self) -> usize {
12829            match self {
12830                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12831                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12832                        inner,
12833                    )
12834                }
12835                Self::_getVk(inner) => {
12836                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12837                }
12838                Self::blocksPerEpoch(inner) => {
12839                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
12840                        inner,
12841                    )
12842                }
12843                Self::currentBlockNumber(inner) => {
12844                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12845                        inner,
12846                    )
12847                }
12848                Self::currentEpoch(inner) => {
12849                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
12850                        inner,
12851                    )
12852                }
12853                Self::disablePermissionedProverMode(inner) => {
12854                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12855                        inner,
12856                    )
12857                }
12858                Self::epochFromBlockNumber(inner) => {
12859                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12860                        inner,
12861                    )
12862                }
12863                Self::epochStartBlock(inner) => {
12864                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
12865                        inner,
12866                    )
12867                }
12868                Self::finalizedState(inner) => {
12869                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12870                        inner,
12871                    )
12872                }
12873                Self::genesisStakeTableState(inner) => {
12874                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12875                        inner,
12876                    )
12877                }
12878                Self::genesisState(inner) => {
12879                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12880                        inner,
12881                    )
12882                }
12883                Self::getHotShotCommitment(inner) => {
12884                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12885                        inner,
12886                    )
12887                }
12888                Self::getStateHistoryCount(inner) => {
12889                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12890                        inner,
12891                    )
12892                }
12893                Self::getVersion(inner) => {
12894                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12895                }
12896                Self::initialize(inner) => {
12897                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12898                }
12899                Self::initializeV2(inner) => {
12900                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
12901                        inner,
12902                    )
12903                }
12904                Self::isEpochRoot(inner) => {
12905                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
12906                        inner,
12907                    )
12908                }
12909                Self::isGtEpochRoot(inner) => {
12910                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
12911                        inner,
12912                    )
12913                }
12914                Self::isPermissionedProverEnabled(inner) => {
12915                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12916                        inner,
12917                    )
12918                }
12919                Self::lagOverEscapeHatchThreshold(inner) => {
12920                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12921                        inner,
12922                    )
12923                }
12924                Self::newFinalizedState_0(inner) => {
12925                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
12926                        inner,
12927                    )
12928                }
12929                Self::newFinalizedState_1(inner) => {
12930                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
12931                        inner,
12932                    )
12933                }
12934                Self::owner(inner) => {
12935                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12936                }
12937                Self::permissionedProver(inner) => {
12938                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12939                        inner,
12940                    )
12941                }
12942                Self::proxiableUUID(inner) => {
12943                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12944                        inner,
12945                    )
12946                }
12947                Self::renounceOwnership(inner) => {
12948                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12949                        inner,
12950                    )
12951                }
12952                Self::setPermissionedProver(inner) => {
12953                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12954                        inner,
12955                    )
12956                }
12957                Self::setStateHistoryRetentionPeriod(inner) => {
12958                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12959                        inner,
12960                    )
12961                }
12962                Self::setstateHistoryRetentionPeriod(inner) => {
12963                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12964                        inner,
12965                    )
12966                }
12967                Self::stateHistoryCommitments(inner) => {
12968                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
12969                        inner,
12970                    )
12971                }
12972                Self::stateHistoryFirstIndex(inner) => {
12973                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12974                        inner,
12975                    )
12976                }
12977                Self::stateHistoryRetentionPeriod(inner) => {
12978                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12979                        inner,
12980                    )
12981                }
12982                Self::transferOwnership(inner) => {
12983                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12984                        inner,
12985                    )
12986                }
12987                Self::updateEpochStartBlock(inner) => {
12988                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
12989                        inner,
12990                    )
12991                }
12992                Self::upgradeToAndCall(inner) => {
12993                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
12994                        inner,
12995                    )
12996                }
12997                Self::votingStakeTableState(inner) => {
12998                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12999                        inner,
13000                    )
13001                }
13002            }
13003        }
13004        #[inline]
13005        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13006            match self {
13007                Self::UPGRADE_INTERFACE_VERSION(inner) => {
13008                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
13009                        inner,
13010                        out,
13011                    )
13012                }
13013                Self::_getVk(inner) => {
13014                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13015                }
13016                Self::blocksPerEpoch(inner) => {
13017                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13018                        inner,
13019                        out,
13020                    )
13021                }
13022                Self::currentBlockNumber(inner) => {
13023                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13024                        inner,
13025                        out,
13026                    )
13027                }
13028                Self::currentEpoch(inner) => {
13029                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
13030                        inner,
13031                        out,
13032                    )
13033                }
13034                Self::disablePermissionedProverMode(inner) => {
13035                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13036                        inner,
13037                        out,
13038                    )
13039                }
13040                Self::epochFromBlockNumber(inner) => {
13041                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
13042                        inner,
13043                        out,
13044                    )
13045                }
13046                Self::epochStartBlock(inner) => {
13047                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13048                        inner,
13049                        out,
13050                    )
13051                }
13052                Self::finalizedState(inner) => {
13053                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13054                        inner,
13055                        out,
13056                    )
13057                }
13058                Self::genesisStakeTableState(inner) => {
13059                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13060                        inner,
13061                        out,
13062                    )
13063                }
13064                Self::genesisState(inner) => {
13065                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13066                        inner,
13067                        out,
13068                    )
13069                }
13070                Self::getHotShotCommitment(inner) => {
13071                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
13072                        inner,
13073                        out,
13074                    )
13075                }
13076                Self::getStateHistoryCount(inner) => {
13077                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
13078                        inner,
13079                        out,
13080                    )
13081                }
13082                Self::getVersion(inner) => {
13083                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
13084                        inner,
13085                        out,
13086                    )
13087                }
13088                Self::initialize(inner) => {
13089                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
13090                        inner,
13091                        out,
13092                    )
13093                }
13094                Self::initializeV2(inner) => {
13095                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
13096                        inner,
13097                        out,
13098                    )
13099                }
13100                Self::isEpochRoot(inner) => {
13101                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13102                        inner,
13103                        out,
13104                    )
13105                }
13106                Self::isGtEpochRoot(inner) => {
13107                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
13108                        inner,
13109                        out,
13110                    )
13111                }
13112                Self::isPermissionedProverEnabled(inner) => {
13113                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
13114                        inner,
13115                        out,
13116                    )
13117                }
13118                Self::lagOverEscapeHatchThreshold(inner) => {
13119                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
13120                        inner,
13121                        out,
13122                    )
13123                }
13124                Self::newFinalizedState_0(inner) => {
13125                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
13126                        inner,
13127                        out,
13128                    )
13129                }
13130                Self::newFinalizedState_1(inner) => {
13131                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
13132                        inner,
13133                        out,
13134                    )
13135                }
13136                Self::owner(inner) => {
13137                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
13138                }
13139                Self::permissionedProver(inner) => {
13140                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13141                        inner,
13142                        out,
13143                    )
13144                }
13145                Self::proxiableUUID(inner) => {
13146                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
13147                        inner,
13148                        out,
13149                    )
13150                }
13151                Self::renounceOwnership(inner) => {
13152                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13153                        inner,
13154                        out,
13155                    )
13156                }
13157                Self::setPermissionedProver(inner) => {
13158                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13159                        inner,
13160                        out,
13161                    )
13162                }
13163                Self::setStateHistoryRetentionPeriod(inner) => {
13164                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13165                        inner,
13166                        out,
13167                    )
13168                }
13169                Self::setstateHistoryRetentionPeriod(inner) => {
13170                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13171                        inner,
13172                        out,
13173                    )
13174                }
13175                Self::stateHistoryCommitments(inner) => {
13176                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13177                        inner,
13178                        out,
13179                    )
13180                }
13181                Self::stateHistoryFirstIndex(inner) => {
13182                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
13183                        inner,
13184                        out,
13185                    )
13186                }
13187                Self::stateHistoryRetentionPeriod(inner) => {
13188                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13189                        inner,
13190                        out,
13191                    )
13192                }
13193                Self::transferOwnership(inner) => {
13194                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13195                        inner,
13196                        out,
13197                    )
13198                }
13199                Self::updateEpochStartBlock(inner) => {
13200                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
13201                        inner,
13202                        out,
13203                    )
13204                }
13205                Self::upgradeToAndCall(inner) => {
13206                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
13207                        inner,
13208                        out,
13209                    )
13210                }
13211                Self::votingStakeTableState(inner) => {
13212                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13213                        inner,
13214                        out,
13215                    )
13216                }
13217            }
13218        }
13219    }
13220    ///Container for all the [`LightClientV2`](self) custom errors.
13221    #[derive(Debug, PartialEq, Eq, Hash)]
13222    pub enum LightClientV2Errors {
13223        #[allow(missing_docs)]
13224        AddressEmptyCode(AddressEmptyCode),
13225        #[allow(missing_docs)]
13226        DeprecatedApi(DeprecatedApi),
13227        #[allow(missing_docs)]
13228        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13229        #[allow(missing_docs)]
13230        ERC1967NonPayable(ERC1967NonPayable),
13231        #[allow(missing_docs)]
13232        FailedInnerCall(FailedInnerCall),
13233        #[allow(missing_docs)]
13234        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
13235        #[allow(missing_docs)]
13236        InvalidAddress(InvalidAddress),
13237        #[allow(missing_docs)]
13238        InvalidArgs(InvalidArgs),
13239        #[allow(missing_docs)]
13240        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
13241        #[allow(missing_docs)]
13242        InvalidInitialization(InvalidInitialization),
13243        #[allow(missing_docs)]
13244        InvalidMaxStateHistory(InvalidMaxStateHistory),
13245        #[allow(missing_docs)]
13246        InvalidProof(InvalidProof),
13247        #[allow(missing_docs)]
13248        MissingEpochRootUpdate(MissingEpochRootUpdate),
13249        #[allow(missing_docs)]
13250        NoChangeRequired(NoChangeRequired),
13251        #[allow(missing_docs)]
13252        NotInitializing(NotInitializing),
13253        #[allow(missing_docs)]
13254        OutdatedState(OutdatedState),
13255        #[allow(missing_docs)]
13256        OwnableInvalidOwner(OwnableInvalidOwner),
13257        #[allow(missing_docs)]
13258        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13259        #[allow(missing_docs)]
13260        ProverNotPermissioned(ProverNotPermissioned),
13261        #[allow(missing_docs)]
13262        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13263        #[allow(missing_docs)]
13264        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13265        #[allow(missing_docs)]
13266        WrongStakeTableUsed(WrongStakeTableUsed),
13267    }
13268    #[automatically_derived]
13269    impl LightClientV2Errors {
13270        /// All the selectors of this enum.
13271        ///
13272        /// Note that the selectors might not be in the same order as the variants.
13273        /// No guarantees are made about the order of the selectors.
13274        ///
13275        /// Prefer using `SolInterface` methods instead.
13276        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13277            [5u8, 28u8, 70u8, 239u8],
13278            [8u8, 10u8, 232u8, 217u8],
13279            [9u8, 189u8, 227u8, 57u8],
13280            [17u8, 140u8, 218u8, 167u8],
13281            [20u8, 37u8, 234u8, 66u8],
13282            [30u8, 79u8, 189u8, 247u8],
13283            [76u8, 156u8, 140u8, 227u8],
13284            [78u8, 64u8, 92u8, 141u8],
13285            [81u8, 97u8, 128u8, 137u8],
13286            [97u8, 90u8, 146u8, 100u8],
13287            [153u8, 150u8, 179u8, 21u8],
13288            [161u8, 186u8, 7u8, 238u8],
13289            [163u8, 166u8, 71u8, 128u8],
13290            [168u8, 99u8, 174u8, 201u8],
13291            [170u8, 29u8, 73u8, 164u8],
13292            [176u8, 180u8, 56u8, 119u8],
13293            [179u8, 152u8, 151u8, 159u8],
13294            [215u8, 230u8, 188u8, 248u8],
13295            [224u8, 124u8, 141u8, 186u8],
13296            [230u8, 196u8, 36u8, 123u8],
13297            [244u8, 160u8, 238u8, 224u8],
13298            [249u8, 46u8, 232u8, 169u8],
13299        ];
13300    }
13301    #[automatically_derived]
13302    impl alloy_sol_types::SolInterface for LightClientV2Errors {
13303        const NAME: &'static str = "LightClientV2Errors";
13304        const MIN_DATA_LENGTH: usize = 0usize;
13305        const COUNT: usize = 22usize;
13306        #[inline]
13307        fn selector(&self) -> [u8; 4] {
13308            match self {
13309                Self::AddressEmptyCode(_) => {
13310                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13311                }
13312                Self::DeprecatedApi(_) => {
13313                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
13314                }
13315                Self::ERC1967InvalidImplementation(_) => {
13316                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13317                }
13318                Self::ERC1967NonPayable(_) => {
13319                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13320                }
13321                Self::FailedInnerCall(_) => {
13322                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13323                }
13324                Self::InsufficientSnapshotHistory(_) => {
13325                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13326                }
13327                Self::InvalidAddress(_) => {
13328                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13329                }
13330                Self::InvalidArgs(_) => {
13331                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13332                }
13333                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13334                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13335                }
13336                Self::InvalidInitialization(_) => {
13337                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13338                }
13339                Self::InvalidMaxStateHistory(_) => {
13340                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13341                }
13342                Self::InvalidProof(_) => {
13343                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13344                }
13345                Self::MissingEpochRootUpdate(_) => {
13346                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
13347                }
13348                Self::NoChangeRequired(_) => {
13349                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13350                }
13351                Self::NotInitializing(_) => {
13352                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13353                }
13354                Self::OutdatedState(_) => {
13355                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13356                }
13357                Self::OwnableInvalidOwner(_) => {
13358                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13359                }
13360                Self::OwnableUnauthorizedAccount(_) => {
13361                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13362                }
13363                Self::ProverNotPermissioned(_) => {
13364                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13365                }
13366                Self::UUPSUnauthorizedCallContext(_) => {
13367                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13368                }
13369                Self::UUPSUnsupportedProxiableUUID(_) => {
13370                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13371                }
13372                Self::WrongStakeTableUsed(_) => {
13373                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13374                }
13375            }
13376        }
13377        #[inline]
13378        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13379            Self::SELECTORS.get(i).copied()
13380        }
13381        #[inline]
13382        fn valid_selector(selector: [u8; 4]) -> bool {
13383            Self::SELECTORS.binary_search(&selector).is_ok()
13384        }
13385        #[inline]
13386        #[allow(non_snake_case)]
13387        fn abi_decode_raw(
13388            selector: [u8; 4],
13389            data: &[u8],
13390            validate: bool,
13391        ) -> alloy_sol_types::Result<Self> {
13392            static DECODE_SHIMS: &[fn(
13393                &[u8],
13394                bool,
13395            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
13396                {
13397                    fn OutdatedState(
13398                        data: &[u8],
13399                        validate: bool,
13400                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13401                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
13402                                data,
13403                                validate,
13404                            )
13405                            .map(LightClientV2Errors::OutdatedState)
13406                    }
13407                    OutdatedState
13408                },
13409                {
13410                    fn MissingEpochRootUpdate(
13411                        data: &[u8],
13412                        validate: bool,
13413                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13414                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
13415                                data,
13416                                validate,
13417                            )
13418                            .map(LightClientV2Errors::MissingEpochRootUpdate)
13419                    }
13420                    MissingEpochRootUpdate
13421                },
13422                {
13423                    fn InvalidProof(
13424                        data: &[u8],
13425                        validate: bool,
13426                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13427                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
13428                                data,
13429                                validate,
13430                            )
13431                            .map(LightClientV2Errors::InvalidProof)
13432                    }
13433                    InvalidProof
13434                },
13435                {
13436                    fn OwnableUnauthorizedAccount(
13437                        data: &[u8],
13438                        validate: bool,
13439                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13440                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13441                                data,
13442                                validate,
13443                            )
13444                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
13445                    }
13446                    OwnableUnauthorizedAccount
13447                },
13448                {
13449                    fn FailedInnerCall(
13450                        data: &[u8],
13451                        validate: bool,
13452                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13453                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13454                                data,
13455                                validate,
13456                            )
13457                            .map(LightClientV2Errors::FailedInnerCall)
13458                    }
13459                    FailedInnerCall
13460                },
13461                {
13462                    fn OwnableInvalidOwner(
13463                        data: &[u8],
13464                        validate: bool,
13465                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13466                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13467                                data,
13468                                validate,
13469                            )
13470                            .map(LightClientV2Errors::OwnableInvalidOwner)
13471                    }
13472                    OwnableInvalidOwner
13473                },
13474                {
13475                    fn ERC1967InvalidImplementation(
13476                        data: &[u8],
13477                        validate: bool,
13478                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13479                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13480                                data,
13481                                validate,
13482                            )
13483                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
13484                    }
13485                    ERC1967InvalidImplementation
13486                },
13487                {
13488                    fn DeprecatedApi(
13489                        data: &[u8],
13490                        validate: bool,
13491                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13492                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
13493                                data,
13494                                validate,
13495                            )
13496                            .map(LightClientV2Errors::DeprecatedApi)
13497                    }
13498                    DeprecatedApi
13499                },
13500                {
13501                    fn WrongStakeTableUsed(
13502                        data: &[u8],
13503                        validate: bool,
13504                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13505                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13506                                data,
13507                                validate,
13508                            )
13509                            .map(LightClientV2Errors::WrongStakeTableUsed)
13510                    }
13511                    WrongStakeTableUsed
13512                },
13513                {
13514                    fn InvalidHotShotBlockForCommitmentCheck(
13515                        data: &[u8],
13516                        validate: bool,
13517                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13518                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13519                                data,
13520                                validate,
13521                            )
13522                            .map(
13523                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
13524                            )
13525                    }
13526                    InvalidHotShotBlockForCommitmentCheck
13527                },
13528                {
13529                    fn AddressEmptyCode(
13530                        data: &[u8],
13531                        validate: bool,
13532                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13533                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13534                                data,
13535                                validate,
13536                            )
13537                            .map(LightClientV2Errors::AddressEmptyCode)
13538                    }
13539                    AddressEmptyCode
13540                },
13541                {
13542                    fn InvalidArgs(
13543                        data: &[u8],
13544                        validate: bool,
13545                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13546                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
13547                                data,
13548                                validate,
13549                            )
13550                            .map(LightClientV2Errors::InvalidArgs)
13551                    }
13552                    InvalidArgs
13553                },
13554                {
13555                    fn ProverNotPermissioned(
13556                        data: &[u8],
13557                        validate: bool,
13558                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13559                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13560                                data,
13561                                validate,
13562                            )
13563                            .map(LightClientV2Errors::ProverNotPermissioned)
13564                    }
13565                    ProverNotPermissioned
13566                },
13567                {
13568                    fn NoChangeRequired(
13569                        data: &[u8],
13570                        validate: bool,
13571                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13572                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13573                                data,
13574                                validate,
13575                            )
13576                            .map(LightClientV2Errors::NoChangeRequired)
13577                    }
13578                    NoChangeRequired
13579                },
13580                {
13581                    fn UUPSUnsupportedProxiableUUID(
13582                        data: &[u8],
13583                        validate: bool,
13584                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13585                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13586                                data,
13587                                validate,
13588                            )
13589                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
13590                    }
13591                    UUPSUnsupportedProxiableUUID
13592                },
13593                {
13594                    fn InsufficientSnapshotHistory(
13595                        data: &[u8],
13596                        validate: bool,
13597                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13598                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13599                                data,
13600                                validate,
13601                            )
13602                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
13603                    }
13604                    InsufficientSnapshotHistory
13605                },
13606                {
13607                    fn ERC1967NonPayable(
13608                        data: &[u8],
13609                        validate: bool,
13610                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13611                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13612                                data,
13613                                validate,
13614                            )
13615                            .map(LightClientV2Errors::ERC1967NonPayable)
13616                    }
13617                    ERC1967NonPayable
13618                },
13619                {
13620                    fn NotInitializing(
13621                        data: &[u8],
13622                        validate: bool,
13623                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13624                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13625                                data,
13626                                validate,
13627                            )
13628                            .map(LightClientV2Errors::NotInitializing)
13629                    }
13630                    NotInitializing
13631                },
13632                {
13633                    fn UUPSUnauthorizedCallContext(
13634                        data: &[u8],
13635                        validate: bool,
13636                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13637                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13638                                data,
13639                                validate,
13640                            )
13641                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
13642                    }
13643                    UUPSUnauthorizedCallContext
13644                },
13645                {
13646                    fn InvalidAddress(
13647                        data: &[u8],
13648                        validate: bool,
13649                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13650                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13651                                data,
13652                                validate,
13653                            )
13654                            .map(LightClientV2Errors::InvalidAddress)
13655                    }
13656                    InvalidAddress
13657                },
13658                {
13659                    fn InvalidMaxStateHistory(
13660                        data: &[u8],
13661                        validate: bool,
13662                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13663                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13664                                data,
13665                                validate,
13666                            )
13667                            .map(LightClientV2Errors::InvalidMaxStateHistory)
13668                    }
13669                    InvalidMaxStateHistory
13670                },
13671                {
13672                    fn InvalidInitialization(
13673                        data: &[u8],
13674                        validate: bool,
13675                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
13676                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13677                                data,
13678                                validate,
13679                            )
13680                            .map(LightClientV2Errors::InvalidInitialization)
13681                    }
13682                    InvalidInitialization
13683                },
13684            ];
13685            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13686                return Err(
13687                    alloy_sol_types::Error::unknown_selector(
13688                        <Self as alloy_sol_types::SolInterface>::NAME,
13689                        selector,
13690                    ),
13691                );
13692            };
13693            DECODE_SHIMS[idx](data, validate)
13694        }
13695        #[inline]
13696        fn abi_encoded_size(&self) -> usize {
13697            match self {
13698                Self::AddressEmptyCode(inner) => {
13699                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13700                        inner,
13701                    )
13702                }
13703                Self::DeprecatedApi(inner) => {
13704                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
13705                }
13706                Self::ERC1967InvalidImplementation(inner) => {
13707                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13708                        inner,
13709                    )
13710                }
13711                Self::ERC1967NonPayable(inner) => {
13712                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13713                        inner,
13714                    )
13715                }
13716                Self::FailedInnerCall(inner) => {
13717                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13718                        inner,
13719                    )
13720                }
13721                Self::InsufficientSnapshotHistory(inner) => {
13722                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13723                        inner,
13724                    )
13725                }
13726                Self::InvalidAddress(inner) => {
13727                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13728                        inner,
13729                    )
13730                }
13731                Self::InvalidArgs(inner) => {
13732                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13733                }
13734                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13735                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13736                        inner,
13737                    )
13738                }
13739                Self::InvalidInitialization(inner) => {
13740                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13741                        inner,
13742                    )
13743                }
13744                Self::InvalidMaxStateHistory(inner) => {
13745                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13746                        inner,
13747                    )
13748                }
13749                Self::InvalidProof(inner) => {
13750                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13751                }
13752                Self::MissingEpochRootUpdate(inner) => {
13753                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
13754                        inner,
13755                    )
13756                }
13757                Self::NoChangeRequired(inner) => {
13758                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13759                        inner,
13760                    )
13761                }
13762                Self::NotInitializing(inner) => {
13763                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13764                        inner,
13765                    )
13766                }
13767                Self::OutdatedState(inner) => {
13768                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13769                }
13770                Self::OwnableInvalidOwner(inner) => {
13771                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13772                        inner,
13773                    )
13774                }
13775                Self::OwnableUnauthorizedAccount(inner) => {
13776                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13777                        inner,
13778                    )
13779                }
13780                Self::ProverNotPermissioned(inner) => {
13781                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13782                        inner,
13783                    )
13784                }
13785                Self::UUPSUnauthorizedCallContext(inner) => {
13786                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13787                        inner,
13788                    )
13789                }
13790                Self::UUPSUnsupportedProxiableUUID(inner) => {
13791                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13792                        inner,
13793                    )
13794                }
13795                Self::WrongStakeTableUsed(inner) => {
13796                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13797                        inner,
13798                    )
13799                }
13800            }
13801        }
13802        #[inline]
13803        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13804            match self {
13805                Self::AddressEmptyCode(inner) => {
13806                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13807                        inner,
13808                        out,
13809                    )
13810                }
13811                Self::DeprecatedApi(inner) => {
13812                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
13813                        inner,
13814                        out,
13815                    )
13816                }
13817                Self::ERC1967InvalidImplementation(inner) => {
13818                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13819                        inner,
13820                        out,
13821                    )
13822                }
13823                Self::ERC1967NonPayable(inner) => {
13824                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13825                        inner,
13826                        out,
13827                    )
13828                }
13829                Self::FailedInnerCall(inner) => {
13830                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13831                        inner,
13832                        out,
13833                    )
13834                }
13835                Self::InsufficientSnapshotHistory(inner) => {
13836                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13837                        inner,
13838                        out,
13839                    )
13840                }
13841                Self::InvalidAddress(inner) => {
13842                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13843                        inner,
13844                        out,
13845                    )
13846                }
13847                Self::InvalidArgs(inner) => {
13848                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13849                        inner,
13850                        out,
13851                    )
13852                }
13853                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13854                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13855                        inner,
13856                        out,
13857                    )
13858                }
13859                Self::InvalidInitialization(inner) => {
13860                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13861                        inner,
13862                        out,
13863                    )
13864                }
13865                Self::InvalidMaxStateHistory(inner) => {
13866                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
13867                        inner,
13868                        out,
13869                    )
13870                }
13871                Self::InvalidProof(inner) => {
13872                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
13873                        inner,
13874                        out,
13875                    )
13876                }
13877                Self::MissingEpochRootUpdate(inner) => {
13878                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
13879                        inner,
13880                        out,
13881                    )
13882                }
13883                Self::NoChangeRequired(inner) => {
13884                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
13885                        inner,
13886                        out,
13887                    )
13888                }
13889                Self::NotInitializing(inner) => {
13890                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
13891                        inner,
13892                        out,
13893                    )
13894                }
13895                Self::OutdatedState(inner) => {
13896                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
13897                        inner,
13898                        out,
13899                    )
13900                }
13901                Self::OwnableInvalidOwner(inner) => {
13902                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
13903                        inner,
13904                        out,
13905                    )
13906                }
13907                Self::OwnableUnauthorizedAccount(inner) => {
13908                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
13909                        inner,
13910                        out,
13911                    )
13912                }
13913                Self::ProverNotPermissioned(inner) => {
13914                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
13915                        inner,
13916                        out,
13917                    )
13918                }
13919                Self::UUPSUnauthorizedCallContext(inner) => {
13920                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
13921                        inner,
13922                        out,
13923                    )
13924                }
13925                Self::UUPSUnsupportedProxiableUUID(inner) => {
13926                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
13927                        inner,
13928                        out,
13929                    )
13930                }
13931                Self::WrongStakeTableUsed(inner) => {
13932                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
13933                        inner,
13934                        out,
13935                    )
13936                }
13937            }
13938        }
13939    }
13940    ///Container for all the [`LightClientV2`](self) events.
13941    #[derive(Debug, PartialEq, Eq, Hash)]
13942    pub enum LightClientV2Events {
13943        #[allow(missing_docs)]
13944        Initialized(Initialized),
13945        #[allow(missing_docs)]
13946        NewEpoch(NewEpoch),
13947        #[allow(missing_docs)]
13948        NewState(NewState),
13949        #[allow(missing_docs)]
13950        OwnershipTransferred(OwnershipTransferred),
13951        #[allow(missing_docs)]
13952        PermissionedProverNotRequired(PermissionedProverNotRequired),
13953        #[allow(missing_docs)]
13954        PermissionedProverRequired(PermissionedProverRequired),
13955        #[allow(missing_docs)]
13956        Upgrade(Upgrade),
13957        #[allow(missing_docs)]
13958        Upgraded(Upgraded),
13959    }
13960    #[automatically_derived]
13961    impl LightClientV2Events {
13962        /// All the selectors of this enum.
13963        ///
13964        /// Note that the selectors might not be in the same order as the variants.
13965        /// No guarantees are made about the order of the selectors.
13966        ///
13967        /// Prefer using `SolInterface` methods instead.
13968        pub const SELECTORS: &'static [[u8; 32usize]] = &[
13969            [
13970                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
13971                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
13972                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
13973            ],
13974            [
13975                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
13976                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
13977                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
13978            ],
13979            [
13980                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
13981                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
13982                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
13983            ],
13984            [
13985                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
13986                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
13987                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
13988            ],
13989            [
13990                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
13991                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
13992                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
13993            ],
13994            [
13995                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
13996                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
13997                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
13998            ],
13999            [
14000                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
14001                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
14002                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14003            ],
14004            [
14005                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
14006                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
14007                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14008            ],
14009        ];
14010    }
14011    #[automatically_derived]
14012    impl alloy_sol_types::SolEventInterface for LightClientV2Events {
14013        const NAME: &'static str = "LightClientV2Events";
14014        const COUNT: usize = 8usize;
14015        fn decode_raw_log(
14016            topics: &[alloy_sol_types::Word],
14017            data: &[u8],
14018            validate: bool,
14019        ) -> alloy_sol_types::Result<Self> {
14020            match topics.first().copied() {
14021                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14022                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14023                            topics,
14024                            data,
14025                            validate,
14026                        )
14027                        .map(Self::Initialized)
14028                }
14029                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14030                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(
14031                            topics,
14032                            data,
14033                            validate,
14034                        )
14035                        .map(Self::NewEpoch)
14036                }
14037                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14038                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
14039                            topics,
14040                            data,
14041                            validate,
14042                        )
14043                        .map(Self::NewState)
14044                }
14045                Some(
14046                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14047                ) => {
14048                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14049                            topics,
14050                            data,
14051                            validate,
14052                        )
14053                        .map(Self::OwnershipTransferred)
14054                }
14055                Some(
14056                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14057                ) => {
14058                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14059                            topics,
14060                            data,
14061                            validate,
14062                        )
14063                        .map(Self::PermissionedProverNotRequired)
14064                }
14065                Some(
14066                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14067                ) => {
14068                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14069                            topics,
14070                            data,
14071                            validate,
14072                        )
14073                        .map(Self::PermissionedProverRequired)
14074                }
14075                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14076                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
14077                            topics,
14078                            data,
14079                            validate,
14080                        )
14081                        .map(Self::Upgrade)
14082                }
14083                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14084                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
14085                            topics,
14086                            data,
14087                            validate,
14088                        )
14089                        .map(Self::Upgraded)
14090                }
14091                _ => {
14092                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14093                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14094                        log: alloy_sol_types::private::Box::new(
14095                            alloy_sol_types::private::LogData::new_unchecked(
14096                                topics.to_vec(),
14097                                data.to_vec().into(),
14098                            ),
14099                        ),
14100                    })
14101                }
14102            }
14103        }
14104    }
14105    #[automatically_derived]
14106    impl alloy_sol_types::private::IntoLogData for LightClientV2Events {
14107        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14108            match self {
14109                Self::Initialized(inner) => {
14110                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14111                }
14112                Self::NewEpoch(inner) => {
14113                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14114                }
14115                Self::NewState(inner) => {
14116                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14117                }
14118                Self::OwnershipTransferred(inner) => {
14119                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14120                }
14121                Self::PermissionedProverNotRequired(inner) => {
14122                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14123                }
14124                Self::PermissionedProverRequired(inner) => {
14125                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14126                }
14127                Self::Upgrade(inner) => {
14128                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14129                }
14130                Self::Upgraded(inner) => {
14131                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14132                }
14133            }
14134        }
14135        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14136            match self {
14137                Self::Initialized(inner) => {
14138                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14139                }
14140                Self::NewEpoch(inner) => {
14141                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14142                }
14143                Self::NewState(inner) => {
14144                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14145                }
14146                Self::OwnershipTransferred(inner) => {
14147                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14148                }
14149                Self::PermissionedProverNotRequired(inner) => {
14150                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14151                }
14152                Self::PermissionedProverRequired(inner) => {
14153                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14154                }
14155                Self::Upgrade(inner) => {
14156                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14157                }
14158                Self::Upgraded(inner) => {
14159                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14160                }
14161            }
14162        }
14163    }
14164    use alloy::contract as alloy_contract;
14165    /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
14166
14167See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
14168    #[inline]
14169    pub const fn new<
14170        T: alloy_contract::private::Transport + ::core::clone::Clone,
14171        P: alloy_contract::private::Provider<T, N>,
14172        N: alloy_contract::private::Network,
14173    >(
14174        address: alloy_sol_types::private::Address,
14175        provider: P,
14176    ) -> LightClientV2Instance<T, P, N> {
14177        LightClientV2Instance::<T, P, N>::new(address, provider)
14178    }
14179    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14180
14181Returns a new instance of the contract, if the deployment was successful.
14182
14183For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14184    #[inline]
14185    pub fn deploy<
14186        T: alloy_contract::private::Transport + ::core::clone::Clone,
14187        P: alloy_contract::private::Provider<T, N>,
14188        N: alloy_contract::private::Network,
14189    >(
14190        provider: P,
14191    ) -> impl ::core::future::Future<
14192        Output = alloy_contract::Result<LightClientV2Instance<T, P, N>>,
14193    > {
14194        LightClientV2Instance::<T, P, N>::deploy(provider)
14195    }
14196    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14197and constructor arguments, if any.
14198
14199This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14200the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14201    #[inline]
14202    pub fn deploy_builder<
14203        T: alloy_contract::private::Transport + ::core::clone::Clone,
14204        P: alloy_contract::private::Provider<T, N>,
14205        N: alloy_contract::private::Network,
14206    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14207        LightClientV2Instance::<T, P, N>::deploy_builder(provider)
14208    }
14209    /**A [`LightClientV2`](self) instance.
14210
14211Contains type-safe methods for interacting with an on-chain instance of the
14212[`LightClientV2`](self) contract located at a given `address`, using a given
14213provider `P`.
14214
14215If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14216documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14217be used to deploy a new instance of the contract.
14218
14219See the [module-level documentation](self) for all the available methods.*/
14220    #[derive(Clone)]
14221    pub struct LightClientV2Instance<T, P, N = alloy_contract::private::Ethereum> {
14222        address: alloy_sol_types::private::Address,
14223        provider: P,
14224        _network_transport: ::core::marker::PhantomData<(N, T)>,
14225    }
14226    #[automatically_derived]
14227    impl<T, P, N> ::core::fmt::Debug for LightClientV2Instance<T, P, N> {
14228        #[inline]
14229        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14230            f.debug_tuple("LightClientV2Instance").field(&self.address).finish()
14231        }
14232    }
14233    /// Instantiation and getters/setters.
14234    #[automatically_derived]
14235    impl<
14236        T: alloy_contract::private::Transport + ::core::clone::Clone,
14237        P: alloy_contract::private::Provider<T, N>,
14238        N: alloy_contract::private::Network,
14239    > LightClientV2Instance<T, P, N> {
14240        /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
14241
14242See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
14243        #[inline]
14244        pub const fn new(
14245            address: alloy_sol_types::private::Address,
14246            provider: P,
14247        ) -> Self {
14248            Self {
14249                address,
14250                provider,
14251                _network_transport: ::core::marker::PhantomData,
14252            }
14253        }
14254        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14255
14256Returns a new instance of the contract, if the deployment was successful.
14257
14258For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14259        #[inline]
14260        pub async fn deploy(
14261            provider: P,
14262        ) -> alloy_contract::Result<LightClientV2Instance<T, P, N>> {
14263            let call_builder = Self::deploy_builder(provider);
14264            let contract_address = call_builder.deploy().await?;
14265            Ok(Self::new(contract_address, call_builder.provider))
14266        }
14267        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14268and constructor arguments, if any.
14269
14270This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14271the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14272        #[inline]
14273        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
14274            alloy_contract::RawCallBuilder::new_raw_deploy(
14275                provider,
14276                ::core::clone::Clone::clone(&BYTECODE),
14277            )
14278        }
14279        /// Returns a reference to the address.
14280        #[inline]
14281        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14282            &self.address
14283        }
14284        /// Sets the address.
14285        #[inline]
14286        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14287            self.address = address;
14288        }
14289        /// Sets the address and returns `self`.
14290        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14291            self.set_address(address);
14292            self
14293        }
14294        /// Returns a reference to the provider.
14295        #[inline]
14296        pub const fn provider(&self) -> &P {
14297            &self.provider
14298        }
14299    }
14300    impl<T, P: ::core::clone::Clone, N> LightClientV2Instance<T, &P, N> {
14301        /// Clones the provider and returns a new instance with the cloned provider.
14302        #[inline]
14303        pub fn with_cloned_provider(self) -> LightClientV2Instance<T, P, N> {
14304            LightClientV2Instance {
14305                address: self.address,
14306                provider: ::core::clone::Clone::clone(&self.provider),
14307                _network_transport: ::core::marker::PhantomData,
14308            }
14309        }
14310    }
14311    /// Function calls.
14312    #[automatically_derived]
14313    impl<
14314        T: alloy_contract::private::Transport + ::core::clone::Clone,
14315        P: alloy_contract::private::Provider<T, N>,
14316        N: alloy_contract::private::Network,
14317    > LightClientV2Instance<T, P, N> {
14318        /// Creates a new call builder using this contract instance's provider and address.
14319        ///
14320        /// Note that the call can be any function call, not just those defined in this
14321        /// contract. Prefer using the other methods for building type-safe contract calls.
14322        pub fn call_builder<C: alloy_sol_types::SolCall>(
14323            &self,
14324            call: &C,
14325        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
14326            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14327        }
14328        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14329        pub fn UPGRADE_INTERFACE_VERSION(
14330            &self,
14331        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
14332            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
14333        }
14334        ///Creates a new call builder for the [`_getVk`] function.
14335        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
14336            self.call_builder(&_getVkCall {})
14337        }
14338        ///Creates a new call builder for the [`blocksPerEpoch`] function.
14339        pub fn blocksPerEpoch(
14340            &self,
14341        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
14342            self.call_builder(&blocksPerEpochCall {})
14343        }
14344        ///Creates a new call builder for the [`currentBlockNumber`] function.
14345        pub fn currentBlockNumber(
14346            &self,
14347        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
14348            self.call_builder(&currentBlockNumberCall {})
14349        }
14350        ///Creates a new call builder for the [`currentEpoch`] function.
14351        pub fn currentEpoch(
14352            &self,
14353        ) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
14354            self.call_builder(&currentEpochCall {})
14355        }
14356        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14357        pub fn disablePermissionedProverMode(
14358            &self,
14359        ) -> alloy_contract::SolCallBuilder<
14360            T,
14361            &P,
14362            disablePermissionedProverModeCall,
14363            N,
14364        > {
14365            self.call_builder(
14366                &disablePermissionedProverModeCall {
14367                },
14368            )
14369        }
14370        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
14371        pub fn epochFromBlockNumber(
14372            &self,
14373            _blockNum: u64,
14374            _blocksPerEpoch: u64,
14375        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
14376            self.call_builder(
14377                &epochFromBlockNumberCall {
14378                    _blockNum,
14379                    _blocksPerEpoch,
14380                },
14381            )
14382        }
14383        ///Creates a new call builder for the [`epochStartBlock`] function.
14384        pub fn epochStartBlock(
14385            &self,
14386        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
14387            self.call_builder(&epochStartBlockCall {})
14388        }
14389        ///Creates a new call builder for the [`finalizedState`] function.
14390        pub fn finalizedState(
14391            &self,
14392        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
14393            self.call_builder(&finalizedStateCall {})
14394        }
14395        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14396        pub fn genesisStakeTableState(
14397            &self,
14398        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
14399            self.call_builder(&genesisStakeTableStateCall {})
14400        }
14401        ///Creates a new call builder for the [`genesisState`] function.
14402        pub fn genesisState(
14403            &self,
14404        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
14405            self.call_builder(&genesisStateCall {})
14406        }
14407        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14408        pub fn getHotShotCommitment(
14409            &self,
14410            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14411        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
14412            self.call_builder(
14413                &getHotShotCommitmentCall {
14414                    hotShotBlockHeight,
14415                },
14416            )
14417        }
14418        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14419        pub fn getStateHistoryCount(
14420            &self,
14421        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
14422            self.call_builder(&getStateHistoryCountCall {})
14423        }
14424        ///Creates a new call builder for the [`getVersion`] function.
14425        pub fn getVersion(
14426            &self,
14427        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
14428            self.call_builder(&getVersionCall {})
14429        }
14430        ///Creates a new call builder for the [`initialize`] function.
14431        pub fn initialize(
14432            &self,
14433            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14434            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14435            _stateHistoryRetentionPeriod: u32,
14436            owner: alloy::sol_types::private::Address,
14437        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
14438            self.call_builder(
14439                &initializeCall {
14440                    _genesis,
14441                    _genesisStakeTableState,
14442                    _stateHistoryRetentionPeriod,
14443                    owner,
14444                },
14445            )
14446        }
14447        ///Creates a new call builder for the [`initializeV2`] function.
14448        pub fn initializeV2(
14449            &self,
14450            _blocksPerEpoch: u64,
14451            _epochStartBlock: u64,
14452        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
14453            self.call_builder(
14454                &initializeV2Call {
14455                    _blocksPerEpoch,
14456                    _epochStartBlock,
14457                },
14458            )
14459        }
14460        ///Creates a new call builder for the [`isEpochRoot`] function.
14461        pub fn isEpochRoot(
14462            &self,
14463            blockHeight: u64,
14464        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
14465            self.call_builder(&isEpochRootCall { blockHeight })
14466        }
14467        ///Creates a new call builder for the [`isGtEpochRoot`] function.
14468        pub fn isGtEpochRoot(
14469            &self,
14470            blockHeight: u64,
14471        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
14472            self.call_builder(&isGtEpochRootCall { blockHeight })
14473        }
14474        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14475        pub fn isPermissionedProverEnabled(
14476            &self,
14477        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
14478            self.call_builder(&isPermissionedProverEnabledCall {})
14479        }
14480        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14481        pub fn lagOverEscapeHatchThreshold(
14482            &self,
14483            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14484            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
14485        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
14486            self.call_builder(
14487                &lagOverEscapeHatchThresholdCall {
14488                    blockNumber,
14489                    blockThreshold,
14490                },
14491            )
14492        }
14493        ///Creates a new call builder for the [`newFinalizedState_0`] function.
14494        pub fn newFinalizedState_0(
14495            &self,
14496            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14497            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14498        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
14499            self.call_builder(&newFinalizedState_0Call { _0, _1 })
14500        }
14501        ///Creates a new call builder for the [`newFinalizedState_1`] function.
14502        pub fn newFinalizedState_1(
14503            &self,
14504            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14505            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14506            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14507        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
14508            self.call_builder(
14509                &newFinalizedState_1Call {
14510                    newState,
14511                    nextStakeTable,
14512                    proof,
14513                },
14514            )
14515        }
14516        ///Creates a new call builder for the [`owner`] function.
14517        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
14518            self.call_builder(&ownerCall {})
14519        }
14520        ///Creates a new call builder for the [`permissionedProver`] function.
14521        pub fn permissionedProver(
14522            &self,
14523        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
14524            self.call_builder(&permissionedProverCall {})
14525        }
14526        ///Creates a new call builder for the [`proxiableUUID`] function.
14527        pub fn proxiableUUID(
14528            &self,
14529        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
14530            self.call_builder(&proxiableUUIDCall {})
14531        }
14532        ///Creates a new call builder for the [`renounceOwnership`] function.
14533        pub fn renounceOwnership(
14534            &self,
14535        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
14536            self.call_builder(&renounceOwnershipCall {})
14537        }
14538        ///Creates a new call builder for the [`setPermissionedProver`] function.
14539        pub fn setPermissionedProver(
14540            &self,
14541            prover: alloy::sol_types::private::Address,
14542        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
14543            self.call_builder(
14544                &setPermissionedProverCall {
14545                    prover,
14546                },
14547            )
14548        }
14549        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
14550        pub fn setStateHistoryRetentionPeriod(
14551            &self,
14552            historySeconds: u32,
14553        ) -> alloy_contract::SolCallBuilder<
14554            T,
14555            &P,
14556            setStateHistoryRetentionPeriodCall,
14557            N,
14558        > {
14559            self.call_builder(
14560                &setStateHistoryRetentionPeriodCall {
14561                    historySeconds,
14562                },
14563            )
14564        }
14565        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14566        pub fn setstateHistoryRetentionPeriod(
14567            &self,
14568            historySeconds: u32,
14569        ) -> alloy_contract::SolCallBuilder<
14570            T,
14571            &P,
14572            setstateHistoryRetentionPeriodCall,
14573            N,
14574        > {
14575            self.call_builder(
14576                &setstateHistoryRetentionPeriodCall {
14577                    historySeconds,
14578                },
14579            )
14580        }
14581        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14582        pub fn stateHistoryCommitments(
14583            &self,
14584            _0: alloy::sol_types::private::primitives::aliases::U256,
14585        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
14586            self.call_builder(&stateHistoryCommitmentsCall { _0 })
14587        }
14588        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14589        pub fn stateHistoryFirstIndex(
14590            &self,
14591        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
14592            self.call_builder(&stateHistoryFirstIndexCall {})
14593        }
14594        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14595        pub fn stateHistoryRetentionPeriod(
14596            &self,
14597        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
14598            self.call_builder(&stateHistoryRetentionPeriodCall {})
14599        }
14600        ///Creates a new call builder for the [`transferOwnership`] function.
14601        pub fn transferOwnership(
14602            &self,
14603            newOwner: alloy::sol_types::private::Address,
14604        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
14605            self.call_builder(&transferOwnershipCall { newOwner })
14606        }
14607        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
14608        pub fn updateEpochStartBlock(
14609            &self,
14610            newEpochStartBlock: u64,
14611        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
14612            self.call_builder(
14613                &updateEpochStartBlockCall {
14614                    newEpochStartBlock,
14615                },
14616            )
14617        }
14618        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14619        pub fn upgradeToAndCall(
14620            &self,
14621            newImplementation: alloy::sol_types::private::Address,
14622            data: alloy::sol_types::private::Bytes,
14623        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
14624            self.call_builder(
14625                &upgradeToAndCallCall {
14626                    newImplementation,
14627                    data,
14628                },
14629            )
14630        }
14631        ///Creates a new call builder for the [`votingStakeTableState`] function.
14632        pub fn votingStakeTableState(
14633            &self,
14634        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
14635            self.call_builder(&votingStakeTableStateCall {})
14636        }
14637    }
14638    /// Event filters.
14639    #[automatically_derived]
14640    impl<
14641        T: alloy_contract::private::Transport + ::core::clone::Clone,
14642        P: alloy_contract::private::Provider<T, N>,
14643        N: alloy_contract::private::Network,
14644    > LightClientV2Instance<T, P, N> {
14645        /// Creates a new event filter using this contract instance's provider and address.
14646        ///
14647        /// Note that the type can be any event, not just those defined in this contract.
14648        /// Prefer using the other methods for building type-safe event filters.
14649        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14650            &self,
14651        ) -> alloy_contract::Event<T, &P, E, N> {
14652            alloy_contract::Event::new_sol(&self.provider, &self.address)
14653        }
14654        ///Creates a new event filter for the [`Initialized`] event.
14655        pub fn Initialized_filter(
14656            &self,
14657        ) -> alloy_contract::Event<T, &P, Initialized, N> {
14658            self.event_filter::<Initialized>()
14659        }
14660        ///Creates a new event filter for the [`NewEpoch`] event.
14661        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
14662            self.event_filter::<NewEpoch>()
14663        }
14664        ///Creates a new event filter for the [`NewState`] event.
14665        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
14666            self.event_filter::<NewState>()
14667        }
14668        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14669        pub fn OwnershipTransferred_filter(
14670            &self,
14671        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
14672            self.event_filter::<OwnershipTransferred>()
14673        }
14674        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14675        pub fn PermissionedProverNotRequired_filter(
14676            &self,
14677        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
14678            self.event_filter::<PermissionedProverNotRequired>()
14679        }
14680        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14681        pub fn PermissionedProverRequired_filter(
14682            &self,
14683        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
14684            self.event_filter::<PermissionedProverRequired>()
14685        }
14686        ///Creates a new event filter for the [`Upgrade`] event.
14687        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
14688            self.event_filter::<Upgrade>()
14689        }
14690        ///Creates a new event filter for the [`Upgraded`] event.
14691        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
14692            self.event_filter::<Upgraded>()
14693        }
14694    }
14695}