hotshot_contract_adapter/bindings/
lightclientmock.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 alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    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; }
559    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; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    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; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "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)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    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; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "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)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885///Module containing a contract's types and functions.
1886/**
1887
1888```solidity
1889library LightClient {
1890    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1891    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
1892    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
1893}
1894```*/
1895#[allow(
1896    non_camel_case_types,
1897    non_snake_case,
1898    clippy::pub_underscore_fields,
1899    clippy::style,
1900    clippy::empty_structs_with_brackets
1901)]
1902pub mod LightClient {
1903    use alloy::sol_types as alloy_sol_types;
1904
1905    use super::*;
1906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1907    /**```solidity
1908    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1909    ```*/
1910    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1911    #[derive(Clone)]
1912    pub struct LightClientState {
1913        #[allow(missing_docs)]
1914        pub viewNum: u64,
1915        #[allow(missing_docs)]
1916        pub blockHeight: u64,
1917        #[allow(missing_docs)]
1918        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1919    }
1920    #[allow(
1921        non_camel_case_types,
1922        non_snake_case,
1923        clippy::pub_underscore_fields,
1924        clippy::style
1925    )]
1926    const _: () = {
1927        use alloy::sol_types as alloy_sol_types;
1928        #[doc(hidden)]
1929        type UnderlyingSolTuple<'a> = (
1930            alloy::sol_types::sol_data::Uint<64>,
1931            alloy::sol_types::sol_data::Uint<64>,
1932            BN254::ScalarField,
1933        );
1934        #[doc(hidden)]
1935        type UnderlyingRustTuple<'a> = (
1936            u64,
1937            u64,
1938            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1939        );
1940        #[cfg(test)]
1941        #[allow(dead_code, unreachable_patterns)]
1942        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1943            match _t {
1944                alloy_sol_types::private::AssertTypeEq::<
1945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1946                >(_) => {},
1947            }
1948        }
1949        #[automatically_derived]
1950        #[doc(hidden)]
1951        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
1952            fn from(value: LightClientState) -> Self {
1953                (value.viewNum, value.blockHeight, value.blockCommRoot)
1954            }
1955        }
1956        #[automatically_derived]
1957        #[doc(hidden)]
1958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
1959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1960                Self {
1961                    viewNum: tuple.0,
1962                    blockHeight: tuple.1,
1963                    blockCommRoot: tuple.2,
1964                }
1965            }
1966        }
1967        #[automatically_derived]
1968        impl alloy_sol_types::SolValue for LightClientState {
1969            type SolType = Self;
1970        }
1971        #[automatically_derived]
1972        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
1973            #[inline]
1974            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1975                (
1976                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1977                        &self.viewNum,
1978                    ),
1979                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1980                        &self.blockHeight,
1981                    ),
1982                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blockCommRoot),
1983                )
1984            }
1985            #[inline]
1986            fn stv_abi_encoded_size(&self) -> usize {
1987                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1988                    return size;
1989                }
1990                let tuple =
1991                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1992                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1993            }
1994            #[inline]
1995            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1996                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1997            }
1998            #[inline]
1999            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2000                let tuple =
2001                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2002                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2003                    &tuple, out,
2004                )
2005            }
2006            #[inline]
2007            fn stv_abi_packed_encoded_size(&self) -> usize {
2008                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2009                    return size;
2010                }
2011                let tuple =
2012                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2013                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2014                    &tuple,
2015                )
2016            }
2017        }
2018        #[automatically_derived]
2019        impl alloy_sol_types::SolType for LightClientState {
2020            type RustType = Self;
2021            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2022            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2023            const ENCODED_SIZE: Option<usize> =
2024                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2025            const PACKED_ENCODED_SIZE: Option<usize> =
2026                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2027            #[inline]
2028            fn valid_token(token: &Self::Token<'_>) -> bool {
2029                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2030            }
2031            #[inline]
2032            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2033                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2034                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2035            }
2036        }
2037        #[automatically_derived]
2038        impl alloy_sol_types::SolStruct for LightClientState {
2039            const NAME: &'static str = "LightClientState";
2040            #[inline]
2041            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2042                alloy_sol_types::private::Cow::Borrowed(
2043                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2044                )
2045            }
2046            #[inline]
2047            fn eip712_components(
2048            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2049            {
2050                alloy_sol_types::private::Vec::new()
2051            }
2052            #[inline]
2053            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2054                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2055            }
2056            #[inline]
2057            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2058                [
2059                    <alloy::sol_types::sol_data::Uint<
2060                        64,
2061                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2062                        .0,
2063                    <alloy::sol_types::sol_data::Uint<
2064                        64,
2065                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2066                        .0,
2067                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2068                            &self.blockCommRoot,
2069                        )
2070                        .0,
2071                ]
2072                    .concat()
2073            }
2074        }
2075        #[automatically_derived]
2076        impl alloy_sol_types::EventTopic for LightClientState {
2077            #[inline]
2078            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2079                0usize
2080                    + <alloy::sol_types::sol_data::Uint<
2081                        64,
2082                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2083                        &rust.viewNum,
2084                    )
2085                    + <alloy::sol_types::sol_data::Uint<
2086                        64,
2087                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2088                        &rust.blockHeight,
2089                    )
2090                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2091                        &rust.blockCommRoot,
2092                    )
2093            }
2094            #[inline]
2095            fn encode_topic_preimage(
2096                rust: &Self::RustType,
2097                out: &mut alloy_sol_types::private::Vec<u8>,
2098            ) {
2099                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2100                <alloy::sol_types::sol_data::Uint<
2101                    64,
2102                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2103                    &rust.viewNum,
2104                    out,
2105                );
2106                <alloy::sol_types::sol_data::Uint<
2107                    64,
2108                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    &rust.blockHeight,
2110                    out,
2111                );
2112                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2113                    &rust.blockCommRoot,
2114                    out,
2115                );
2116            }
2117            #[inline]
2118            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2119                let mut out = alloy_sol_types::private::Vec::new();
2120                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2121                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2122            }
2123        }
2124    };
2125    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2126    /**```solidity
2127    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2128    ```*/
2129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2130    #[derive(Clone)]
2131    pub struct StakeTableState {
2132        #[allow(missing_docs)]
2133        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2134        #[allow(missing_docs)]
2135        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2136        #[allow(missing_docs)]
2137        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2138        #[allow(missing_docs)]
2139        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2140    }
2141    #[allow(
2142        non_camel_case_types,
2143        non_snake_case,
2144        clippy::pub_underscore_fields,
2145        clippy::style
2146    )]
2147    const _: () = {
2148        use alloy::sol_types as alloy_sol_types;
2149        #[doc(hidden)]
2150        type UnderlyingSolTuple<'a> = (
2151            alloy::sol_types::sol_data::Uint<256>,
2152            BN254::ScalarField,
2153            BN254::ScalarField,
2154            BN254::ScalarField,
2155        );
2156        #[doc(hidden)]
2157        type UnderlyingRustTuple<'a> = (
2158            alloy::sol_types::private::primitives::aliases::U256,
2159            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2160            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2161            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2162        );
2163        #[cfg(test)]
2164        #[allow(dead_code, unreachable_patterns)]
2165        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2166            match _t {
2167                alloy_sol_types::private::AssertTypeEq::<
2168                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2169                >(_) => {},
2170            }
2171        }
2172        #[automatically_derived]
2173        #[doc(hidden)]
2174        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2175            fn from(value: StakeTableState) -> Self {
2176                (
2177                    value.threshold,
2178                    value.blsKeyComm,
2179                    value.schnorrKeyComm,
2180                    value.amountComm,
2181                )
2182            }
2183        }
2184        #[automatically_derived]
2185        #[doc(hidden)]
2186        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2187            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2188                Self {
2189                    threshold: tuple.0,
2190                    blsKeyComm: tuple.1,
2191                    schnorrKeyComm: tuple.2,
2192                    amountComm: tuple.3,
2193                }
2194            }
2195        }
2196        #[automatically_derived]
2197        impl alloy_sol_types::SolValue for StakeTableState {
2198            type SolType = Self;
2199        }
2200        #[automatically_derived]
2201        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2202            #[inline]
2203            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2204                (
2205                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2206                        &self.threshold,
2207                    ),
2208                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blsKeyComm),
2209                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2210                        &self.schnorrKeyComm,
2211                    ),
2212                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.amountComm),
2213                )
2214            }
2215            #[inline]
2216            fn stv_abi_encoded_size(&self) -> usize {
2217                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2218                    return size;
2219                }
2220                let tuple =
2221                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2222                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2223            }
2224            #[inline]
2225            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2226                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2227            }
2228            #[inline]
2229            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2230                let tuple =
2231                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2232                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2233                    &tuple, out,
2234                )
2235            }
2236            #[inline]
2237            fn stv_abi_packed_encoded_size(&self) -> usize {
2238                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2239                    return size;
2240                }
2241                let tuple =
2242                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2243                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2244                    &tuple,
2245                )
2246            }
2247        }
2248        #[automatically_derived]
2249        impl alloy_sol_types::SolType for StakeTableState {
2250            type RustType = Self;
2251            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2252            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2253            const ENCODED_SIZE: Option<usize> =
2254                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2255            const PACKED_ENCODED_SIZE: Option<usize> =
2256                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2257            #[inline]
2258            fn valid_token(token: &Self::Token<'_>) -> bool {
2259                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2260            }
2261            #[inline]
2262            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2263                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2264                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2265            }
2266        }
2267        #[automatically_derived]
2268        impl alloy_sol_types::SolStruct for StakeTableState {
2269            const NAME: &'static str = "StakeTableState";
2270            #[inline]
2271            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2272                alloy_sol_types::private::Cow::Borrowed(
2273                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2274                )
2275            }
2276            #[inline]
2277            fn eip712_components(
2278            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2279            {
2280                alloy_sol_types::private::Vec::new()
2281            }
2282            #[inline]
2283            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2284                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2285            }
2286            #[inline]
2287            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2288                [
2289                    <alloy::sol_types::sol_data::Uint<
2290                        256,
2291                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2292                        .0,
2293                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2294                            &self.blsKeyComm,
2295                        )
2296                        .0,
2297                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2298                            &self.schnorrKeyComm,
2299                        )
2300                        .0,
2301                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2302                            &self.amountComm,
2303                        )
2304                        .0,
2305                ]
2306                    .concat()
2307            }
2308        }
2309        #[automatically_derived]
2310        impl alloy_sol_types::EventTopic for StakeTableState {
2311            #[inline]
2312            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2313                0usize
2314                    + <alloy::sol_types::sol_data::Uint<
2315                        256,
2316                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2317                        &rust.threshold,
2318                    )
2319                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2320                        &rust.blsKeyComm,
2321                    )
2322                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2323                        &rust.schnorrKeyComm,
2324                    )
2325                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2326                        &rust.amountComm,
2327                    )
2328            }
2329            #[inline]
2330            fn encode_topic_preimage(
2331                rust: &Self::RustType,
2332                out: &mut alloy_sol_types::private::Vec<u8>,
2333            ) {
2334                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2335                <alloy::sol_types::sol_data::Uint<
2336                    256,
2337                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2338                    &rust.threshold,
2339                    out,
2340                );
2341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2342                    &rust.blsKeyComm,
2343                    out,
2344                );
2345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2346                    &rust.schnorrKeyComm,
2347                    out,
2348                );
2349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2350                    &rust.amountComm,
2351                    out,
2352                );
2353            }
2354            #[inline]
2355            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2356                let mut out = alloy_sol_types::private::Vec::new();
2357                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2358                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2359            }
2360        }
2361    };
2362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2363    /**```solidity
2364    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2365    ```*/
2366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2367    #[derive(Clone)]
2368    pub struct StateHistoryCommitment {
2369        #[allow(missing_docs)]
2370        pub l1BlockHeight: u64,
2371        #[allow(missing_docs)]
2372        pub l1BlockTimestamp: u64,
2373        #[allow(missing_docs)]
2374        pub hotShotBlockHeight: u64,
2375        #[allow(missing_docs)]
2376        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2377    }
2378    #[allow(
2379        non_camel_case_types,
2380        non_snake_case,
2381        clippy::pub_underscore_fields,
2382        clippy::style
2383    )]
2384    const _: () = {
2385        use alloy::sol_types as alloy_sol_types;
2386        #[doc(hidden)]
2387        type UnderlyingSolTuple<'a> = (
2388            alloy::sol_types::sol_data::Uint<64>,
2389            alloy::sol_types::sol_data::Uint<64>,
2390            alloy::sol_types::sol_data::Uint<64>,
2391            BN254::ScalarField,
2392        );
2393        #[doc(hidden)]
2394        type UnderlyingRustTuple<'a> = (
2395            u64,
2396            u64,
2397            u64,
2398            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2399        );
2400        #[cfg(test)]
2401        #[allow(dead_code, unreachable_patterns)]
2402        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2403            match _t {
2404                alloy_sol_types::private::AssertTypeEq::<
2405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2406                >(_) => {},
2407            }
2408        }
2409        #[automatically_derived]
2410        #[doc(hidden)]
2411        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2412            fn from(value: StateHistoryCommitment) -> Self {
2413                (
2414                    value.l1BlockHeight,
2415                    value.l1BlockTimestamp,
2416                    value.hotShotBlockHeight,
2417                    value.hotShotBlockCommRoot,
2418                )
2419            }
2420        }
2421        #[automatically_derived]
2422        #[doc(hidden)]
2423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2425                Self {
2426                    l1BlockHeight: tuple.0,
2427                    l1BlockTimestamp: tuple.1,
2428                    hotShotBlockHeight: tuple.2,
2429                    hotShotBlockCommRoot: tuple.3,
2430                }
2431            }
2432        }
2433        #[automatically_derived]
2434        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2435            type SolType = Self;
2436        }
2437        #[automatically_derived]
2438        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2439            #[inline]
2440            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2441                (
2442                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2443                        &self.l1BlockHeight,
2444                    ),
2445                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2446                        &self.l1BlockTimestamp,
2447                    ),
2448                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
2449                        &self.hotShotBlockHeight,
2450                    ),
2451                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2452                        &self.hotShotBlockCommRoot,
2453                    ),
2454                )
2455            }
2456            #[inline]
2457            fn stv_abi_encoded_size(&self) -> usize {
2458                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2459                    return size;
2460                }
2461                let tuple =
2462                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2463                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2464            }
2465            #[inline]
2466            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2467                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2468            }
2469            #[inline]
2470            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2471                let tuple =
2472                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2473                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2474                    &tuple, out,
2475                )
2476            }
2477            #[inline]
2478            fn stv_abi_packed_encoded_size(&self) -> usize {
2479                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2480                    return size;
2481                }
2482                let tuple =
2483                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2484                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2485                    &tuple,
2486                )
2487            }
2488        }
2489        #[automatically_derived]
2490        impl alloy_sol_types::SolType for StateHistoryCommitment {
2491            type RustType = Self;
2492            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2493            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2494            const ENCODED_SIZE: Option<usize> =
2495                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2496            const PACKED_ENCODED_SIZE: Option<usize> =
2497                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2498            #[inline]
2499            fn valid_token(token: &Self::Token<'_>) -> bool {
2500                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2501            }
2502            #[inline]
2503            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2504                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2505                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2506            }
2507        }
2508        #[automatically_derived]
2509        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2510            const NAME: &'static str = "StateHistoryCommitment";
2511            #[inline]
2512            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2513                alloy_sol_types::private::Cow::Borrowed(
2514                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2515                )
2516            }
2517            #[inline]
2518            fn eip712_components(
2519            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2520            {
2521                alloy_sol_types::private::Vec::new()
2522            }
2523            #[inline]
2524            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2525                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2526            }
2527            #[inline]
2528            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2529                [
2530                    <alloy::sol_types::sol_data::Uint<
2531                        64,
2532                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2533                        .0,
2534                    <alloy::sol_types::sol_data::Uint<
2535                        64,
2536                    > as alloy_sol_types::SolType>::eip712_data_word(
2537                            &self.l1BlockTimestamp,
2538                        )
2539                        .0,
2540                    <alloy::sol_types::sol_data::Uint<
2541                        64,
2542                    > as alloy_sol_types::SolType>::eip712_data_word(
2543                            &self.hotShotBlockHeight,
2544                        )
2545                        .0,
2546                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2547                            &self.hotShotBlockCommRoot,
2548                        )
2549                        .0,
2550                ]
2551                    .concat()
2552            }
2553        }
2554        #[automatically_derived]
2555        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2556            #[inline]
2557            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2558                0usize
2559                    + <alloy::sol_types::sol_data::Uint<
2560                        64,
2561                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2562                        &rust.l1BlockHeight,
2563                    )
2564                    + <alloy::sol_types::sol_data::Uint<
2565                        64,
2566                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2567                        &rust.l1BlockTimestamp,
2568                    )
2569                    + <alloy::sol_types::sol_data::Uint<
2570                        64,
2571                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2572                        &rust.hotShotBlockHeight,
2573                    )
2574                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2575                        &rust.hotShotBlockCommRoot,
2576                    )
2577            }
2578            #[inline]
2579            fn encode_topic_preimage(
2580                rust: &Self::RustType,
2581                out: &mut alloy_sol_types::private::Vec<u8>,
2582            ) {
2583                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2584                <alloy::sol_types::sol_data::Uint<
2585                    64,
2586                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2587                    &rust.l1BlockHeight,
2588                    out,
2589                );
2590                <alloy::sol_types::sol_data::Uint<
2591                    64,
2592                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2593                    &rust.l1BlockTimestamp,
2594                    out,
2595                );
2596                <alloy::sol_types::sol_data::Uint<
2597                    64,
2598                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2599                    &rust.hotShotBlockHeight,
2600                    out,
2601                );
2602                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2603                    &rust.hotShotBlockCommRoot,
2604                    out,
2605                );
2606            }
2607            #[inline]
2608            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2609                let mut out = alloy_sol_types::private::Vec::new();
2610                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2611                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2612            }
2613        }
2614    };
2615    use alloy::contract as alloy_contract;
2616    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2617
2618    See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2619    #[inline]
2620    pub const fn new<
2621        T: alloy_contract::private::Transport + ::core::clone::Clone,
2622        P: alloy_contract::private::Provider<T, N>,
2623        N: alloy_contract::private::Network,
2624    >(
2625        address: alloy_sol_types::private::Address,
2626        provider: P,
2627    ) -> LightClientInstance<T, P, N> {
2628        LightClientInstance::<T, P, N>::new(address, provider)
2629    }
2630    /**A [`LightClient`](self) instance.
2631
2632    Contains type-safe methods for interacting with an on-chain instance of the
2633    [`LightClient`](self) contract located at a given `address`, using a given
2634    provider `P`.
2635
2636    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2637    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2638    be used to deploy a new instance of the contract.
2639
2640    See the [module-level documentation](self) for all the available methods.*/
2641    #[derive(Clone)]
2642    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2643        address: alloy_sol_types::private::Address,
2644        provider: P,
2645        _network_transport: ::core::marker::PhantomData<(N, T)>,
2646    }
2647    #[automatically_derived]
2648    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2649        #[inline]
2650        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2651            f.debug_tuple("LightClientInstance")
2652                .field(&self.address)
2653                .finish()
2654        }
2655    }
2656    /// Instantiation and getters/setters.
2657    #[automatically_derived]
2658    impl<
2659            T: alloy_contract::private::Transport + ::core::clone::Clone,
2660            P: alloy_contract::private::Provider<T, N>,
2661            N: alloy_contract::private::Network,
2662        > LightClientInstance<T, P, N>
2663    {
2664        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2665
2666        See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2667        #[inline]
2668        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
2669            Self {
2670                address,
2671                provider,
2672                _network_transport: ::core::marker::PhantomData,
2673            }
2674        }
2675        /// Returns a reference to the address.
2676        #[inline]
2677        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2678            &self.address
2679        }
2680        /// Sets the address.
2681        #[inline]
2682        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2683            self.address = address;
2684        }
2685        /// Sets the address and returns `self`.
2686        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2687            self.set_address(address);
2688            self
2689        }
2690        /// Returns a reference to the provider.
2691        #[inline]
2692        pub const fn provider(&self) -> &P {
2693            &self.provider
2694        }
2695    }
2696    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2697        /// Clones the provider and returns a new instance with the cloned provider.
2698        #[inline]
2699        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2700            LightClientInstance {
2701                address: self.address,
2702                provider: ::core::clone::Clone::clone(&self.provider),
2703                _network_transport: ::core::marker::PhantomData,
2704            }
2705        }
2706    }
2707    /// Function calls.
2708    #[automatically_derived]
2709    impl<
2710            T: alloy_contract::private::Transport + ::core::clone::Clone,
2711            P: alloy_contract::private::Provider<T, N>,
2712            N: alloy_contract::private::Network,
2713        > LightClientInstance<T, P, N>
2714    {
2715        /// Creates a new call builder using this contract instance's provider and address.
2716        ///
2717        /// Note that the call can be any function call, not just those defined in this
2718        /// contract. Prefer using the other methods for building type-safe contract calls.
2719        pub fn call_builder<C: alloy_sol_types::SolCall>(
2720            &self,
2721            call: &C,
2722        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2723            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2724        }
2725    }
2726    /// Event filters.
2727    #[automatically_derived]
2728    impl<
2729            T: alloy_contract::private::Transport + ::core::clone::Clone,
2730            P: alloy_contract::private::Provider<T, N>,
2731            N: alloy_contract::private::Network,
2732        > LightClientInstance<T, P, N>
2733    {
2734        /// Creates a new event filter using this contract instance's provider and address.
2735        ///
2736        /// Note that the type can be any event, not just those defined in this contract.
2737        /// Prefer using the other methods for building type-safe event filters.
2738        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2739            &self,
2740        ) -> alloy_contract::Event<T, &P, E, N> {
2741            alloy_contract::Event::new_sol(&self.provider, &self.address)
2742        }
2743    }
2744}
2745/**
2746
2747Generated by the following Solidity interface...
2748```solidity
2749library BN254 {
2750    type BaseField is uint256;
2751    type ScalarField is uint256;
2752    struct G1Point {
2753        BaseField x;
2754        BaseField y;
2755    }
2756}
2757
2758library IPlonkVerifier {
2759    struct PlonkProof {
2760        BN254.G1Point wire0;
2761        BN254.G1Point wire1;
2762        BN254.G1Point wire2;
2763        BN254.G1Point wire3;
2764        BN254.G1Point wire4;
2765        BN254.G1Point prodPerm;
2766        BN254.G1Point split0;
2767        BN254.G1Point split1;
2768        BN254.G1Point split2;
2769        BN254.G1Point split3;
2770        BN254.G1Point split4;
2771        BN254.G1Point zeta;
2772        BN254.G1Point zetaOmega;
2773        BN254.ScalarField wireEval0;
2774        BN254.ScalarField wireEval1;
2775        BN254.ScalarField wireEval2;
2776        BN254.ScalarField wireEval3;
2777        BN254.ScalarField wireEval4;
2778        BN254.ScalarField sigmaEval0;
2779        BN254.ScalarField sigmaEval1;
2780        BN254.ScalarField sigmaEval2;
2781        BN254.ScalarField sigmaEval3;
2782        BN254.ScalarField prodPermZetaOmegaEval;
2783    }
2784    struct VerifyingKey {
2785        uint256 domainSize;
2786        uint256 numInputs;
2787        BN254.G1Point sigma0;
2788        BN254.G1Point sigma1;
2789        BN254.G1Point sigma2;
2790        BN254.G1Point sigma3;
2791        BN254.G1Point sigma4;
2792        BN254.G1Point q1;
2793        BN254.G1Point q2;
2794        BN254.G1Point q3;
2795        BN254.G1Point q4;
2796        BN254.G1Point qM12;
2797        BN254.G1Point qM34;
2798        BN254.G1Point qO;
2799        BN254.G1Point qC;
2800        BN254.G1Point qH1;
2801        BN254.G1Point qH2;
2802        BN254.G1Point qH3;
2803        BN254.G1Point qH4;
2804        BN254.G1Point qEcc;
2805        bytes32 g2LSB;
2806        bytes32 g2MSB;
2807    }
2808}
2809
2810library LightClient {
2811    struct LightClientState {
2812        uint64 viewNum;
2813        uint64 blockHeight;
2814        BN254.ScalarField blockCommRoot;
2815    }
2816    struct StakeTableState {
2817        uint256 threshold;
2818        BN254.ScalarField blsKeyComm;
2819        BN254.ScalarField schnorrKeyComm;
2820        BN254.ScalarField amountComm;
2821    }
2822    struct StateHistoryCommitment {
2823        uint64 l1BlockHeight;
2824        uint64 l1BlockTimestamp;
2825        uint64 hotShotBlockHeight;
2826        BN254.ScalarField hotShotBlockCommRoot;
2827    }
2828}
2829
2830interface LightClientMock {
2831    error AddressEmptyCode(address target);
2832    error ERC1967InvalidImplementation(address implementation);
2833    error ERC1967NonPayable();
2834    error FailedInnerCall();
2835    error InsufficientSnapshotHistory();
2836    error InvalidAddress();
2837    error InvalidArgs();
2838    error InvalidHotShotBlockForCommitmentCheck();
2839    error InvalidInitialization();
2840    error InvalidMaxStateHistory();
2841    error InvalidProof();
2842    error NoChangeRequired();
2843    error NotInitializing();
2844    error OutdatedState();
2845    error OwnableInvalidOwner(address owner);
2846    error OwnableUnauthorizedAccount(address account);
2847    error ProverNotPermissioned();
2848    error UUPSUnauthorizedCallContext();
2849    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2850    error WrongStakeTableUsed();
2851
2852    event Initialized(uint64 version);
2853    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2854    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2855    event PermissionedProverNotRequired();
2856    event PermissionedProverRequired(address permissionedProver);
2857    event Upgrade(address implementation);
2858    event Upgraded(address indexed implementation);
2859
2860    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2861    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2862    function currentBlockNumber() external view returns (uint256);
2863    function disablePermissionedProverMode() external;
2864    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2865    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2866    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2867    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2868    function getStateHistoryCount() external view returns (uint256);
2869    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2870    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2871    function isPermissionedProverEnabled() external view returns (bool);
2872    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
2873    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2874    function owner() external view returns (address);
2875    function permissionedProver() external view returns (address);
2876    function proxiableUUID() external view returns (bytes32);
2877    function renounceOwnership() external;
2878    function setFinalizedState(LightClient.LightClientState memory state) external;
2879    function setHotShotDownSince(uint256 l1Height) external;
2880    function setHotShotUp() external;
2881    function setPermissionedProver(address prover) external;
2882    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
2883    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2884    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2885    function stateHistoryFirstIndex() external view returns (uint64);
2886    function stateHistoryRetentionPeriod() external view returns (uint32);
2887    function transferOwnership(address newOwner) external;
2888    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2889}
2890```
2891
2892...which was generated by the following JSON ABI:
2893```json
2894[
2895  {
2896    "type": "function",
2897    "name": "UPGRADE_INTERFACE_VERSION",
2898    "inputs": [],
2899    "outputs": [
2900      {
2901        "name": "",
2902        "type": "string",
2903        "internalType": "string"
2904      }
2905    ],
2906    "stateMutability": "view"
2907  },
2908  {
2909    "type": "function",
2910    "name": "_getVk",
2911    "inputs": [],
2912    "outputs": [
2913      {
2914        "name": "vk",
2915        "type": "tuple",
2916        "internalType": "struct IPlonkVerifier.VerifyingKey",
2917        "components": [
2918          {
2919            "name": "domainSize",
2920            "type": "uint256",
2921            "internalType": "uint256"
2922          },
2923          {
2924            "name": "numInputs",
2925            "type": "uint256",
2926            "internalType": "uint256"
2927          },
2928          {
2929            "name": "sigma0",
2930            "type": "tuple",
2931            "internalType": "struct BN254.G1Point",
2932            "components": [
2933              {
2934                "name": "x",
2935                "type": "uint256",
2936                "internalType": "BN254.BaseField"
2937              },
2938              {
2939                "name": "y",
2940                "type": "uint256",
2941                "internalType": "BN254.BaseField"
2942              }
2943            ]
2944          },
2945          {
2946            "name": "sigma1",
2947            "type": "tuple",
2948            "internalType": "struct BN254.G1Point",
2949            "components": [
2950              {
2951                "name": "x",
2952                "type": "uint256",
2953                "internalType": "BN254.BaseField"
2954              },
2955              {
2956                "name": "y",
2957                "type": "uint256",
2958                "internalType": "BN254.BaseField"
2959              }
2960            ]
2961          },
2962          {
2963            "name": "sigma2",
2964            "type": "tuple",
2965            "internalType": "struct BN254.G1Point",
2966            "components": [
2967              {
2968                "name": "x",
2969                "type": "uint256",
2970                "internalType": "BN254.BaseField"
2971              },
2972              {
2973                "name": "y",
2974                "type": "uint256",
2975                "internalType": "BN254.BaseField"
2976              }
2977            ]
2978          },
2979          {
2980            "name": "sigma3",
2981            "type": "tuple",
2982            "internalType": "struct BN254.G1Point",
2983            "components": [
2984              {
2985                "name": "x",
2986                "type": "uint256",
2987                "internalType": "BN254.BaseField"
2988              },
2989              {
2990                "name": "y",
2991                "type": "uint256",
2992                "internalType": "BN254.BaseField"
2993              }
2994            ]
2995          },
2996          {
2997            "name": "sigma4",
2998            "type": "tuple",
2999            "internalType": "struct BN254.G1Point",
3000            "components": [
3001              {
3002                "name": "x",
3003                "type": "uint256",
3004                "internalType": "BN254.BaseField"
3005              },
3006              {
3007                "name": "y",
3008                "type": "uint256",
3009                "internalType": "BN254.BaseField"
3010              }
3011            ]
3012          },
3013          {
3014            "name": "q1",
3015            "type": "tuple",
3016            "internalType": "struct BN254.G1Point",
3017            "components": [
3018              {
3019                "name": "x",
3020                "type": "uint256",
3021                "internalType": "BN254.BaseField"
3022              },
3023              {
3024                "name": "y",
3025                "type": "uint256",
3026                "internalType": "BN254.BaseField"
3027              }
3028            ]
3029          },
3030          {
3031            "name": "q2",
3032            "type": "tuple",
3033            "internalType": "struct BN254.G1Point",
3034            "components": [
3035              {
3036                "name": "x",
3037                "type": "uint256",
3038                "internalType": "BN254.BaseField"
3039              },
3040              {
3041                "name": "y",
3042                "type": "uint256",
3043                "internalType": "BN254.BaseField"
3044              }
3045            ]
3046          },
3047          {
3048            "name": "q3",
3049            "type": "tuple",
3050            "internalType": "struct BN254.G1Point",
3051            "components": [
3052              {
3053                "name": "x",
3054                "type": "uint256",
3055                "internalType": "BN254.BaseField"
3056              },
3057              {
3058                "name": "y",
3059                "type": "uint256",
3060                "internalType": "BN254.BaseField"
3061              }
3062            ]
3063          },
3064          {
3065            "name": "q4",
3066            "type": "tuple",
3067            "internalType": "struct BN254.G1Point",
3068            "components": [
3069              {
3070                "name": "x",
3071                "type": "uint256",
3072                "internalType": "BN254.BaseField"
3073              },
3074              {
3075                "name": "y",
3076                "type": "uint256",
3077                "internalType": "BN254.BaseField"
3078              }
3079            ]
3080          },
3081          {
3082            "name": "qM12",
3083            "type": "tuple",
3084            "internalType": "struct BN254.G1Point",
3085            "components": [
3086              {
3087                "name": "x",
3088                "type": "uint256",
3089                "internalType": "BN254.BaseField"
3090              },
3091              {
3092                "name": "y",
3093                "type": "uint256",
3094                "internalType": "BN254.BaseField"
3095              }
3096            ]
3097          },
3098          {
3099            "name": "qM34",
3100            "type": "tuple",
3101            "internalType": "struct BN254.G1Point",
3102            "components": [
3103              {
3104                "name": "x",
3105                "type": "uint256",
3106                "internalType": "BN254.BaseField"
3107              },
3108              {
3109                "name": "y",
3110                "type": "uint256",
3111                "internalType": "BN254.BaseField"
3112              }
3113            ]
3114          },
3115          {
3116            "name": "qO",
3117            "type": "tuple",
3118            "internalType": "struct BN254.G1Point",
3119            "components": [
3120              {
3121                "name": "x",
3122                "type": "uint256",
3123                "internalType": "BN254.BaseField"
3124              },
3125              {
3126                "name": "y",
3127                "type": "uint256",
3128                "internalType": "BN254.BaseField"
3129              }
3130            ]
3131          },
3132          {
3133            "name": "qC",
3134            "type": "tuple",
3135            "internalType": "struct BN254.G1Point",
3136            "components": [
3137              {
3138                "name": "x",
3139                "type": "uint256",
3140                "internalType": "BN254.BaseField"
3141              },
3142              {
3143                "name": "y",
3144                "type": "uint256",
3145                "internalType": "BN254.BaseField"
3146              }
3147            ]
3148          },
3149          {
3150            "name": "qH1",
3151            "type": "tuple",
3152            "internalType": "struct BN254.G1Point",
3153            "components": [
3154              {
3155                "name": "x",
3156                "type": "uint256",
3157                "internalType": "BN254.BaseField"
3158              },
3159              {
3160                "name": "y",
3161                "type": "uint256",
3162                "internalType": "BN254.BaseField"
3163              }
3164            ]
3165          },
3166          {
3167            "name": "qH2",
3168            "type": "tuple",
3169            "internalType": "struct BN254.G1Point",
3170            "components": [
3171              {
3172                "name": "x",
3173                "type": "uint256",
3174                "internalType": "BN254.BaseField"
3175              },
3176              {
3177                "name": "y",
3178                "type": "uint256",
3179                "internalType": "BN254.BaseField"
3180              }
3181            ]
3182          },
3183          {
3184            "name": "qH3",
3185            "type": "tuple",
3186            "internalType": "struct BN254.G1Point",
3187            "components": [
3188              {
3189                "name": "x",
3190                "type": "uint256",
3191                "internalType": "BN254.BaseField"
3192              },
3193              {
3194                "name": "y",
3195                "type": "uint256",
3196                "internalType": "BN254.BaseField"
3197              }
3198            ]
3199          },
3200          {
3201            "name": "qH4",
3202            "type": "tuple",
3203            "internalType": "struct BN254.G1Point",
3204            "components": [
3205              {
3206                "name": "x",
3207                "type": "uint256",
3208                "internalType": "BN254.BaseField"
3209              },
3210              {
3211                "name": "y",
3212                "type": "uint256",
3213                "internalType": "BN254.BaseField"
3214              }
3215            ]
3216          },
3217          {
3218            "name": "qEcc",
3219            "type": "tuple",
3220            "internalType": "struct BN254.G1Point",
3221            "components": [
3222              {
3223                "name": "x",
3224                "type": "uint256",
3225                "internalType": "BN254.BaseField"
3226              },
3227              {
3228                "name": "y",
3229                "type": "uint256",
3230                "internalType": "BN254.BaseField"
3231              }
3232            ]
3233          },
3234          {
3235            "name": "g2LSB",
3236            "type": "bytes32",
3237            "internalType": "bytes32"
3238          },
3239          {
3240            "name": "g2MSB",
3241            "type": "bytes32",
3242            "internalType": "bytes32"
3243          }
3244        ]
3245      }
3246    ],
3247    "stateMutability": "pure"
3248  },
3249  {
3250    "type": "function",
3251    "name": "currentBlockNumber",
3252    "inputs": [],
3253    "outputs": [
3254      {
3255        "name": "",
3256        "type": "uint256",
3257        "internalType": "uint256"
3258      }
3259    ],
3260    "stateMutability": "view"
3261  },
3262  {
3263    "type": "function",
3264    "name": "disablePermissionedProverMode",
3265    "inputs": [],
3266    "outputs": [],
3267    "stateMutability": "nonpayable"
3268  },
3269  {
3270    "type": "function",
3271    "name": "finalizedState",
3272    "inputs": [],
3273    "outputs": [
3274      {
3275        "name": "viewNum",
3276        "type": "uint64",
3277        "internalType": "uint64"
3278      },
3279      {
3280        "name": "blockHeight",
3281        "type": "uint64",
3282        "internalType": "uint64"
3283      },
3284      {
3285        "name": "blockCommRoot",
3286        "type": "uint256",
3287        "internalType": "BN254.ScalarField"
3288      }
3289    ],
3290    "stateMutability": "view"
3291  },
3292  {
3293    "type": "function",
3294    "name": "genesisStakeTableState",
3295    "inputs": [],
3296    "outputs": [
3297      {
3298        "name": "threshold",
3299        "type": "uint256",
3300        "internalType": "uint256"
3301      },
3302      {
3303        "name": "blsKeyComm",
3304        "type": "uint256",
3305        "internalType": "BN254.ScalarField"
3306      },
3307      {
3308        "name": "schnorrKeyComm",
3309        "type": "uint256",
3310        "internalType": "BN254.ScalarField"
3311      },
3312      {
3313        "name": "amountComm",
3314        "type": "uint256",
3315        "internalType": "BN254.ScalarField"
3316      }
3317    ],
3318    "stateMutability": "view"
3319  },
3320  {
3321    "type": "function",
3322    "name": "genesisState",
3323    "inputs": [],
3324    "outputs": [
3325      {
3326        "name": "viewNum",
3327        "type": "uint64",
3328        "internalType": "uint64"
3329      },
3330      {
3331        "name": "blockHeight",
3332        "type": "uint64",
3333        "internalType": "uint64"
3334      },
3335      {
3336        "name": "blockCommRoot",
3337        "type": "uint256",
3338        "internalType": "BN254.ScalarField"
3339      }
3340    ],
3341    "stateMutability": "view"
3342  },
3343  {
3344    "type": "function",
3345    "name": "getHotShotCommitment",
3346    "inputs": [
3347      {
3348        "name": "hotShotBlockHeight",
3349        "type": "uint256",
3350        "internalType": "uint256"
3351      }
3352    ],
3353    "outputs": [
3354      {
3355        "name": "hotShotBlockCommRoot",
3356        "type": "uint256",
3357        "internalType": "BN254.ScalarField"
3358      },
3359      {
3360        "name": "hotshotBlockHeight",
3361        "type": "uint64",
3362        "internalType": "uint64"
3363      }
3364    ],
3365    "stateMutability": "view"
3366  },
3367  {
3368    "type": "function",
3369    "name": "getStateHistoryCount",
3370    "inputs": [],
3371    "outputs": [
3372      {
3373        "name": "",
3374        "type": "uint256",
3375        "internalType": "uint256"
3376      }
3377    ],
3378    "stateMutability": "view"
3379  },
3380  {
3381    "type": "function",
3382    "name": "getVersion",
3383    "inputs": [],
3384    "outputs": [
3385      {
3386        "name": "majorVersion",
3387        "type": "uint8",
3388        "internalType": "uint8"
3389      },
3390      {
3391        "name": "minorVersion",
3392        "type": "uint8",
3393        "internalType": "uint8"
3394      },
3395      {
3396        "name": "patchVersion",
3397        "type": "uint8",
3398        "internalType": "uint8"
3399      }
3400    ],
3401    "stateMutability": "pure"
3402  },
3403  {
3404    "type": "function",
3405    "name": "initialize",
3406    "inputs": [
3407      {
3408        "name": "_genesis",
3409        "type": "tuple",
3410        "internalType": "struct LightClient.LightClientState",
3411        "components": [
3412          {
3413            "name": "viewNum",
3414            "type": "uint64",
3415            "internalType": "uint64"
3416          },
3417          {
3418            "name": "blockHeight",
3419            "type": "uint64",
3420            "internalType": "uint64"
3421          },
3422          {
3423            "name": "blockCommRoot",
3424            "type": "uint256",
3425            "internalType": "BN254.ScalarField"
3426          }
3427        ]
3428      },
3429      {
3430        "name": "_genesisStakeTableState",
3431        "type": "tuple",
3432        "internalType": "struct LightClient.StakeTableState",
3433        "components": [
3434          {
3435            "name": "threshold",
3436            "type": "uint256",
3437            "internalType": "uint256"
3438          },
3439          {
3440            "name": "blsKeyComm",
3441            "type": "uint256",
3442            "internalType": "BN254.ScalarField"
3443          },
3444          {
3445            "name": "schnorrKeyComm",
3446            "type": "uint256",
3447            "internalType": "BN254.ScalarField"
3448          },
3449          {
3450            "name": "amountComm",
3451            "type": "uint256",
3452            "internalType": "BN254.ScalarField"
3453          }
3454        ]
3455      },
3456      {
3457        "name": "_stateHistoryRetentionPeriod",
3458        "type": "uint32",
3459        "internalType": "uint32"
3460      },
3461      {
3462        "name": "owner",
3463        "type": "address",
3464        "internalType": "address"
3465      }
3466    ],
3467    "outputs": [],
3468    "stateMutability": "nonpayable"
3469  },
3470  {
3471    "type": "function",
3472    "name": "isPermissionedProverEnabled",
3473    "inputs": [],
3474    "outputs": [
3475      {
3476        "name": "",
3477        "type": "bool",
3478        "internalType": "bool"
3479      }
3480    ],
3481    "stateMutability": "view"
3482  },
3483  {
3484    "type": "function",
3485    "name": "lagOverEscapeHatchThreshold",
3486    "inputs": [
3487      {
3488        "name": "blockNumber",
3489        "type": "uint256",
3490        "internalType": "uint256"
3491      },
3492      {
3493        "name": "threshold",
3494        "type": "uint256",
3495        "internalType": "uint256"
3496      }
3497    ],
3498    "outputs": [
3499      {
3500        "name": "",
3501        "type": "bool",
3502        "internalType": "bool"
3503      }
3504    ],
3505    "stateMutability": "view"
3506  },
3507  {
3508    "type": "function",
3509    "name": "newFinalizedState",
3510    "inputs": [
3511      {
3512        "name": "newState",
3513        "type": "tuple",
3514        "internalType": "struct LightClient.LightClientState",
3515        "components": [
3516          {
3517            "name": "viewNum",
3518            "type": "uint64",
3519            "internalType": "uint64"
3520          },
3521          {
3522            "name": "blockHeight",
3523            "type": "uint64",
3524            "internalType": "uint64"
3525          },
3526          {
3527            "name": "blockCommRoot",
3528            "type": "uint256",
3529            "internalType": "BN254.ScalarField"
3530          }
3531        ]
3532      },
3533      {
3534        "name": "proof",
3535        "type": "tuple",
3536        "internalType": "struct IPlonkVerifier.PlonkProof",
3537        "components": [
3538          {
3539            "name": "wire0",
3540            "type": "tuple",
3541            "internalType": "struct BN254.G1Point",
3542            "components": [
3543              {
3544                "name": "x",
3545                "type": "uint256",
3546                "internalType": "BN254.BaseField"
3547              },
3548              {
3549                "name": "y",
3550                "type": "uint256",
3551                "internalType": "BN254.BaseField"
3552              }
3553            ]
3554          },
3555          {
3556            "name": "wire1",
3557            "type": "tuple",
3558            "internalType": "struct BN254.G1Point",
3559            "components": [
3560              {
3561                "name": "x",
3562                "type": "uint256",
3563                "internalType": "BN254.BaseField"
3564              },
3565              {
3566                "name": "y",
3567                "type": "uint256",
3568                "internalType": "BN254.BaseField"
3569              }
3570            ]
3571          },
3572          {
3573            "name": "wire2",
3574            "type": "tuple",
3575            "internalType": "struct BN254.G1Point",
3576            "components": [
3577              {
3578                "name": "x",
3579                "type": "uint256",
3580                "internalType": "BN254.BaseField"
3581              },
3582              {
3583                "name": "y",
3584                "type": "uint256",
3585                "internalType": "BN254.BaseField"
3586              }
3587            ]
3588          },
3589          {
3590            "name": "wire3",
3591            "type": "tuple",
3592            "internalType": "struct BN254.G1Point",
3593            "components": [
3594              {
3595                "name": "x",
3596                "type": "uint256",
3597                "internalType": "BN254.BaseField"
3598              },
3599              {
3600                "name": "y",
3601                "type": "uint256",
3602                "internalType": "BN254.BaseField"
3603              }
3604            ]
3605          },
3606          {
3607            "name": "wire4",
3608            "type": "tuple",
3609            "internalType": "struct BN254.G1Point",
3610            "components": [
3611              {
3612                "name": "x",
3613                "type": "uint256",
3614                "internalType": "BN254.BaseField"
3615              },
3616              {
3617                "name": "y",
3618                "type": "uint256",
3619                "internalType": "BN254.BaseField"
3620              }
3621            ]
3622          },
3623          {
3624            "name": "prodPerm",
3625            "type": "tuple",
3626            "internalType": "struct BN254.G1Point",
3627            "components": [
3628              {
3629                "name": "x",
3630                "type": "uint256",
3631                "internalType": "BN254.BaseField"
3632              },
3633              {
3634                "name": "y",
3635                "type": "uint256",
3636                "internalType": "BN254.BaseField"
3637              }
3638            ]
3639          },
3640          {
3641            "name": "split0",
3642            "type": "tuple",
3643            "internalType": "struct BN254.G1Point",
3644            "components": [
3645              {
3646                "name": "x",
3647                "type": "uint256",
3648                "internalType": "BN254.BaseField"
3649              },
3650              {
3651                "name": "y",
3652                "type": "uint256",
3653                "internalType": "BN254.BaseField"
3654              }
3655            ]
3656          },
3657          {
3658            "name": "split1",
3659            "type": "tuple",
3660            "internalType": "struct BN254.G1Point",
3661            "components": [
3662              {
3663                "name": "x",
3664                "type": "uint256",
3665                "internalType": "BN254.BaseField"
3666              },
3667              {
3668                "name": "y",
3669                "type": "uint256",
3670                "internalType": "BN254.BaseField"
3671              }
3672            ]
3673          },
3674          {
3675            "name": "split2",
3676            "type": "tuple",
3677            "internalType": "struct BN254.G1Point",
3678            "components": [
3679              {
3680                "name": "x",
3681                "type": "uint256",
3682                "internalType": "BN254.BaseField"
3683              },
3684              {
3685                "name": "y",
3686                "type": "uint256",
3687                "internalType": "BN254.BaseField"
3688              }
3689            ]
3690          },
3691          {
3692            "name": "split3",
3693            "type": "tuple",
3694            "internalType": "struct BN254.G1Point",
3695            "components": [
3696              {
3697                "name": "x",
3698                "type": "uint256",
3699                "internalType": "BN254.BaseField"
3700              },
3701              {
3702                "name": "y",
3703                "type": "uint256",
3704                "internalType": "BN254.BaseField"
3705              }
3706            ]
3707          },
3708          {
3709            "name": "split4",
3710            "type": "tuple",
3711            "internalType": "struct BN254.G1Point",
3712            "components": [
3713              {
3714                "name": "x",
3715                "type": "uint256",
3716                "internalType": "BN254.BaseField"
3717              },
3718              {
3719                "name": "y",
3720                "type": "uint256",
3721                "internalType": "BN254.BaseField"
3722              }
3723            ]
3724          },
3725          {
3726            "name": "zeta",
3727            "type": "tuple",
3728            "internalType": "struct BN254.G1Point",
3729            "components": [
3730              {
3731                "name": "x",
3732                "type": "uint256",
3733                "internalType": "BN254.BaseField"
3734              },
3735              {
3736                "name": "y",
3737                "type": "uint256",
3738                "internalType": "BN254.BaseField"
3739              }
3740            ]
3741          },
3742          {
3743            "name": "zetaOmega",
3744            "type": "tuple",
3745            "internalType": "struct BN254.G1Point",
3746            "components": [
3747              {
3748                "name": "x",
3749                "type": "uint256",
3750                "internalType": "BN254.BaseField"
3751              },
3752              {
3753                "name": "y",
3754                "type": "uint256",
3755                "internalType": "BN254.BaseField"
3756              }
3757            ]
3758          },
3759          {
3760            "name": "wireEval0",
3761            "type": "uint256",
3762            "internalType": "BN254.ScalarField"
3763          },
3764          {
3765            "name": "wireEval1",
3766            "type": "uint256",
3767            "internalType": "BN254.ScalarField"
3768          },
3769          {
3770            "name": "wireEval2",
3771            "type": "uint256",
3772            "internalType": "BN254.ScalarField"
3773          },
3774          {
3775            "name": "wireEval3",
3776            "type": "uint256",
3777            "internalType": "BN254.ScalarField"
3778          },
3779          {
3780            "name": "wireEval4",
3781            "type": "uint256",
3782            "internalType": "BN254.ScalarField"
3783          },
3784          {
3785            "name": "sigmaEval0",
3786            "type": "uint256",
3787            "internalType": "BN254.ScalarField"
3788          },
3789          {
3790            "name": "sigmaEval1",
3791            "type": "uint256",
3792            "internalType": "BN254.ScalarField"
3793          },
3794          {
3795            "name": "sigmaEval2",
3796            "type": "uint256",
3797            "internalType": "BN254.ScalarField"
3798          },
3799          {
3800            "name": "sigmaEval3",
3801            "type": "uint256",
3802            "internalType": "BN254.ScalarField"
3803          },
3804          {
3805            "name": "prodPermZetaOmegaEval",
3806            "type": "uint256",
3807            "internalType": "BN254.ScalarField"
3808          }
3809        ]
3810      }
3811    ],
3812    "outputs": [],
3813    "stateMutability": "nonpayable"
3814  },
3815  {
3816    "type": "function",
3817    "name": "owner",
3818    "inputs": [],
3819    "outputs": [
3820      {
3821        "name": "",
3822        "type": "address",
3823        "internalType": "address"
3824      }
3825    ],
3826    "stateMutability": "view"
3827  },
3828  {
3829    "type": "function",
3830    "name": "permissionedProver",
3831    "inputs": [],
3832    "outputs": [
3833      {
3834        "name": "",
3835        "type": "address",
3836        "internalType": "address"
3837      }
3838    ],
3839    "stateMutability": "view"
3840  },
3841  {
3842    "type": "function",
3843    "name": "proxiableUUID",
3844    "inputs": [],
3845    "outputs": [
3846      {
3847        "name": "",
3848        "type": "bytes32",
3849        "internalType": "bytes32"
3850      }
3851    ],
3852    "stateMutability": "view"
3853  },
3854  {
3855    "type": "function",
3856    "name": "renounceOwnership",
3857    "inputs": [],
3858    "outputs": [],
3859    "stateMutability": "nonpayable"
3860  },
3861  {
3862    "type": "function",
3863    "name": "setFinalizedState",
3864    "inputs": [
3865      {
3866        "name": "state",
3867        "type": "tuple",
3868        "internalType": "struct LightClient.LightClientState",
3869        "components": [
3870          {
3871            "name": "viewNum",
3872            "type": "uint64",
3873            "internalType": "uint64"
3874          },
3875          {
3876            "name": "blockHeight",
3877            "type": "uint64",
3878            "internalType": "uint64"
3879          },
3880          {
3881            "name": "blockCommRoot",
3882            "type": "uint256",
3883            "internalType": "BN254.ScalarField"
3884          }
3885        ]
3886      }
3887    ],
3888    "outputs": [],
3889    "stateMutability": "nonpayable"
3890  },
3891  {
3892    "type": "function",
3893    "name": "setHotShotDownSince",
3894    "inputs": [
3895      {
3896        "name": "l1Height",
3897        "type": "uint256",
3898        "internalType": "uint256"
3899      }
3900    ],
3901    "outputs": [],
3902    "stateMutability": "nonpayable"
3903  },
3904  {
3905    "type": "function",
3906    "name": "setHotShotUp",
3907    "inputs": [],
3908    "outputs": [],
3909    "stateMutability": "nonpayable"
3910  },
3911  {
3912    "type": "function",
3913    "name": "setPermissionedProver",
3914    "inputs": [
3915      {
3916        "name": "prover",
3917        "type": "address",
3918        "internalType": "address"
3919      }
3920    ],
3921    "outputs": [],
3922    "stateMutability": "nonpayable"
3923  },
3924  {
3925    "type": "function",
3926    "name": "setStateHistory",
3927    "inputs": [
3928      {
3929        "name": "_stateHistoryCommitments",
3930        "type": "tuple[]",
3931        "internalType": "struct LightClient.StateHistoryCommitment[]",
3932        "components": [
3933          {
3934            "name": "l1BlockHeight",
3935            "type": "uint64",
3936            "internalType": "uint64"
3937          },
3938          {
3939            "name": "l1BlockTimestamp",
3940            "type": "uint64",
3941            "internalType": "uint64"
3942          },
3943          {
3944            "name": "hotShotBlockHeight",
3945            "type": "uint64",
3946            "internalType": "uint64"
3947          },
3948          {
3949            "name": "hotShotBlockCommRoot",
3950            "type": "uint256",
3951            "internalType": "BN254.ScalarField"
3952          }
3953        ]
3954      }
3955    ],
3956    "outputs": [],
3957    "stateMutability": "nonpayable"
3958  },
3959  {
3960    "type": "function",
3961    "name": "setstateHistoryRetentionPeriod",
3962    "inputs": [
3963      {
3964        "name": "historySeconds",
3965        "type": "uint32",
3966        "internalType": "uint32"
3967      }
3968    ],
3969    "outputs": [],
3970    "stateMutability": "nonpayable"
3971  },
3972  {
3973    "type": "function",
3974    "name": "stateHistoryCommitments",
3975    "inputs": [
3976      {
3977        "name": "",
3978        "type": "uint256",
3979        "internalType": "uint256"
3980      }
3981    ],
3982    "outputs": [
3983      {
3984        "name": "l1BlockHeight",
3985        "type": "uint64",
3986        "internalType": "uint64"
3987      },
3988      {
3989        "name": "l1BlockTimestamp",
3990        "type": "uint64",
3991        "internalType": "uint64"
3992      },
3993      {
3994        "name": "hotShotBlockHeight",
3995        "type": "uint64",
3996        "internalType": "uint64"
3997      },
3998      {
3999        "name": "hotShotBlockCommRoot",
4000        "type": "uint256",
4001        "internalType": "BN254.ScalarField"
4002      }
4003    ],
4004    "stateMutability": "view"
4005  },
4006  {
4007    "type": "function",
4008    "name": "stateHistoryFirstIndex",
4009    "inputs": [],
4010    "outputs": [
4011      {
4012        "name": "",
4013        "type": "uint64",
4014        "internalType": "uint64"
4015      }
4016    ],
4017    "stateMutability": "view"
4018  },
4019  {
4020    "type": "function",
4021    "name": "stateHistoryRetentionPeriod",
4022    "inputs": [],
4023    "outputs": [
4024      {
4025        "name": "",
4026        "type": "uint32",
4027        "internalType": "uint32"
4028      }
4029    ],
4030    "stateMutability": "view"
4031  },
4032  {
4033    "type": "function",
4034    "name": "transferOwnership",
4035    "inputs": [
4036      {
4037        "name": "newOwner",
4038        "type": "address",
4039        "internalType": "address"
4040      }
4041    ],
4042    "outputs": [],
4043    "stateMutability": "nonpayable"
4044  },
4045  {
4046    "type": "function",
4047    "name": "upgradeToAndCall",
4048    "inputs": [
4049      {
4050        "name": "newImplementation",
4051        "type": "address",
4052        "internalType": "address"
4053      },
4054      {
4055        "name": "data",
4056        "type": "bytes",
4057        "internalType": "bytes"
4058      }
4059    ],
4060    "outputs": [],
4061    "stateMutability": "payable"
4062  },
4063  {
4064    "type": "event",
4065    "name": "Initialized",
4066    "inputs": [
4067      {
4068        "name": "version",
4069        "type": "uint64",
4070        "indexed": false,
4071        "internalType": "uint64"
4072      }
4073    ],
4074    "anonymous": false
4075  },
4076  {
4077    "type": "event",
4078    "name": "NewState",
4079    "inputs": [
4080      {
4081        "name": "viewNum",
4082        "type": "uint64",
4083        "indexed": true,
4084        "internalType": "uint64"
4085      },
4086      {
4087        "name": "blockHeight",
4088        "type": "uint64",
4089        "indexed": true,
4090        "internalType": "uint64"
4091      },
4092      {
4093        "name": "blockCommRoot",
4094        "type": "uint256",
4095        "indexed": false,
4096        "internalType": "BN254.ScalarField"
4097      }
4098    ],
4099    "anonymous": false
4100  },
4101  {
4102    "type": "event",
4103    "name": "OwnershipTransferred",
4104    "inputs": [
4105      {
4106        "name": "previousOwner",
4107        "type": "address",
4108        "indexed": true,
4109        "internalType": "address"
4110      },
4111      {
4112        "name": "newOwner",
4113        "type": "address",
4114        "indexed": true,
4115        "internalType": "address"
4116      }
4117    ],
4118    "anonymous": false
4119  },
4120  {
4121    "type": "event",
4122    "name": "PermissionedProverNotRequired",
4123    "inputs": [],
4124    "anonymous": false
4125  },
4126  {
4127    "type": "event",
4128    "name": "PermissionedProverRequired",
4129    "inputs": [
4130      {
4131        "name": "permissionedProver",
4132        "type": "address",
4133        "indexed": false,
4134        "internalType": "address"
4135      }
4136    ],
4137    "anonymous": false
4138  },
4139  {
4140    "type": "event",
4141    "name": "Upgrade",
4142    "inputs": [
4143      {
4144        "name": "implementation",
4145        "type": "address",
4146        "indexed": false,
4147        "internalType": "address"
4148      }
4149    ],
4150    "anonymous": false
4151  },
4152  {
4153    "type": "event",
4154    "name": "Upgraded",
4155    "inputs": [
4156      {
4157        "name": "implementation",
4158        "type": "address",
4159        "indexed": true,
4160        "internalType": "address"
4161      }
4162    ],
4163    "anonymous": false
4164  },
4165  {
4166    "type": "error",
4167    "name": "AddressEmptyCode",
4168    "inputs": [
4169      {
4170        "name": "target",
4171        "type": "address",
4172        "internalType": "address"
4173      }
4174    ]
4175  },
4176  {
4177    "type": "error",
4178    "name": "ERC1967InvalidImplementation",
4179    "inputs": [
4180      {
4181        "name": "implementation",
4182        "type": "address",
4183        "internalType": "address"
4184      }
4185    ]
4186  },
4187  {
4188    "type": "error",
4189    "name": "ERC1967NonPayable",
4190    "inputs": []
4191  },
4192  {
4193    "type": "error",
4194    "name": "FailedInnerCall",
4195    "inputs": []
4196  },
4197  {
4198    "type": "error",
4199    "name": "InsufficientSnapshotHistory",
4200    "inputs": []
4201  },
4202  {
4203    "type": "error",
4204    "name": "InvalidAddress",
4205    "inputs": []
4206  },
4207  {
4208    "type": "error",
4209    "name": "InvalidArgs",
4210    "inputs": []
4211  },
4212  {
4213    "type": "error",
4214    "name": "InvalidHotShotBlockForCommitmentCheck",
4215    "inputs": []
4216  },
4217  {
4218    "type": "error",
4219    "name": "InvalidInitialization",
4220    "inputs": []
4221  },
4222  {
4223    "type": "error",
4224    "name": "InvalidMaxStateHistory",
4225    "inputs": []
4226  },
4227  {
4228    "type": "error",
4229    "name": "InvalidProof",
4230    "inputs": []
4231  },
4232  {
4233    "type": "error",
4234    "name": "NoChangeRequired",
4235    "inputs": []
4236  },
4237  {
4238    "type": "error",
4239    "name": "NotInitializing",
4240    "inputs": []
4241  },
4242  {
4243    "type": "error",
4244    "name": "OutdatedState",
4245    "inputs": []
4246  },
4247  {
4248    "type": "error",
4249    "name": "OwnableInvalidOwner",
4250    "inputs": [
4251      {
4252        "name": "owner",
4253        "type": "address",
4254        "internalType": "address"
4255      }
4256    ]
4257  },
4258  {
4259    "type": "error",
4260    "name": "OwnableUnauthorizedAccount",
4261    "inputs": [
4262      {
4263        "name": "account",
4264        "type": "address",
4265        "internalType": "address"
4266      }
4267    ]
4268  },
4269  {
4270    "type": "error",
4271    "name": "ProverNotPermissioned",
4272    "inputs": []
4273  },
4274  {
4275    "type": "error",
4276    "name": "UUPSUnauthorizedCallContext",
4277    "inputs": []
4278  },
4279  {
4280    "type": "error",
4281    "name": "UUPSUnsupportedProxiableUUID",
4282    "inputs": [
4283      {
4284        "name": "slot",
4285        "type": "bytes32",
4286        "internalType": "bytes32"
4287      }
4288    ]
4289  },
4290  {
4291    "type": "error",
4292    "name": "WrongStakeTableUsed",
4293    "inputs": []
4294  }
4295]
4296```*/
4297#[allow(
4298    non_camel_case_types,
4299    non_snake_case,
4300    clippy::pub_underscore_fields,
4301    clippy::style,
4302    clippy::empty_structs_with_brackets
4303)]
4304pub mod LightClientMock {
4305    use alloy::sol_types as alloy_sol_types;
4306
4307    use super::*;
4308    /// The creation / init bytecode of the contract.
4309    ///
4310    /// ```text
4311    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612eab6100f95f395f81816117b0015281816117d901526119560152612eab5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d83660046121a8565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121c1565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121d8565b348015610293575f5ffd5b506101dd6102a236600461252f565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121c1565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126df565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121c1565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612795565b610b00565b3480156104c1575f5ffd5b506101dd6104d03660046127ae565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612836565b348015610572575f5ffd5b506101dd61058136600461286b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612885565b610cab565b34801561066a575f5ffd5b506101dd6106793660046121a8565b610ce0565b348015610689575f5ffd5b506101dd6106983660046128a5565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ec3565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b61087382826114c8565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b42846115bc565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b6109246117a5565b61092d82611849565b610937828261188a565b5050565b5f61094461194b565b505f516020612e7f5f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611994565b600980545f918291906109e96001836129b1565b815481106109f9576109f96129c4565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a686129c4565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa16129c4565b905f5260205f2090600202016001015460098281548110610ac457610ac46129c4565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c4786611a04565b610c4f611a15565b610c5a898989611a1d565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b49565b610cd7565b81600b5484610cd591906129b1565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611994565b50565b610d2d60095f612128565b5f5b8151811015610937576009828281518110610d4c57610d4c6129c4565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611ec3565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d0d565b5f6114d16107ad565b90506114db612146565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061155a90859085908890600401612bb4565b602060405180830381865af4158015611575573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612dd4565b6115b6576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611631575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115fc576115fc6129c4565b5f91825260209091206002909102015461162690600160401b90046001600160401b031684612df3565b6001600160401b0316115b156116c457600854600980549091600160c01b90046001600160401b031690811061165e5761165e6129c4565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861169e83612e12565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661181f5f516020612e7f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611851610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e4575060408051601f3d908101601f191682019092526118e191810190612e3c565b60015b61190c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e7f5f395f51905f52811461193c57604051632a87526960e21b815260048101829052602401610d0d565b6119468383611ca1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a0c611cf6565b610d1f81611d3f565b6109c2611cf6565b82516001600160401b0316151580611a41575060208301516001600160401b031615155b80611a4e57506020820151155b80611a5b57506040820151155b80611a6857506060820151155b80611a7257508151155b80611a845750610e108163ffffffff16105b80611a9857506301e133808163ffffffff16115b15611ab6576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b5a575080155b80611ba45750600854600980549091600160c01b90046001600160401b0316908110611b8857611b886129c4565b5f9182526020909120600290910201546001600160401b031684105b15611bc25760405163b0b4387760e01b815260040160405180910390fd5b5f8080611bd06001856129b1565b90505b81611c6c57600854600160c01b90046001600160401b03168110611c6c578660098281548110611c0557611c056129c4565b5f9182526020909120600290910201546001600160401b031611611c5a576001915060098181548110611c3a57611c3a6129c4565b5f9182526020909120600290910201546001600160401b03169250611c6c565b80611c6481612e53565b915050611bd3565b81611c8a5760405163b0b4387760e01b815260040160405180910390fd5b85611c9584896129b1565b11979650505050505050565b611caa82611d47565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cee576119468282611daa565b610937611e1c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cf6565b806001600160a01b03163b5f03611d7c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e7f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc69190612e68565b5f60405180830381855af49150503d805f8114611dfe576040519150601f19603f3d011682016040523d82523d5f602084013e611e03565b606091505b5091509150611e13858383611e3b565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e5057611e4b82611e9a565b611e93565b8151158015611e6757506001600160a01b0384163b155b15611e9057604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611eaa5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ef660405180604001604052805f81526020015f81525090565b8152602001611f1660405180604001604052805f81526020015f81525090565b8152602001611f3660405180604001604052805f81526020015f81525090565b8152602001611f5660405180604001604052805f81526020015f81525090565b8152602001611f7660405180604001604052805f81526020015f81525090565b8152602001611f9660405180604001604052805f81526020015f81525090565b8152602001611fb660405180604001604052805f81526020015f81525090565b8152602001611fd660405180604001604052805f81526020015f81525090565b8152602001611ff660405180604001604052805f81526020015f81525090565b815260200161201660405180604001604052805f81526020015f81525090565b815260200161203660405180604001604052805f81526020015f81525090565b815260200161205660405180604001604052805f81526020015f81525090565b815260200161207660405180604001604052805f81526020015f81525090565b815260200161209660405180604001604052805f81526020015f81525090565b81526020016120b660405180604001604052805f81526020015f81525090565b81526020016120d660405180604001604052805f81526020015f81525090565b81526020016120f660405180604001604052805f81526020015f81525090565b815260200161211660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612164565b6040518060e001604052806007906020820280368337509192915050565b5b808211156121895780546001600160c01b03191681555f6001820155600201612165565b5090565b80356001600160a01b03811681146121a3575f5ffd5b919050565b5f602082840312156121b8575f5ffd5b610cd78261218d565b5f602082840312156121d1575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161220a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612410576124106123d9565b60405290565b604051608081016001600160401b0381118282101715612410576124106123d9565b604051601f8201601f191681016001600160401b0381118282101715612460576124606123d9565b604052919050565b80356001600160401b03811681146121a3575f5ffd5b5f6060828403121561248e575f5ffd5b604051606081016001600160401b03811182821017156124b0576124b06123d9565b6040529050806124bf83612468565b81526124cd60208401612468565b6020820152604092830135920191909152919050565b5f604082840312156124f3575f5ffd5b604080519081016001600160401b0381118282101715612515576125156123d9565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612542575f5ffd5b61254c858561247e565b9250610480605f1982011215612560575f5ffd5b506125696123ed565b61257685606086016124e3565b81526125858560a086016124e3565b60208201526125978560e086016124e3565b60408201526125aa8561012086016124e3565b60608201526125bd8561016086016124e3565b60808201526125d0856101a086016124e3565b60a08201526125e3856101e086016124e3565b60c08201526125f68561022086016124e3565b60e08201526126098561026086016124e3565b61010082015261261d856102a086016124e3565b610120820152612631856102e086016124e3565b6101408201526126458561032086016124e3565b6101608201526126598561036086016124e3565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126f0575f5ffd5b6126f98361218d565b915060208301356001600160401b03811115612713575f5ffd5b8301601f81018513612723575f5ffd5b80356001600160401b0381111561273c5761273c6123d9565b61274f601f8201601f1916602001612438565b818152866020838501011115612763575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff811681146121a3575f5ffd5b5f602082840312156127a5575f5ffd5b610cd782612782565b5f5f5f5f8486036101208112156127c3575f5ffd5b6127cd878761247e565b94506080605f19820112156127e0575f5ffd5b506127e9612416565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061281c60e08601612782565b915061282b610100860161218d565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561287b575f5ffd5b610cd7838361247e565b5f5f60408385031215612896575f5ffd5b50508035926020909101359150565b5f602082840312156128b5575f5ffd5b81356001600160401b038111156128ca575f5ffd5b8201601f810184136128da575f5ffd5b80356001600160401b038111156128f3576128f36123d9565b61290260208260051b01612438565b8082825260208201915060208360071b850101925086831115612923575f5ffd5b6020840193505b828410156129935760808488031215612941575f5ffd5b612949612416565b61295285612468565b815261296060208601612468565b602082015261297160408601612468565b604082015260608581013590820152825260809093019260209091019061292a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61299d565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115b65781518452602093840193909101906001016129db565b612a0f82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612be6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612dbe6105008301856129d8565b612dcc6105e08301846129fa565b949350505050565b5f60208284031215612de4575f5ffd5b81518015158114611e93575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61299d565b5f6001600160401b0382166001600160401b038103612e3357612e3361299d565b60010192915050565b5f60208284031215612e4c575f5ffd5b5051919050565b5f81612e6157612e6161299d565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4312    /// ```
4313    #[rustfmt::skip]
4314    #[allow(clippy::all)]
4315    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4316        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa.\xABa\0\xF9_9_\x81\x81a\x17\xB0\x01R\x81\x81a\x17\xD9\x01Ra\x19V\x01Ra.\xAB_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\xA8V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xC1V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xD8V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%/V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xC1V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xDFV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xC1V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'\x95V[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\xAEV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(6V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(kV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(\x85V[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\xA8V[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\xA5V[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xC3V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\xC8V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\xBCV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\xA5V[a\t-\x82a\x18IV[a\t7\x82\x82a\x18\x8AV[PPV[_a\tDa\x19KV[P_Q` a.\x7F_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xCDV[a\t\xC2_a\x19\x94V[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\xB1V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\xC4V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\xC4V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x1A\x04V[a\x0COa\x1A\x15V[a\x0CZ\x89\x89\x89a\x1A\x1DV[\x83\x15a\x0C\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1BIV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\xB1V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19\x94V[PV[a\r-`\t_a!(V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\xC4V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\xC3V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@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\r\rV[_a\x14\xD1a\x07\xADV[\x90Pa\x14\xDBa!FV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15Z\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\xB4V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15uW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x99\x91\x90a-\xD4V[a\x15\xB6W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x161WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xFCWa\x15\xFCa)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16&\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xF3V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xC4W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16^Wa\x16^a)\xC4V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x9E\x83a.\x12V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x18+WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x1F_Q` a.\x7F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18Qa\r\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xE4WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xE1\x91\x81\x01\x90a.<V[`\x01[a\x19\x0CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x81\x14a\x19<W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19F\x83\x83a\x1C\xA1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x0Ca\x1C\xF6V[a\r\x1F\x81a\x1D?V[a\t\xC2a\x1C\xF6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1AAWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1ANWP` \x82\x01Q\x15[\x80a\x1A[WP`@\x82\x01Q\x15[\x80a\x1AhWP``\x82\x01Q\x15[\x80a\x1ArWP\x81Q\x15[\x80a\x1A\x84WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\x98WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\xB6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1BZWP\x80\x15[\x80a\x1B\xA4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1B\x88Wa\x1B\x88a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\xC2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xD0`\x01\x85a)\xB1V[\x90P[\x81a\x1ClW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1ClW\x86`\t\x82\x81T\x81\x10a\x1C\x05Wa\x1C\x05a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1CZW`\x01\x91P`\t\x81\x81T\x81\x10a\x1C:Wa\x1C:a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1ClV[\x80a\x1Cd\x81a.SV[\x91PPa\x1B\xD3V[\x81a\x1C\x8AW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x95\x84\x89a)\xB1V[\x11\x97\x96PPPPPPPV[a\x1C\xAA\x82a\x1DGV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1C\xEEWa\x19F\x82\x82a\x1D\xAAV[a\t7a\x1E\x1CV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xF6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D|W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\xC6\x91\x90a.hV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\x03V[``\x91P[P\x91P\x91Pa\x1E\x13\x85\x83\x83a\x1E;V[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1EPWa\x1EK\x82a\x1E\x9AV[a\x1E\x93V[\x81Q\x15\x80\x15a\x1EgWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1E\x90W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\xAAW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FV`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fv`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a!\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!dV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!\x89W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!eV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\xB8W__\xFD[a\x0C\xD7\x82a!\x8DV[_` \x82\x84\x03\x12\x15a!\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\"\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$`Wa$`a#\xD9V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[_``\x82\x84\x03\x12\x15a$\x8EW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xB0Wa$\xB0a#\xD9V[`@R\x90P\x80a$\xBF\x83a$hV[\x81Ra$\xCD` \x84\x01a$hV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xF3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x15Wa%\x15a#\xD9V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%BW__\xFD[a%L\x85\x85a$~V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%`W__\xFD[Pa%ia#\xEDV[a%v\x85``\x86\x01a$\xE3V[\x81Ra%\x85\x85`\xA0\x86\x01a$\xE3V[` \x82\x01Ra%\x97\x85`\xE0\x86\x01a$\xE3V[`@\x82\x01Ra%\xAA\x85a\x01 \x86\x01a$\xE3V[``\x82\x01Ra%\xBD\x85a\x01`\x86\x01a$\xE3V[`\x80\x82\x01Ra%\xD0\x85a\x01\xA0\x86\x01a$\xE3V[`\xA0\x82\x01Ra%\xE3\x85a\x01\xE0\x86\x01a$\xE3V[`\xC0\x82\x01Ra%\xF6\x85a\x02 \x86\x01a$\xE3V[`\xE0\x82\x01Ra&\t\x85a\x02`\x86\x01a$\xE3V[a\x01\0\x82\x01Ra&\x1D\x85a\x02\xA0\x86\x01a$\xE3V[a\x01 \x82\x01Ra&1\x85a\x02\xE0\x86\x01a$\xE3V[a\x01@\x82\x01Ra&E\x85a\x03 \x86\x01a$\xE3V[a\x01`\x82\x01Ra&Y\x85a\x03`\x86\x01a$\xE3V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xF0W__\xFD[a&\xF9\x83a!\x8DV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'<Wa'<a#\xD9V[a'O`\x1F\x82\x01`\x1F\x19\x16` \x01a$8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\xA3W__\xFD[_` \x82\x84\x03\x12\x15a'\xA5W__\xFD[a\x0C\xD7\x82a'\x82V[____\x84\x86\x03a\x01 \x81\x12\x15a'\xC3W__\xFD[a'\xCD\x87\x87a$~V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xE0W__\xFD[Pa'\xE9a$\x16V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa(\x1C`\xE0\x86\x01a'\x82V[\x91Pa(+a\x01\0\x86\x01a!\x8DV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a({W__\xFD[a\x0C\xD7\x83\x83a$~V[__`@\x83\x85\x03\x12\x15a(\x96W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\xB5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xDAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF3Wa(\xF3a#\xD9V[a)\x02` \x82`\x05\x1B\x01a$8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)#W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)\x93W`\x80\x84\x88\x03\x12\x15a)AW__\xFD[a)Ia$\x16V[a)R\x85a$hV[\x81Ra)`` \x86\x01a$hV[` \x82\x01Ra)q`@\x86\x01a$hV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)*V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\xB6W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xDBV[a*\x0F\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xE6`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra-\xBEa\x05\0\x83\x01\x85a)\xD8V[a-\xCCa\x05\xE0\x83\x01\x84a)\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xE4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1E\x93W__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.3Wa.3a)\x9DV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.LW__\xFD[PQ\x91\x90PV[_\x81a.aWa.aa)\x9DV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4317    );
4318    /// The runtime bytecode of the contract, as deployed on the network.
4319    ///
4320    /// ```text
4321    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d83660046121a8565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121c1565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121d8565b348015610293575f5ffd5b506101dd6102a236600461252f565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121c1565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126df565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121c1565b6109d5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612795565b610b00565b3480156104c1575f5ffd5b506101dd6104d03660046127ae565b610b89565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612836565b348015610572575f5ffd5b506101dd61058136600461286b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612885565b610cab565b34801561066a575f5ffd5b506101dd6106793660046121a8565b610ce0565b348015610689575f5ffd5b506101dd6106983660046128a5565b610d22565b3480156106a8575f5ffd5b50600954610356565b6106b9610dcd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ec3565b6107bd610e28565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611458565b61087382826114c8565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b42846115bc565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b6109246117a5565b61092d82611849565b610937828261188a565b5050565b5f61094461194b565b505f516020612e7f5f395f51905f5290565b61095e610dcd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610dcd565b6109c25f611994565b600980545f918291906109e96001836129b1565b815481106109f9576109f96129c4565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610af9578460098281548110610a6857610a686129c4565b5f918252602090912060029091020154600160801b90046001600160401b03161115610af15760098181548110610aa157610aa16129c4565b905f5260205f2090600202016001015460098281548110610ac457610ac46129c4565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a4c565b5050915091565b610b08610dcd565b610e108163ffffffff161080610b2757506301e133808163ffffffff16115b80610b45575060085463ffffffff600160a01b909104811690821611155b15610b63576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcd5750825b90505f826001600160401b03166001148015610be85750303b155b905081158015610bf6575080155b15610c145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3e57845460ff60401b1916600160401b1785555b610c4786611a04565b610c4f611a15565b610c5a898989611a1d565b8315610ca057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cc657610cc18383611b49565b610cd7565b81600b5484610cd591906129b1565b115b90505b92915050565b610ce8610dcd565b6001600160a01b038116610d1657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d1f81611994565b50565b610d2d60095f612128565b5f5b8151811015610937576009828281518110610d4c57610d4c6129c4565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d2f565b33610dff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d0d565b610e30611ec3565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d0d565b5f6114d16107ad565b90506114db612146565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061155a90859085908890600401612bb4565b602060405180830381865af4158015611575573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115999190612dd4565b6115b6576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611631575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115fc576115fc6129c4565b5f91825260209091206002909102015461162690600160401b90046001600160401b031684612df3565b6001600160401b0316115b156116c457600854600980549091600160c01b90046001600160401b031690811061165e5761165e6129c4565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861169e83612e12565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661181f5f516020612e7f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611851610dcd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118e4575060408051601f3d908101601f191682019092526118e191810190612e3c565b60015b61190c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d0d565b5f516020612e7f5f395f51905f52811461193c57604051632a87526960e21b815260048101829052602401610d0d565b6119468383611ca1565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a0c611cf6565b610d1f81611d3f565b6109c2611cf6565b82516001600160401b0316151580611a41575060208301516001600160401b031615155b80611a4e57506020820151155b80611a5b57506040820151155b80611a6857506060820151155b80611a7257508151155b80611a845750610e108163ffffffff16105b80611a9857506301e133808163ffffffff16115b15611ab6576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611b5a575080155b80611ba45750600854600980549091600160c01b90046001600160401b0316908110611b8857611b886129c4565b5f9182526020909120600290910201546001600160401b031684105b15611bc25760405163b0b4387760e01b815260040160405180910390fd5b5f8080611bd06001856129b1565b90505b81611c6c57600854600160c01b90046001600160401b03168110611c6c578660098281548110611c0557611c056129c4565b5f9182526020909120600290910201546001600160401b031611611c5a576001915060098181548110611c3a57611c3a6129c4565b5f9182526020909120600290910201546001600160401b03169250611c6c565b80611c6481612e53565b915050611bd3565b81611c8a5760405163b0b4387760e01b815260040160405180910390fd5b85611c9584896129b1565b11979650505050505050565b611caa82611d47565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611cee576119468282611daa565b610937611e1c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610ce8611cf6565b806001600160a01b03163b5f03611d7c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d0d565b5f516020612e7f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc69190612e68565b5f60405180830381855af49150503d805f8114611dfe576040519150601f19603f3d011682016040523d82523d5f602084013e611e03565b606091505b5091509150611e13858383611e3b565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e5057611e4b82611e9a565b611e93565b8151158015611e6757506001600160a01b0384163b155b15611e9057604051639996b31560e01b81526001600160a01b0385166004820152602401610d0d565b50805b9392505050565b805115611eaa5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ef660405180604001604052805f81526020015f81525090565b8152602001611f1660405180604001604052805f81526020015f81525090565b8152602001611f3660405180604001604052805f81526020015f81525090565b8152602001611f5660405180604001604052805f81526020015f81525090565b8152602001611f7660405180604001604052805f81526020015f81525090565b8152602001611f9660405180604001604052805f81526020015f81525090565b8152602001611fb660405180604001604052805f81526020015f81525090565b8152602001611fd660405180604001604052805f81526020015f81525090565b8152602001611ff660405180604001604052805f81526020015f81525090565b815260200161201660405180604001604052805f81526020015f81525090565b815260200161203660405180604001604052805f81526020015f81525090565b815260200161205660405180604001604052805f81526020015f81525090565b815260200161207660405180604001604052805f81526020015f81525090565b815260200161209660405180604001604052805f81526020015f81525090565b81526020016120b660405180604001604052805f81526020015f81525090565b81526020016120d660405180604001604052805f81526020015f81525090565b81526020016120f660405180604001604052805f81526020015f81525090565b815260200161211660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d1f9190612164565b6040518060e001604052806007906020820280368337509192915050565b5b808211156121895780546001600160c01b03191681555f6001820155600201612165565b5090565b80356001600160a01b03811681146121a3575f5ffd5b919050565b5f602082840312156121b8575f5ffd5b610cd78261218d565b5f602082840312156121d1575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161220a604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612410576124106123d9565b60405290565b604051608081016001600160401b0381118282101715612410576124106123d9565b604051601f8201601f191681016001600160401b0381118282101715612460576124606123d9565b604052919050565b80356001600160401b03811681146121a3575f5ffd5b5f6060828403121561248e575f5ffd5b604051606081016001600160401b03811182821017156124b0576124b06123d9565b6040529050806124bf83612468565b81526124cd60208401612468565b6020820152604092830135920191909152919050565b5f604082840312156124f3575f5ffd5b604080519081016001600160401b0381118282101715612515576125156123d9565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612542575f5ffd5b61254c858561247e565b9250610480605f1982011215612560575f5ffd5b506125696123ed565b61257685606086016124e3565b81526125858560a086016124e3565b60208201526125978560e086016124e3565b60408201526125aa8561012086016124e3565b60608201526125bd8561016086016124e3565b60808201526125d0856101a086016124e3565b60a08201526125e3856101e086016124e3565b60c08201526125f68561022086016124e3565b60e08201526126098561026086016124e3565b61010082015261261d856102a086016124e3565b610120820152612631856102e086016124e3565b6101408201526126458561032086016124e3565b6101608201526126598561036086016124e3565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126f0575f5ffd5b6126f98361218d565b915060208301356001600160401b03811115612713575f5ffd5b8301601f81018513612723575f5ffd5b80356001600160401b0381111561273c5761273c6123d9565b61274f601f8201601f1916602001612438565b818152866020838501011115612763575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff811681146121a3575f5ffd5b5f602082840312156127a5575f5ffd5b610cd782612782565b5f5f5f5f8486036101208112156127c3575f5ffd5b6127cd878761247e565b94506080605f19820112156127e0575f5ffd5b506127e9612416565b60608681013582526080870135602083015260a0870135604083015260c087013590820152925061281c60e08601612782565b915061282b610100860161218d565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561287b575f5ffd5b610cd7838361247e565b5f5f60408385031215612896575f5ffd5b50508035926020909101359150565b5f602082840312156128b5575f5ffd5b81356001600160401b038111156128ca575f5ffd5b8201601f810184136128da575f5ffd5b80356001600160401b038111156128f3576128f36123d9565b61290260208260051b01612438565b8082825260208201915060208360071b850101925086831115612923575f5ffd5b6020840193505b828410156129935760808488031215612941575f5ffd5b612949612416565b61295285612468565b815261296060208601612468565b602082015261297160408601612468565b604082015260608581013590820152825260809093019260209091019061292a565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cda57610cda61299d565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115b65781518452602093840193909101906001016129db565b612a0f82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612be6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612dbe6105008301856129d8565b612dcc6105e08301846129fa565b949350505050565b5f60208284031215612de4575f5ffd5b81518015158114611e93575f5ffd5b6001600160401b038281168282160390811115610cda57610cda61299d565b5f6001600160401b0382166001600160401b038103612e3357612e3361299d565b60010192915050565b5f60208284031215612e4c575f5ffd5b5051919050565b5f81612e6157612e6161299d565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4322    /// ```
4323    #[rustfmt::skip]
4324    #[allow(clippy::all)]
4325    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4326        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\xA8V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xC1V[a\x07dV[`@Qa\x023\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xD8V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%/V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xC1V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xDFV[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xC1V[a\t\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'\x95V[a\x0B\0V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\xAEV[a\x0B\x89V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(6V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(kV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(\x85V[a\x0C\xABV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\xA8V[a\x0C\xE0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\xA5V[a\r\"V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\x0FW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x07sW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x07\xB5a\x1E\xC3V[a\x07\xBDa\x0E(V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14XV[a\x08s\x82\x82a\x14\xC8V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\xBCV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\xA5V[a\t-\x82a\x18IV[a\t7\x82\x82a\x18\x8AV[PPV[_a\tDa\x19KV[P_Q` a.\x7F_9_Q\x90_R\x90V[a\t^a\r\xCDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\t\xCCa\r\xCDV[a\t\xC2_a\x19\x94V[`\t\x80T_\x91\x82\x91\x90a\t\xE9`\x01\x83a)\xB1V[\x81T\x81\x10a\t\xF9Wa\t\xF9a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\n8W`@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\n\xF9W\x84`\t\x82\x81T\x81\x10a\nhWa\nha)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\n\xF1W`\t\x81\x81T\x81\x10a\n\xA1Wa\n\xA1a)\xC4V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xC4Wa\n\xC4a)\xC4V[\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\nLV[PP\x91P\x91V[a\x0B\x08a\r\xCDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BEWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BcW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x0B\xF6WP\x80\x15[\x15a\x0C\x14W`@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\x0C>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CG\x86a\x1A\x04V[a\x0COa\x1A\x15V[a\x0CZ\x89\x89\x89a\x1A\x1DV[\x83\x15a\x0C\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\nT_\x90`\xFF\x16a\x0C\xC6Wa\x0C\xC1\x83\x83a\x1BIV[a\x0C\xD7V[\x81`\x0BT\x84a\x0C\xD5\x91\x90a)\xB1V[\x11[\x90P[\x92\x91PPV[a\x0C\xE8a\r\xCDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x16W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x1F\x81a\x19\x94V[PV[a\r-`\t_a!(V[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\rLWa\rLa)\xC4V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r/V[3a\r\xFF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\rV[a\x0E0a\x1E\xC3V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@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\r\rV[_a\x14\xD1a\x07\xADV[\x90Pa\x14\xDBa!FV[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15Z\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\xB4V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15uW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\x99\x91\x90a-\xD4V[a\x15\xB6W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x161WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xFCWa\x15\xFCa)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16&\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xF3V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xC4W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16^Wa\x16^a)\xC4V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x16\x9E\x83a.\x12V[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x18+WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x18\x1F_Q` a.\x7F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18Qa\r\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x07YV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x18\xE4WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xE1\x91\x81\x01\x90a.<V[`\x01[a\x19\x0CW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x81\x14a\x19<W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\rV[a\x19F\x83\x83a\x1C\xA1V[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x0Ca\x1C\xF6V[a\r\x1F\x81a\x1D?V[a\t\xC2a\x1C\xF6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1AAWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1ANWP` \x82\x01Q\x15[\x80a\x1A[WP`@\x82\x01Q\x15[\x80a\x1AhWP``\x82\x01Q\x15[\x80a\x1ArWP\x81Q\x15[\x80a\x1A\x84WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\x98WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\xB6W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1BZWP\x80\x15[\x80a\x1B\xA4WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1B\x88Wa\x1B\x88a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B\xC2W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1B\xD0`\x01\x85a)\xB1V[\x90P[\x81a\x1ClW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1ClW\x86`\t\x82\x81T\x81\x10a\x1C\x05Wa\x1C\x05a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1CZW`\x01\x91P`\t\x81\x81T\x81\x10a\x1C:Wa\x1C:a)\xC4V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1ClV[\x80a\x1Cd\x81a.SV[\x91PPa\x1B\xD3V[\x81a\x1C\x8AW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x95\x84\x89a)\xB1V[\x11\x97\x96PPPPPPPV[a\x1C\xAA\x82a\x1DGV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x1C\xEEWa\x19F\x82\x82a\x1D\xAAV[a\t7a\x1E\x1CV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xE8a\x1C\xF6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D|W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\rV[_Q` a.\x7F_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x1D\xC6\x91\x90a.hV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xFEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1E\x03V[``\x91P[P\x91P\x91Pa\x1E\x13\x85\x83\x83a\x1E;V[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1EPWa\x1EK\x82a\x1E\x9AV[a\x1E\x93V[\x81Q\x15\x80\x15a\x1EgWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1E\x90W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\rV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\xAAW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1E\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FV`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fv`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a!\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r\x1F\x91\x90a!dV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!\x89W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!eV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\xB8W__\xFD[a\x0C\xD7\x82a!\x8DV[_` \x82\x84\x03\x12\x15a!\xD1W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\"\n`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x10Wa$\x10a#\xD9V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$`Wa$`a#\xD9V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\xA3W__\xFD[_``\x82\x84\x03\x12\x15a$\x8EW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xB0Wa$\xB0a#\xD9V[`@R\x90P\x80a$\xBF\x83a$hV[\x81Ra$\xCD` \x84\x01a$hV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xF3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x15Wa%\x15a#\xD9V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%BW__\xFD[a%L\x85\x85a$~V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%`W__\xFD[Pa%ia#\xEDV[a%v\x85``\x86\x01a$\xE3V[\x81Ra%\x85\x85`\xA0\x86\x01a$\xE3V[` \x82\x01Ra%\x97\x85`\xE0\x86\x01a$\xE3V[`@\x82\x01Ra%\xAA\x85a\x01 \x86\x01a$\xE3V[``\x82\x01Ra%\xBD\x85a\x01`\x86\x01a$\xE3V[`\x80\x82\x01Ra%\xD0\x85a\x01\xA0\x86\x01a$\xE3V[`\xA0\x82\x01Ra%\xE3\x85a\x01\xE0\x86\x01a$\xE3V[`\xC0\x82\x01Ra%\xF6\x85a\x02 \x86\x01a$\xE3V[`\xE0\x82\x01Ra&\t\x85a\x02`\x86\x01a$\xE3V[a\x01\0\x82\x01Ra&\x1D\x85a\x02\xA0\x86\x01a$\xE3V[a\x01 \x82\x01Ra&1\x85a\x02\xE0\x86\x01a$\xE3V[a\x01@\x82\x01Ra&E\x85a\x03 \x86\x01a$\xE3V[a\x01`\x82\x01Ra&Y\x85a\x03`\x86\x01a$\xE3V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xF0W__\xFD[a&\xF9\x83a!\x8DV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x13W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'#W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'<Wa'<a#\xD9V[a'O`\x1F\x82\x01`\x1F\x19\x16` \x01a$8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'cW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\xA3W__\xFD[_` \x82\x84\x03\x12\x15a'\xA5W__\xFD[a\x0C\xD7\x82a'\x82V[____\x84\x86\x03a\x01 \x81\x12\x15a'\xC3W__\xFD[a'\xCD\x87\x87a$~V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xE0W__\xFD[Pa'\xE9a$\x16V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa(\x1C`\xE0\x86\x01a'\x82V[\x91Pa(+a\x01\0\x86\x01a!\x8DV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a({W__\xFD[a\x0C\xD7\x83\x83a$~V[__`@\x83\x85\x03\x12\x15a(\x96W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\xB5W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xCAW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xDAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xF3Wa(\xF3a#\xD9V[a)\x02` \x82`\x05\x1B\x01a$8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)#W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)\x93W`\x80\x84\x88\x03\x12\x15a)AW__\xFD[a)Ia$\x16V[a)R\x85a$hV[\x81Ra)`` \x86\x01a$hV[` \x82\x01Ra)q`@\x86\x01a$hV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)*V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\xB6W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xDBV[a*\x0F\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xE6`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra-\xBEa\x05\0\x83\x01\x85a)\xD8V[a-\xCCa\x05\xE0\x83\x01\x84a)\xFAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xE4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1E\x93W__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xDAWa\x0C\xDAa)\x9DV[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.3Wa.3a)\x9DV[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.LW__\xFD[PQ\x91\x90PV[_\x81a.aWa.aa)\x9DV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4327    );
4328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4329    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4330    ```solidity
4331    error AddressEmptyCode(address target);
4332    ```*/
4333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4334    #[derive(Clone)]
4335    pub struct AddressEmptyCode {
4336        #[allow(missing_docs)]
4337        pub target: alloy::sol_types::private::Address,
4338    }
4339    #[allow(
4340        non_camel_case_types,
4341        non_snake_case,
4342        clippy::pub_underscore_fields,
4343        clippy::style
4344    )]
4345    const _: () = {
4346        use alloy::sol_types as alloy_sol_types;
4347        #[doc(hidden)]
4348        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4349        #[doc(hidden)]
4350        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4351        #[cfg(test)]
4352        #[allow(dead_code, unreachable_patterns)]
4353        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4354            match _t {
4355                alloy_sol_types::private::AssertTypeEq::<
4356                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4357                >(_) => {},
4358            }
4359        }
4360        #[automatically_derived]
4361        #[doc(hidden)]
4362        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4363            fn from(value: AddressEmptyCode) -> Self {
4364                (value.target,)
4365            }
4366        }
4367        #[automatically_derived]
4368        #[doc(hidden)]
4369        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4370            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4371                Self { target: tuple.0 }
4372            }
4373        }
4374        #[automatically_derived]
4375        impl alloy_sol_types::SolError for AddressEmptyCode {
4376            type Parameters<'a> = UnderlyingSolTuple<'a>;
4377            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4378            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4379            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4380            #[inline]
4381            fn new<'a>(
4382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4383            ) -> Self {
4384                tuple.into()
4385            }
4386            #[inline]
4387            fn tokenize(&self) -> Self::Token<'_> {
4388                (
4389                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4390                        &self.target,
4391                    ),
4392                )
4393            }
4394        }
4395    };
4396    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4397    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4398    ```solidity
4399    error ERC1967InvalidImplementation(address implementation);
4400    ```*/
4401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4402    #[derive(Clone)]
4403    pub struct ERC1967InvalidImplementation {
4404        #[allow(missing_docs)]
4405        pub implementation: alloy::sol_types::private::Address,
4406    }
4407    #[allow(
4408        non_camel_case_types,
4409        non_snake_case,
4410        clippy::pub_underscore_fields,
4411        clippy::style
4412    )]
4413    const _: () = {
4414        use alloy::sol_types as alloy_sol_types;
4415        #[doc(hidden)]
4416        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4417        #[doc(hidden)]
4418        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4419        #[cfg(test)]
4420        #[allow(dead_code, unreachable_patterns)]
4421        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4422            match _t {
4423                alloy_sol_types::private::AssertTypeEq::<
4424                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4425                >(_) => {},
4426            }
4427        }
4428        #[automatically_derived]
4429        #[doc(hidden)]
4430        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
4431            fn from(value: ERC1967InvalidImplementation) -> Self {
4432                (value.implementation,)
4433            }
4434        }
4435        #[automatically_derived]
4436        #[doc(hidden)]
4437        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
4438            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4439                Self {
4440                    implementation: tuple.0,
4441                }
4442            }
4443        }
4444        #[automatically_derived]
4445        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4446            type Parameters<'a> = UnderlyingSolTuple<'a>;
4447            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4448            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4449            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4450            #[inline]
4451            fn new<'a>(
4452                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4453            ) -> Self {
4454                tuple.into()
4455            }
4456            #[inline]
4457            fn tokenize(&self) -> Self::Token<'_> {
4458                (
4459                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4460                        &self.implementation,
4461                    ),
4462                )
4463            }
4464        }
4465    };
4466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4467    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4468    ```solidity
4469    error ERC1967NonPayable();
4470    ```*/
4471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4472    #[derive(Clone)]
4473    pub struct ERC1967NonPayable {}
4474    #[allow(
4475        non_camel_case_types,
4476        non_snake_case,
4477        clippy::pub_underscore_fields,
4478        clippy::style
4479    )]
4480    const _: () = {
4481        use alloy::sol_types as alloy_sol_types;
4482        #[doc(hidden)]
4483        type UnderlyingSolTuple<'a> = ();
4484        #[doc(hidden)]
4485        type UnderlyingRustTuple<'a> = ();
4486        #[cfg(test)]
4487        #[allow(dead_code, unreachable_patterns)]
4488        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4489            match _t {
4490                alloy_sol_types::private::AssertTypeEq::<
4491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4492                >(_) => {},
4493            }
4494        }
4495        #[automatically_derived]
4496        #[doc(hidden)]
4497        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4498            fn from(value: ERC1967NonPayable) -> Self {
4499                ()
4500            }
4501        }
4502        #[automatically_derived]
4503        #[doc(hidden)]
4504        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4505            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4506                Self {}
4507            }
4508        }
4509        #[automatically_derived]
4510        impl alloy_sol_types::SolError for ERC1967NonPayable {
4511            type Parameters<'a> = UnderlyingSolTuple<'a>;
4512            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4513            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4514            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4515            #[inline]
4516            fn new<'a>(
4517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4518            ) -> Self {
4519                tuple.into()
4520            }
4521            #[inline]
4522            fn tokenize(&self) -> Self::Token<'_> {
4523                ()
4524            }
4525        }
4526    };
4527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4528    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4529    ```solidity
4530    error FailedInnerCall();
4531    ```*/
4532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4533    #[derive(Clone)]
4534    pub struct FailedInnerCall {}
4535    #[allow(
4536        non_camel_case_types,
4537        non_snake_case,
4538        clippy::pub_underscore_fields,
4539        clippy::style
4540    )]
4541    const _: () = {
4542        use alloy::sol_types as alloy_sol_types;
4543        #[doc(hidden)]
4544        type UnderlyingSolTuple<'a> = ();
4545        #[doc(hidden)]
4546        type UnderlyingRustTuple<'a> = ();
4547        #[cfg(test)]
4548        #[allow(dead_code, unreachable_patterns)]
4549        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4550            match _t {
4551                alloy_sol_types::private::AssertTypeEq::<
4552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4553                >(_) => {},
4554            }
4555        }
4556        #[automatically_derived]
4557        #[doc(hidden)]
4558        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4559            fn from(value: FailedInnerCall) -> Self {
4560                ()
4561            }
4562        }
4563        #[automatically_derived]
4564        #[doc(hidden)]
4565        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4566            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4567                Self {}
4568            }
4569        }
4570        #[automatically_derived]
4571        impl alloy_sol_types::SolError for FailedInnerCall {
4572            type Parameters<'a> = UnderlyingSolTuple<'a>;
4573            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4574            const SIGNATURE: &'static str = "FailedInnerCall()";
4575            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4576            #[inline]
4577            fn new<'a>(
4578                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4579            ) -> Self {
4580                tuple.into()
4581            }
4582            #[inline]
4583            fn tokenize(&self) -> Self::Token<'_> {
4584                ()
4585            }
4586        }
4587    };
4588    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4589    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4590    ```solidity
4591    error InsufficientSnapshotHistory();
4592    ```*/
4593    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4594    #[derive(Clone)]
4595    pub struct InsufficientSnapshotHistory {}
4596    #[allow(
4597        non_camel_case_types,
4598        non_snake_case,
4599        clippy::pub_underscore_fields,
4600        clippy::style
4601    )]
4602    const _: () = {
4603        use alloy::sol_types as alloy_sol_types;
4604        #[doc(hidden)]
4605        type UnderlyingSolTuple<'a> = ();
4606        #[doc(hidden)]
4607        type UnderlyingRustTuple<'a> = ();
4608        #[cfg(test)]
4609        #[allow(dead_code, unreachable_patterns)]
4610        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4611            match _t {
4612                alloy_sol_types::private::AssertTypeEq::<
4613                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4614                >(_) => {},
4615            }
4616        }
4617        #[automatically_derived]
4618        #[doc(hidden)]
4619        impl ::core::convert::From<InsufficientSnapshotHistory> for UnderlyingRustTuple<'_> {
4620            fn from(value: InsufficientSnapshotHistory) -> Self {
4621                ()
4622            }
4623        }
4624        #[automatically_derived]
4625        #[doc(hidden)]
4626        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientSnapshotHistory {
4627            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4628                Self {}
4629            }
4630        }
4631        #[automatically_derived]
4632        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4633            type Parameters<'a> = UnderlyingSolTuple<'a>;
4634            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4635            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4636            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4637            #[inline]
4638            fn new<'a>(
4639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4640            ) -> Self {
4641                tuple.into()
4642            }
4643            #[inline]
4644            fn tokenize(&self) -> Self::Token<'_> {
4645                ()
4646            }
4647        }
4648    };
4649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4650    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4651    ```solidity
4652    error InvalidAddress();
4653    ```*/
4654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4655    #[derive(Clone)]
4656    pub struct InvalidAddress {}
4657    #[allow(
4658        non_camel_case_types,
4659        non_snake_case,
4660        clippy::pub_underscore_fields,
4661        clippy::style
4662    )]
4663    const _: () = {
4664        use alloy::sol_types as alloy_sol_types;
4665        #[doc(hidden)]
4666        type UnderlyingSolTuple<'a> = ();
4667        #[doc(hidden)]
4668        type UnderlyingRustTuple<'a> = ();
4669        #[cfg(test)]
4670        #[allow(dead_code, unreachable_patterns)]
4671        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4672            match _t {
4673                alloy_sol_types::private::AssertTypeEq::<
4674                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4675                >(_) => {},
4676            }
4677        }
4678        #[automatically_derived]
4679        #[doc(hidden)]
4680        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4681            fn from(value: InvalidAddress) -> Self {
4682                ()
4683            }
4684        }
4685        #[automatically_derived]
4686        #[doc(hidden)]
4687        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4688            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4689                Self {}
4690            }
4691        }
4692        #[automatically_derived]
4693        impl alloy_sol_types::SolError for InvalidAddress {
4694            type Parameters<'a> = UnderlyingSolTuple<'a>;
4695            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4696            const SIGNATURE: &'static str = "InvalidAddress()";
4697            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4698            #[inline]
4699            fn new<'a>(
4700                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4701            ) -> Self {
4702                tuple.into()
4703            }
4704            #[inline]
4705            fn tokenize(&self) -> Self::Token<'_> {
4706                ()
4707            }
4708        }
4709    };
4710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4711    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4712    ```solidity
4713    error InvalidArgs();
4714    ```*/
4715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4716    #[derive(Clone)]
4717    pub struct InvalidArgs {}
4718    #[allow(
4719        non_camel_case_types,
4720        non_snake_case,
4721        clippy::pub_underscore_fields,
4722        clippy::style
4723    )]
4724    const _: () = {
4725        use alloy::sol_types as alloy_sol_types;
4726        #[doc(hidden)]
4727        type UnderlyingSolTuple<'a> = ();
4728        #[doc(hidden)]
4729        type UnderlyingRustTuple<'a> = ();
4730        #[cfg(test)]
4731        #[allow(dead_code, unreachable_patterns)]
4732        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4733            match _t {
4734                alloy_sol_types::private::AssertTypeEq::<
4735                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4736                >(_) => {},
4737            }
4738        }
4739        #[automatically_derived]
4740        #[doc(hidden)]
4741        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4742            fn from(value: InvalidArgs) -> Self {
4743                ()
4744            }
4745        }
4746        #[automatically_derived]
4747        #[doc(hidden)]
4748        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4749            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4750                Self {}
4751            }
4752        }
4753        #[automatically_derived]
4754        impl alloy_sol_types::SolError for InvalidArgs {
4755            type Parameters<'a> = UnderlyingSolTuple<'a>;
4756            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4757            const SIGNATURE: &'static str = "InvalidArgs()";
4758            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4759            #[inline]
4760            fn new<'a>(
4761                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4762            ) -> Self {
4763                tuple.into()
4764            }
4765            #[inline]
4766            fn tokenize(&self) -> Self::Token<'_> {
4767                ()
4768            }
4769        }
4770    };
4771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4772    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4773    ```solidity
4774    error InvalidHotShotBlockForCommitmentCheck();
4775    ```*/
4776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4777    #[derive(Clone)]
4778    pub struct InvalidHotShotBlockForCommitmentCheck {}
4779    #[allow(
4780        non_camel_case_types,
4781        non_snake_case,
4782        clippy::pub_underscore_fields,
4783        clippy::style
4784    )]
4785    const _: () = {
4786        use alloy::sol_types as alloy_sol_types;
4787        #[doc(hidden)]
4788        type UnderlyingSolTuple<'a> = ();
4789        #[doc(hidden)]
4790        type UnderlyingRustTuple<'a> = ();
4791        #[cfg(test)]
4792        #[allow(dead_code, unreachable_patterns)]
4793        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4794            match _t {
4795                alloy_sol_types::private::AssertTypeEq::<
4796                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4797                >(_) => {},
4798            }
4799        }
4800        #[automatically_derived]
4801        #[doc(hidden)]
4802        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck> for UnderlyingRustTuple<'_> {
4803            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4804                ()
4805            }
4806        }
4807        #[automatically_derived]
4808        #[doc(hidden)]
4809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidHotShotBlockForCommitmentCheck {
4810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4811                Self {}
4812            }
4813        }
4814        #[automatically_derived]
4815        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4816            type Parameters<'a> = UnderlyingSolTuple<'a>;
4817            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4818            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4819            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4820            #[inline]
4821            fn new<'a>(
4822                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4823            ) -> Self {
4824                tuple.into()
4825            }
4826            #[inline]
4827            fn tokenize(&self) -> Self::Token<'_> {
4828                ()
4829            }
4830        }
4831    };
4832    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4833    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4834    ```solidity
4835    error InvalidInitialization();
4836    ```*/
4837    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4838    #[derive(Clone)]
4839    pub struct InvalidInitialization {}
4840    #[allow(
4841        non_camel_case_types,
4842        non_snake_case,
4843        clippy::pub_underscore_fields,
4844        clippy::style
4845    )]
4846    const _: () = {
4847        use alloy::sol_types as alloy_sol_types;
4848        #[doc(hidden)]
4849        type UnderlyingSolTuple<'a> = ();
4850        #[doc(hidden)]
4851        type UnderlyingRustTuple<'a> = ();
4852        #[cfg(test)]
4853        #[allow(dead_code, unreachable_patterns)]
4854        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4855            match _t {
4856                alloy_sol_types::private::AssertTypeEq::<
4857                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4858                >(_) => {},
4859            }
4860        }
4861        #[automatically_derived]
4862        #[doc(hidden)]
4863        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4864            fn from(value: InvalidInitialization) -> Self {
4865                ()
4866            }
4867        }
4868        #[automatically_derived]
4869        #[doc(hidden)]
4870        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4871            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4872                Self {}
4873            }
4874        }
4875        #[automatically_derived]
4876        impl alloy_sol_types::SolError for InvalidInitialization {
4877            type Parameters<'a> = UnderlyingSolTuple<'a>;
4878            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4879            const SIGNATURE: &'static str = "InvalidInitialization()";
4880            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4881            #[inline]
4882            fn new<'a>(
4883                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4884            ) -> Self {
4885                tuple.into()
4886            }
4887            #[inline]
4888            fn tokenize(&self) -> Self::Token<'_> {
4889                ()
4890            }
4891        }
4892    };
4893    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4894    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4895    ```solidity
4896    error InvalidMaxStateHistory();
4897    ```*/
4898    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4899    #[derive(Clone)]
4900    pub struct InvalidMaxStateHistory {}
4901    #[allow(
4902        non_camel_case_types,
4903        non_snake_case,
4904        clippy::pub_underscore_fields,
4905        clippy::style
4906    )]
4907    const _: () = {
4908        use alloy::sol_types as alloy_sol_types;
4909        #[doc(hidden)]
4910        type UnderlyingSolTuple<'a> = ();
4911        #[doc(hidden)]
4912        type UnderlyingRustTuple<'a> = ();
4913        #[cfg(test)]
4914        #[allow(dead_code, unreachable_patterns)]
4915        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4916            match _t {
4917                alloy_sol_types::private::AssertTypeEq::<
4918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4919                >(_) => {},
4920            }
4921        }
4922        #[automatically_derived]
4923        #[doc(hidden)]
4924        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4925            fn from(value: InvalidMaxStateHistory) -> Self {
4926                ()
4927            }
4928        }
4929        #[automatically_derived]
4930        #[doc(hidden)]
4931        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4932            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4933                Self {}
4934            }
4935        }
4936        #[automatically_derived]
4937        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4938            type Parameters<'a> = UnderlyingSolTuple<'a>;
4939            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4940            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4941            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4942            #[inline]
4943            fn new<'a>(
4944                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4945            ) -> Self {
4946                tuple.into()
4947            }
4948            #[inline]
4949            fn tokenize(&self) -> Self::Token<'_> {
4950                ()
4951            }
4952        }
4953    };
4954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4955    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
4956    ```solidity
4957    error InvalidProof();
4958    ```*/
4959    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4960    #[derive(Clone)]
4961    pub struct InvalidProof {}
4962    #[allow(
4963        non_camel_case_types,
4964        non_snake_case,
4965        clippy::pub_underscore_fields,
4966        clippy::style
4967    )]
4968    const _: () = {
4969        use alloy::sol_types as alloy_sol_types;
4970        #[doc(hidden)]
4971        type UnderlyingSolTuple<'a> = ();
4972        #[doc(hidden)]
4973        type UnderlyingRustTuple<'a> = ();
4974        #[cfg(test)]
4975        #[allow(dead_code, unreachable_patterns)]
4976        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4977            match _t {
4978                alloy_sol_types::private::AssertTypeEq::<
4979                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4980                >(_) => {},
4981            }
4982        }
4983        #[automatically_derived]
4984        #[doc(hidden)]
4985        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
4986            fn from(value: InvalidProof) -> Self {
4987                ()
4988            }
4989        }
4990        #[automatically_derived]
4991        #[doc(hidden)]
4992        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
4993            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4994                Self {}
4995            }
4996        }
4997        #[automatically_derived]
4998        impl alloy_sol_types::SolError for InvalidProof {
4999            type Parameters<'a> = UnderlyingSolTuple<'a>;
5000            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5001            const SIGNATURE: &'static str = "InvalidProof()";
5002            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5003            #[inline]
5004            fn new<'a>(
5005                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5006            ) -> Self {
5007                tuple.into()
5008            }
5009            #[inline]
5010            fn tokenize(&self) -> Self::Token<'_> {
5011                ()
5012            }
5013        }
5014    };
5015    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5016    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5017    ```solidity
5018    error NoChangeRequired();
5019    ```*/
5020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5021    #[derive(Clone)]
5022    pub struct NoChangeRequired {}
5023    #[allow(
5024        non_camel_case_types,
5025        non_snake_case,
5026        clippy::pub_underscore_fields,
5027        clippy::style
5028    )]
5029    const _: () = {
5030        use alloy::sol_types as alloy_sol_types;
5031        #[doc(hidden)]
5032        type UnderlyingSolTuple<'a> = ();
5033        #[doc(hidden)]
5034        type UnderlyingRustTuple<'a> = ();
5035        #[cfg(test)]
5036        #[allow(dead_code, unreachable_patterns)]
5037        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5038            match _t {
5039                alloy_sol_types::private::AssertTypeEq::<
5040                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5041                >(_) => {},
5042            }
5043        }
5044        #[automatically_derived]
5045        #[doc(hidden)]
5046        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5047            fn from(value: NoChangeRequired) -> Self {
5048                ()
5049            }
5050        }
5051        #[automatically_derived]
5052        #[doc(hidden)]
5053        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5054            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5055                Self {}
5056            }
5057        }
5058        #[automatically_derived]
5059        impl alloy_sol_types::SolError for NoChangeRequired {
5060            type Parameters<'a> = UnderlyingSolTuple<'a>;
5061            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5062            const SIGNATURE: &'static str = "NoChangeRequired()";
5063            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5064            #[inline]
5065            fn new<'a>(
5066                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5067            ) -> Self {
5068                tuple.into()
5069            }
5070            #[inline]
5071            fn tokenize(&self) -> Self::Token<'_> {
5072                ()
5073            }
5074        }
5075    };
5076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5077    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5078    ```solidity
5079    error NotInitializing();
5080    ```*/
5081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5082    #[derive(Clone)]
5083    pub struct NotInitializing {}
5084    #[allow(
5085        non_camel_case_types,
5086        non_snake_case,
5087        clippy::pub_underscore_fields,
5088        clippy::style
5089    )]
5090    const _: () = {
5091        use alloy::sol_types as alloy_sol_types;
5092        #[doc(hidden)]
5093        type UnderlyingSolTuple<'a> = ();
5094        #[doc(hidden)]
5095        type UnderlyingRustTuple<'a> = ();
5096        #[cfg(test)]
5097        #[allow(dead_code, unreachable_patterns)]
5098        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5099            match _t {
5100                alloy_sol_types::private::AssertTypeEq::<
5101                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5102                >(_) => {},
5103            }
5104        }
5105        #[automatically_derived]
5106        #[doc(hidden)]
5107        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5108            fn from(value: NotInitializing) -> Self {
5109                ()
5110            }
5111        }
5112        #[automatically_derived]
5113        #[doc(hidden)]
5114        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5115            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5116                Self {}
5117            }
5118        }
5119        #[automatically_derived]
5120        impl alloy_sol_types::SolError for NotInitializing {
5121            type Parameters<'a> = UnderlyingSolTuple<'a>;
5122            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5123            const SIGNATURE: &'static str = "NotInitializing()";
5124            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5125            #[inline]
5126            fn new<'a>(
5127                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5128            ) -> Self {
5129                tuple.into()
5130            }
5131            #[inline]
5132            fn tokenize(&self) -> Self::Token<'_> {
5133                ()
5134            }
5135        }
5136    };
5137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5138    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5139    ```solidity
5140    error OutdatedState();
5141    ```*/
5142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5143    #[derive(Clone)]
5144    pub struct OutdatedState {}
5145    #[allow(
5146        non_camel_case_types,
5147        non_snake_case,
5148        clippy::pub_underscore_fields,
5149        clippy::style
5150    )]
5151    const _: () = {
5152        use alloy::sol_types as alloy_sol_types;
5153        #[doc(hidden)]
5154        type UnderlyingSolTuple<'a> = ();
5155        #[doc(hidden)]
5156        type UnderlyingRustTuple<'a> = ();
5157        #[cfg(test)]
5158        #[allow(dead_code, unreachable_patterns)]
5159        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5160            match _t {
5161                alloy_sol_types::private::AssertTypeEq::<
5162                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5163                >(_) => {},
5164            }
5165        }
5166        #[automatically_derived]
5167        #[doc(hidden)]
5168        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5169            fn from(value: OutdatedState) -> Self {
5170                ()
5171            }
5172        }
5173        #[automatically_derived]
5174        #[doc(hidden)]
5175        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5176            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5177                Self {}
5178            }
5179        }
5180        #[automatically_derived]
5181        impl alloy_sol_types::SolError for OutdatedState {
5182            type Parameters<'a> = UnderlyingSolTuple<'a>;
5183            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5184            const SIGNATURE: &'static str = "OutdatedState()";
5185            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5186            #[inline]
5187            fn new<'a>(
5188                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5189            ) -> Self {
5190                tuple.into()
5191            }
5192            #[inline]
5193            fn tokenize(&self) -> Self::Token<'_> {
5194                ()
5195            }
5196        }
5197    };
5198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5199    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5200    ```solidity
5201    error OwnableInvalidOwner(address owner);
5202    ```*/
5203    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5204    #[derive(Clone)]
5205    pub struct OwnableInvalidOwner {
5206        #[allow(missing_docs)]
5207        pub owner: alloy::sol_types::private::Address,
5208    }
5209    #[allow(
5210        non_camel_case_types,
5211        non_snake_case,
5212        clippy::pub_underscore_fields,
5213        clippy::style
5214    )]
5215    const _: () = {
5216        use alloy::sol_types as alloy_sol_types;
5217        #[doc(hidden)]
5218        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5219        #[doc(hidden)]
5220        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5221        #[cfg(test)]
5222        #[allow(dead_code, unreachable_patterns)]
5223        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5224            match _t {
5225                alloy_sol_types::private::AssertTypeEq::<
5226                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5227                >(_) => {},
5228            }
5229        }
5230        #[automatically_derived]
5231        #[doc(hidden)]
5232        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5233            fn from(value: OwnableInvalidOwner) -> Self {
5234                (value.owner,)
5235            }
5236        }
5237        #[automatically_derived]
5238        #[doc(hidden)]
5239        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5240            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5241                Self { owner: tuple.0 }
5242            }
5243        }
5244        #[automatically_derived]
5245        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5246            type Parameters<'a> = UnderlyingSolTuple<'a>;
5247            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5248            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5249            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5250            #[inline]
5251            fn new<'a>(
5252                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5253            ) -> Self {
5254                tuple.into()
5255            }
5256            #[inline]
5257            fn tokenize(&self) -> Self::Token<'_> {
5258                (
5259                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5260                        &self.owner,
5261                    ),
5262                )
5263            }
5264        }
5265    };
5266    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5267    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5268    ```solidity
5269    error OwnableUnauthorizedAccount(address account);
5270    ```*/
5271    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5272    #[derive(Clone)]
5273    pub struct OwnableUnauthorizedAccount {
5274        #[allow(missing_docs)]
5275        pub account: alloy::sol_types::private::Address,
5276    }
5277    #[allow(
5278        non_camel_case_types,
5279        non_snake_case,
5280        clippy::pub_underscore_fields,
5281        clippy::style
5282    )]
5283    const _: () = {
5284        use alloy::sol_types as alloy_sol_types;
5285        #[doc(hidden)]
5286        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5287        #[doc(hidden)]
5288        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5289        #[cfg(test)]
5290        #[allow(dead_code, unreachable_patterns)]
5291        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5292            match _t {
5293                alloy_sol_types::private::AssertTypeEq::<
5294                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5295                >(_) => {},
5296            }
5297        }
5298        #[automatically_derived]
5299        #[doc(hidden)]
5300        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
5301            fn from(value: OwnableUnauthorizedAccount) -> Self {
5302                (value.account,)
5303            }
5304        }
5305        #[automatically_derived]
5306        #[doc(hidden)]
5307        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
5308            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5309                Self { account: tuple.0 }
5310            }
5311        }
5312        #[automatically_derived]
5313        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5314            type Parameters<'a> = UnderlyingSolTuple<'a>;
5315            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5316            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5317            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5318            #[inline]
5319            fn new<'a>(
5320                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5321            ) -> Self {
5322                tuple.into()
5323            }
5324            #[inline]
5325            fn tokenize(&self) -> Self::Token<'_> {
5326                (
5327                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5328                        &self.account,
5329                    ),
5330                )
5331            }
5332        }
5333    };
5334    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5335    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5336    ```solidity
5337    error ProverNotPermissioned();
5338    ```*/
5339    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5340    #[derive(Clone)]
5341    pub struct ProverNotPermissioned {}
5342    #[allow(
5343        non_camel_case_types,
5344        non_snake_case,
5345        clippy::pub_underscore_fields,
5346        clippy::style
5347    )]
5348    const _: () = {
5349        use alloy::sol_types as alloy_sol_types;
5350        #[doc(hidden)]
5351        type UnderlyingSolTuple<'a> = ();
5352        #[doc(hidden)]
5353        type UnderlyingRustTuple<'a> = ();
5354        #[cfg(test)]
5355        #[allow(dead_code, unreachable_patterns)]
5356        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5357            match _t {
5358                alloy_sol_types::private::AssertTypeEq::<
5359                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5360                >(_) => {},
5361            }
5362        }
5363        #[automatically_derived]
5364        #[doc(hidden)]
5365        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5366            fn from(value: ProverNotPermissioned) -> Self {
5367                ()
5368            }
5369        }
5370        #[automatically_derived]
5371        #[doc(hidden)]
5372        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5373            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5374                Self {}
5375            }
5376        }
5377        #[automatically_derived]
5378        impl alloy_sol_types::SolError for ProverNotPermissioned {
5379            type Parameters<'a> = UnderlyingSolTuple<'a>;
5380            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5381            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5382            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5383            #[inline]
5384            fn new<'a>(
5385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5386            ) -> Self {
5387                tuple.into()
5388            }
5389            #[inline]
5390            fn tokenize(&self) -> Self::Token<'_> {
5391                ()
5392            }
5393        }
5394    };
5395    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5396    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5397    ```solidity
5398    error UUPSUnauthorizedCallContext();
5399    ```*/
5400    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5401    #[derive(Clone)]
5402    pub struct UUPSUnauthorizedCallContext {}
5403    #[allow(
5404        non_camel_case_types,
5405        non_snake_case,
5406        clippy::pub_underscore_fields,
5407        clippy::style
5408    )]
5409    const _: () = {
5410        use alloy::sol_types as alloy_sol_types;
5411        #[doc(hidden)]
5412        type UnderlyingSolTuple<'a> = ();
5413        #[doc(hidden)]
5414        type UnderlyingRustTuple<'a> = ();
5415        #[cfg(test)]
5416        #[allow(dead_code, unreachable_patterns)]
5417        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5418            match _t {
5419                alloy_sol_types::private::AssertTypeEq::<
5420                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5421                >(_) => {},
5422            }
5423        }
5424        #[automatically_derived]
5425        #[doc(hidden)]
5426        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
5427            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5428                ()
5429            }
5430        }
5431        #[automatically_derived]
5432        #[doc(hidden)]
5433        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
5434            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5435                Self {}
5436            }
5437        }
5438        #[automatically_derived]
5439        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5440            type Parameters<'a> = UnderlyingSolTuple<'a>;
5441            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5442            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5443            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5444            #[inline]
5445            fn new<'a>(
5446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5447            ) -> Self {
5448                tuple.into()
5449            }
5450            #[inline]
5451            fn tokenize(&self) -> Self::Token<'_> {
5452                ()
5453            }
5454        }
5455    };
5456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5457    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5458    ```solidity
5459    error UUPSUnsupportedProxiableUUID(bytes32 slot);
5460    ```*/
5461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5462    #[derive(Clone)]
5463    pub struct UUPSUnsupportedProxiableUUID {
5464        #[allow(missing_docs)]
5465        pub slot: alloy::sol_types::private::FixedBytes<32>,
5466    }
5467    #[allow(
5468        non_camel_case_types,
5469        non_snake_case,
5470        clippy::pub_underscore_fields,
5471        clippy::style
5472    )]
5473    const _: () = {
5474        use alloy::sol_types as alloy_sol_types;
5475        #[doc(hidden)]
5476        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5477        #[doc(hidden)]
5478        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5479        #[cfg(test)]
5480        #[allow(dead_code, unreachable_patterns)]
5481        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5482            match _t {
5483                alloy_sol_types::private::AssertTypeEq::<
5484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5485                >(_) => {},
5486            }
5487        }
5488        #[automatically_derived]
5489        #[doc(hidden)]
5490        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
5491            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5492                (value.slot,)
5493            }
5494        }
5495        #[automatically_derived]
5496        #[doc(hidden)]
5497        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
5498            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5499                Self { slot: tuple.0 }
5500            }
5501        }
5502        #[automatically_derived]
5503        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5504            type Parameters<'a> = UnderlyingSolTuple<'a>;
5505            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5506            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5507            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5508            #[inline]
5509            fn new<'a>(
5510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5511            ) -> Self {
5512                tuple.into()
5513            }
5514            #[inline]
5515            fn tokenize(&self) -> Self::Token<'_> {
5516                (
5517                    <alloy::sol_types::sol_data::FixedBytes<
5518                        32,
5519                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5520                )
5521            }
5522        }
5523    };
5524    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5525    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5526    ```solidity
5527    error WrongStakeTableUsed();
5528    ```*/
5529    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5530    #[derive(Clone)]
5531    pub struct WrongStakeTableUsed {}
5532    #[allow(
5533        non_camel_case_types,
5534        non_snake_case,
5535        clippy::pub_underscore_fields,
5536        clippy::style
5537    )]
5538    const _: () = {
5539        use alloy::sol_types as alloy_sol_types;
5540        #[doc(hidden)]
5541        type UnderlyingSolTuple<'a> = ();
5542        #[doc(hidden)]
5543        type UnderlyingRustTuple<'a> = ();
5544        #[cfg(test)]
5545        #[allow(dead_code, unreachable_patterns)]
5546        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5547            match _t {
5548                alloy_sol_types::private::AssertTypeEq::<
5549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5550                >(_) => {},
5551            }
5552        }
5553        #[automatically_derived]
5554        #[doc(hidden)]
5555        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5556            fn from(value: WrongStakeTableUsed) -> Self {
5557                ()
5558            }
5559        }
5560        #[automatically_derived]
5561        #[doc(hidden)]
5562        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5563            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5564                Self {}
5565            }
5566        }
5567        #[automatically_derived]
5568        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5569            type Parameters<'a> = UnderlyingSolTuple<'a>;
5570            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5571            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5572            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5573            #[inline]
5574            fn new<'a>(
5575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5576            ) -> Self {
5577                tuple.into()
5578            }
5579            #[inline]
5580            fn tokenize(&self) -> Self::Token<'_> {
5581                ()
5582            }
5583        }
5584    };
5585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5586    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5587    ```solidity
5588    event Initialized(uint64 version);
5589    ```*/
5590    #[allow(
5591        non_camel_case_types,
5592        non_snake_case,
5593        clippy::pub_underscore_fields,
5594        clippy::style
5595    )]
5596    #[derive(Clone)]
5597    pub struct Initialized {
5598        #[allow(missing_docs)]
5599        pub version: u64,
5600    }
5601    #[allow(
5602        non_camel_case_types,
5603        non_snake_case,
5604        clippy::pub_underscore_fields,
5605        clippy::style
5606    )]
5607    const _: () = {
5608        use alloy::sol_types as alloy_sol_types;
5609        #[automatically_derived]
5610        impl alloy_sol_types::SolEvent for Initialized {
5611            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5612            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5613            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5614            const SIGNATURE: &'static str = "Initialized(uint64)";
5615            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5616                alloy_sol_types::private::B256::new([
5617                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
5618                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
5619                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5620                ]);
5621            const ANONYMOUS: bool = false;
5622            #[allow(unused_variables)]
5623            #[inline]
5624            fn new(
5625                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5626                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5627            ) -> Self {
5628                Self { version: data.0 }
5629            }
5630            #[inline]
5631            fn check_signature(
5632                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5633            ) -> alloy_sol_types::Result<()> {
5634                if topics.0 != Self::SIGNATURE_HASH {
5635                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5636                        Self::SIGNATURE,
5637                        topics.0,
5638                        Self::SIGNATURE_HASH,
5639                    ));
5640                }
5641                Ok(())
5642            }
5643            #[inline]
5644            fn tokenize_body(&self) -> Self::DataToken<'_> {
5645                (
5646                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5647                        &self.version,
5648                    ),
5649                )
5650            }
5651            #[inline]
5652            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5653                (Self::SIGNATURE_HASH.into(),)
5654            }
5655            #[inline]
5656            fn encode_topics_raw(
5657                &self,
5658                out: &mut [alloy_sol_types::abi::token::WordToken],
5659            ) -> alloy_sol_types::Result<()> {
5660                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5661                    return Err(alloy_sol_types::Error::Overrun);
5662                }
5663                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5664                Ok(())
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::private::IntoLogData for Initialized {
5669            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5670                From::from(self)
5671            }
5672            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5673                From::from(&self)
5674            }
5675        }
5676        #[automatically_derived]
5677        impl From<&Initialized> for alloy_sol_types::private::LogData {
5678            #[inline]
5679            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5680                alloy_sol_types::SolEvent::encode_log_data(this)
5681            }
5682        }
5683    };
5684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5685    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5686    ```solidity
5687    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5688    ```*/
5689    #[allow(
5690        non_camel_case_types,
5691        non_snake_case,
5692        clippy::pub_underscore_fields,
5693        clippy::style
5694    )]
5695    #[derive(Clone)]
5696    pub struct NewState {
5697        #[allow(missing_docs)]
5698        pub viewNum: u64,
5699        #[allow(missing_docs)]
5700        pub blockHeight: u64,
5701        #[allow(missing_docs)]
5702        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5703    }
5704    #[allow(
5705        non_camel_case_types,
5706        non_snake_case,
5707        clippy::pub_underscore_fields,
5708        clippy::style
5709    )]
5710    const _: () = {
5711        use alloy::sol_types as alloy_sol_types;
5712        #[automatically_derived]
5713        impl alloy_sol_types::SolEvent for NewState {
5714            type DataTuple<'a> = (BN254::ScalarField,);
5715            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5716            type TopicList = (
5717                alloy_sol_types::sol_data::FixedBytes<32>,
5718                alloy::sol_types::sol_data::Uint<64>,
5719                alloy::sol_types::sol_data::Uint<64>,
5720            );
5721            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
5722            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5723                alloy_sol_types::private::B256::new([
5724                    160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8,
5725                    37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8,
5726                    252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
5727                ]);
5728            const ANONYMOUS: bool = false;
5729            #[allow(unused_variables)]
5730            #[inline]
5731            fn new(
5732                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5733                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5734            ) -> Self {
5735                Self {
5736                    viewNum: topics.1,
5737                    blockHeight: topics.2,
5738                    blockCommRoot: data.0,
5739                }
5740            }
5741            #[inline]
5742            fn check_signature(
5743                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5744            ) -> alloy_sol_types::Result<()> {
5745                if topics.0 != Self::SIGNATURE_HASH {
5746                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5747                        Self::SIGNATURE,
5748                        topics.0,
5749                        Self::SIGNATURE_HASH,
5750                    ));
5751                }
5752                Ok(())
5753            }
5754            #[inline]
5755            fn tokenize_body(&self) -> Self::DataToken<'_> {
5756                (<BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
5757                    &self.blockCommRoot,
5758                ),)
5759            }
5760            #[inline]
5761            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5762                (
5763                    Self::SIGNATURE_HASH.into(),
5764                    self.viewNum.clone(),
5765                    self.blockHeight.clone(),
5766                )
5767            }
5768            #[inline]
5769            fn encode_topics_raw(
5770                &self,
5771                out: &mut [alloy_sol_types::abi::token::WordToken],
5772            ) -> alloy_sol_types::Result<()> {
5773                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5774                    return Err(alloy_sol_types::Error::Overrun);
5775                }
5776                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5777                out[1usize] = <alloy::sol_types::sol_data::Uint<
5778                    64,
5779                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
5780                out[2usize] = <alloy::sol_types::sol_data::Uint<
5781                    64,
5782                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
5783                Ok(())
5784            }
5785        }
5786        #[automatically_derived]
5787        impl alloy_sol_types::private::IntoLogData for NewState {
5788            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5789                From::from(self)
5790            }
5791            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5792                From::from(&self)
5793            }
5794        }
5795        #[automatically_derived]
5796        impl From<&NewState> for alloy_sol_types::private::LogData {
5797            #[inline]
5798            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
5799                alloy_sol_types::SolEvent::encode_log_data(this)
5800            }
5801        }
5802    };
5803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5804    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5805    ```solidity
5806    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5807    ```*/
5808    #[allow(
5809        non_camel_case_types,
5810        non_snake_case,
5811        clippy::pub_underscore_fields,
5812        clippy::style
5813    )]
5814    #[derive(Clone)]
5815    pub struct OwnershipTransferred {
5816        #[allow(missing_docs)]
5817        pub previousOwner: alloy::sol_types::private::Address,
5818        #[allow(missing_docs)]
5819        pub newOwner: alloy::sol_types::private::Address,
5820    }
5821    #[allow(
5822        non_camel_case_types,
5823        non_snake_case,
5824        clippy::pub_underscore_fields,
5825        clippy::style
5826    )]
5827    const _: () = {
5828        use alloy::sol_types as alloy_sol_types;
5829        #[automatically_derived]
5830        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5831            type DataTuple<'a> = ();
5832            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5833            type TopicList = (
5834                alloy_sol_types::sol_data::FixedBytes<32>,
5835                alloy::sol_types::sol_data::Address,
5836                alloy::sol_types::sol_data::Address,
5837            );
5838            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5839            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5840                alloy_sol_types::private::B256::new([
5841                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
5842                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
5843                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5844                ]);
5845            const ANONYMOUS: bool = false;
5846            #[allow(unused_variables)]
5847            #[inline]
5848            fn new(
5849                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5850                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5851            ) -> Self {
5852                Self {
5853                    previousOwner: topics.1,
5854                    newOwner: topics.2,
5855                }
5856            }
5857            #[inline]
5858            fn check_signature(
5859                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5860            ) -> alloy_sol_types::Result<()> {
5861                if topics.0 != Self::SIGNATURE_HASH {
5862                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5863                        Self::SIGNATURE,
5864                        topics.0,
5865                        Self::SIGNATURE_HASH,
5866                    ));
5867                }
5868                Ok(())
5869            }
5870            #[inline]
5871            fn tokenize_body(&self) -> Self::DataToken<'_> {
5872                ()
5873            }
5874            #[inline]
5875            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5876                (
5877                    Self::SIGNATURE_HASH.into(),
5878                    self.previousOwner.clone(),
5879                    self.newOwner.clone(),
5880                )
5881            }
5882            #[inline]
5883            fn encode_topics_raw(
5884                &self,
5885                out: &mut [alloy_sol_types::abi::token::WordToken],
5886            ) -> alloy_sol_types::Result<()> {
5887                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5888                    return Err(alloy_sol_types::Error::Overrun);
5889                }
5890                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5891                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5892                    &self.previousOwner,
5893                );
5894                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
5895                    &self.newOwner,
5896                );
5897                Ok(())
5898            }
5899        }
5900        #[automatically_derived]
5901        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
5902            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5903                From::from(self)
5904            }
5905            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5906                From::from(&self)
5907            }
5908        }
5909        #[automatically_derived]
5910        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
5911            #[inline]
5912            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
5913                alloy_sol_types::SolEvent::encode_log_data(this)
5914            }
5915        }
5916    };
5917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5918    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
5919    ```solidity
5920    event PermissionedProverNotRequired();
5921    ```*/
5922    #[allow(
5923        non_camel_case_types,
5924        non_snake_case,
5925        clippy::pub_underscore_fields,
5926        clippy::style
5927    )]
5928    #[derive(Clone)]
5929    pub struct PermissionedProverNotRequired {}
5930    #[allow(
5931        non_camel_case_types,
5932        non_snake_case,
5933        clippy::pub_underscore_fields,
5934        clippy::style
5935    )]
5936    const _: () = {
5937        use alloy::sol_types as alloy_sol_types;
5938        #[automatically_derived]
5939        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
5940            type DataTuple<'a> = ();
5941            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5942            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5943            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
5944            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5945                alloy_sol_types::private::B256::new([
5946                    154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
5947                    92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
5948                    109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
5949                ]);
5950            const ANONYMOUS: bool = false;
5951            #[allow(unused_variables)]
5952            #[inline]
5953            fn new(
5954                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5955                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5956            ) -> Self {
5957                Self {}
5958            }
5959            #[inline]
5960            fn check_signature(
5961                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5962            ) -> alloy_sol_types::Result<()> {
5963                if topics.0 != Self::SIGNATURE_HASH {
5964                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5965                        Self::SIGNATURE,
5966                        topics.0,
5967                        Self::SIGNATURE_HASH,
5968                    ));
5969                }
5970                Ok(())
5971            }
5972            #[inline]
5973            fn tokenize_body(&self) -> Self::DataToken<'_> {
5974                ()
5975            }
5976            #[inline]
5977            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5978                (Self::SIGNATURE_HASH.into(),)
5979            }
5980            #[inline]
5981            fn encode_topics_raw(
5982                &self,
5983                out: &mut [alloy_sol_types::abi::token::WordToken],
5984            ) -> alloy_sol_types::Result<()> {
5985                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5986                    return Err(alloy_sol_types::Error::Overrun);
5987                }
5988                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5989                Ok(())
5990            }
5991        }
5992        #[automatically_derived]
5993        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
5994            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5995                From::from(self)
5996            }
5997            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5998                From::from(&self)
5999            }
6000        }
6001        #[automatically_derived]
6002        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6003            #[inline]
6004            fn from(this: &PermissionedProverNotRequired) -> alloy_sol_types::private::LogData {
6005                alloy_sol_types::SolEvent::encode_log_data(this)
6006            }
6007        }
6008    };
6009    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6010    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6011    ```solidity
6012    event PermissionedProverRequired(address permissionedProver);
6013    ```*/
6014    #[allow(
6015        non_camel_case_types,
6016        non_snake_case,
6017        clippy::pub_underscore_fields,
6018        clippy::style
6019    )]
6020    #[derive(Clone)]
6021    pub struct PermissionedProverRequired {
6022        #[allow(missing_docs)]
6023        pub permissionedProver: alloy::sol_types::private::Address,
6024    }
6025    #[allow(
6026        non_camel_case_types,
6027        non_snake_case,
6028        clippy::pub_underscore_fields,
6029        clippy::style
6030    )]
6031    const _: () = {
6032        use alloy::sol_types as alloy_sol_types;
6033        #[automatically_derived]
6034        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6035            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6036            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6037            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6038            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6039            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6040                alloy_sol_types::private::B256::new([
6041                    128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6042                    212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8,
6043                    133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6044                ]);
6045            const ANONYMOUS: bool = false;
6046            #[allow(unused_variables)]
6047            #[inline]
6048            fn new(
6049                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6050                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6051            ) -> Self {
6052                Self {
6053                    permissionedProver: data.0,
6054                }
6055            }
6056            #[inline]
6057            fn check_signature(
6058                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6059            ) -> alloy_sol_types::Result<()> {
6060                if topics.0 != Self::SIGNATURE_HASH {
6061                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6062                        Self::SIGNATURE,
6063                        topics.0,
6064                        Self::SIGNATURE_HASH,
6065                    ));
6066                }
6067                Ok(())
6068            }
6069            #[inline]
6070            fn tokenize_body(&self) -> Self::DataToken<'_> {
6071                (
6072                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6073                        &self.permissionedProver,
6074                    ),
6075                )
6076            }
6077            #[inline]
6078            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6079                (Self::SIGNATURE_HASH.into(),)
6080            }
6081            #[inline]
6082            fn encode_topics_raw(
6083                &self,
6084                out: &mut [alloy_sol_types::abi::token::WordToken],
6085            ) -> alloy_sol_types::Result<()> {
6086                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6087                    return Err(alloy_sol_types::Error::Overrun);
6088                }
6089                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6090                Ok(())
6091            }
6092        }
6093        #[automatically_derived]
6094        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6095            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6096                From::from(self)
6097            }
6098            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6099                From::from(&self)
6100            }
6101        }
6102        #[automatically_derived]
6103        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6104            #[inline]
6105            fn from(this: &PermissionedProverRequired) -> alloy_sol_types::private::LogData {
6106                alloy_sol_types::SolEvent::encode_log_data(this)
6107            }
6108        }
6109    };
6110    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6111    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6112    ```solidity
6113    event Upgrade(address implementation);
6114    ```*/
6115    #[allow(
6116        non_camel_case_types,
6117        non_snake_case,
6118        clippy::pub_underscore_fields,
6119        clippy::style
6120    )]
6121    #[derive(Clone)]
6122    pub struct Upgrade {
6123        #[allow(missing_docs)]
6124        pub implementation: alloy::sol_types::private::Address,
6125    }
6126    #[allow(
6127        non_camel_case_types,
6128        non_snake_case,
6129        clippy::pub_underscore_fields,
6130        clippy::style
6131    )]
6132    const _: () = {
6133        use alloy::sol_types as alloy_sol_types;
6134        #[automatically_derived]
6135        impl alloy_sol_types::SolEvent for Upgrade {
6136            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6137            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6138            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6139            const SIGNATURE: &'static str = "Upgrade(address)";
6140            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6141                alloy_sol_types::private::B256::new([
6142                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
6143                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
6144                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6145                ]);
6146            const ANONYMOUS: bool = false;
6147            #[allow(unused_variables)]
6148            #[inline]
6149            fn new(
6150                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6151                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6152            ) -> Self {
6153                Self {
6154                    implementation: data.0,
6155                }
6156            }
6157            #[inline]
6158            fn check_signature(
6159                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6160            ) -> alloy_sol_types::Result<()> {
6161                if topics.0 != Self::SIGNATURE_HASH {
6162                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6163                        Self::SIGNATURE,
6164                        topics.0,
6165                        Self::SIGNATURE_HASH,
6166                    ));
6167                }
6168                Ok(())
6169            }
6170            #[inline]
6171            fn tokenize_body(&self) -> Self::DataToken<'_> {
6172                (
6173                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6174                        &self.implementation,
6175                    ),
6176                )
6177            }
6178            #[inline]
6179            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6180                (Self::SIGNATURE_HASH.into(),)
6181            }
6182            #[inline]
6183            fn encode_topics_raw(
6184                &self,
6185                out: &mut [alloy_sol_types::abi::token::WordToken],
6186            ) -> alloy_sol_types::Result<()> {
6187                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6188                    return Err(alloy_sol_types::Error::Overrun);
6189                }
6190                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6191                Ok(())
6192            }
6193        }
6194        #[automatically_derived]
6195        impl alloy_sol_types::private::IntoLogData for Upgrade {
6196            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6197                From::from(self)
6198            }
6199            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6200                From::from(&self)
6201            }
6202        }
6203        #[automatically_derived]
6204        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6205            #[inline]
6206            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6207                alloy_sol_types::SolEvent::encode_log_data(this)
6208            }
6209        }
6210    };
6211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6212    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6213    ```solidity
6214    event Upgraded(address indexed implementation);
6215    ```*/
6216    #[allow(
6217        non_camel_case_types,
6218        non_snake_case,
6219        clippy::pub_underscore_fields,
6220        clippy::style
6221    )]
6222    #[derive(Clone)]
6223    pub struct Upgraded {
6224        #[allow(missing_docs)]
6225        pub implementation: alloy::sol_types::private::Address,
6226    }
6227    #[allow(
6228        non_camel_case_types,
6229        non_snake_case,
6230        clippy::pub_underscore_fields,
6231        clippy::style
6232    )]
6233    const _: () = {
6234        use alloy::sol_types as alloy_sol_types;
6235        #[automatically_derived]
6236        impl alloy_sol_types::SolEvent for Upgraded {
6237            type DataTuple<'a> = ();
6238            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6239            type TopicList = (
6240                alloy_sol_types::sol_data::FixedBytes<32>,
6241                alloy::sol_types::sol_data::Address,
6242            );
6243            const SIGNATURE: &'static str = "Upgraded(address)";
6244            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6245                alloy_sol_types::private::B256::new([
6246                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6247                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
6248                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6249                ]);
6250            const ANONYMOUS: bool = false;
6251            #[allow(unused_variables)]
6252            #[inline]
6253            fn new(
6254                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6255                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6256            ) -> Self {
6257                Self {
6258                    implementation: topics.1,
6259                }
6260            }
6261            #[inline]
6262            fn check_signature(
6263                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6264            ) -> alloy_sol_types::Result<()> {
6265                if topics.0 != Self::SIGNATURE_HASH {
6266                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6267                        Self::SIGNATURE,
6268                        topics.0,
6269                        Self::SIGNATURE_HASH,
6270                    ));
6271                }
6272                Ok(())
6273            }
6274            #[inline]
6275            fn tokenize_body(&self) -> Self::DataToken<'_> {
6276                ()
6277            }
6278            #[inline]
6279            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6280                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6281            }
6282            #[inline]
6283            fn encode_topics_raw(
6284                &self,
6285                out: &mut [alloy_sol_types::abi::token::WordToken],
6286            ) -> alloy_sol_types::Result<()> {
6287                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6288                    return Err(alloy_sol_types::Error::Overrun);
6289                }
6290                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6291                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6292                    &self.implementation,
6293                );
6294                Ok(())
6295            }
6296        }
6297        #[automatically_derived]
6298        impl alloy_sol_types::private::IntoLogData for Upgraded {
6299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6300                From::from(self)
6301            }
6302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6303                From::from(&self)
6304            }
6305        }
6306        #[automatically_derived]
6307        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6308            #[inline]
6309            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6310                alloy_sol_types::SolEvent::encode_log_data(this)
6311            }
6312        }
6313    };
6314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6315    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6316    ```solidity
6317    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6318    ```*/
6319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6320    #[derive(Clone)]
6321    pub struct UPGRADE_INTERFACE_VERSIONCall {}
6322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6323    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6324    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6325    #[derive(Clone)]
6326    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6327        #[allow(missing_docs)]
6328        pub _0: alloy::sol_types::private::String,
6329    }
6330    #[allow(
6331        non_camel_case_types,
6332        non_snake_case,
6333        clippy::pub_underscore_fields,
6334        clippy::style
6335    )]
6336    const _: () = {
6337        use alloy::sol_types as alloy_sol_types;
6338        {
6339            #[doc(hidden)]
6340            type UnderlyingSolTuple<'a> = ();
6341            #[doc(hidden)]
6342            type UnderlyingRustTuple<'a> = ();
6343            #[cfg(test)]
6344            #[allow(dead_code, unreachable_patterns)]
6345            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6346                match _t {
6347                    alloy_sol_types::private::AssertTypeEq::<
6348                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6349                    >(_) => {},
6350                }
6351            }
6352            #[automatically_derived]
6353            #[doc(hidden)]
6354            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
6355                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6356                    ()
6357                }
6358            }
6359            #[automatically_derived]
6360            #[doc(hidden)]
6361            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
6362                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6363                    Self {}
6364                }
6365            }
6366        }
6367        {
6368            #[doc(hidden)]
6369            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6370            #[doc(hidden)]
6371            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6372            #[cfg(test)]
6373            #[allow(dead_code, unreachable_patterns)]
6374            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6375                match _t {
6376                    alloy_sol_types::private::AssertTypeEq::<
6377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6378                    >(_) => {},
6379                }
6380            }
6381            #[automatically_derived]
6382            #[doc(hidden)]
6383            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
6384                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6385                    (value._0,)
6386                }
6387            }
6388            #[automatically_derived]
6389            #[doc(hidden)]
6390            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
6391                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6392                    Self { _0: tuple.0 }
6393                }
6394            }
6395        }
6396        #[automatically_derived]
6397        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6398            type Parameters<'a> = ();
6399            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6400            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6401            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6402            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6403            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6404            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6405            #[inline]
6406            fn new<'a>(
6407                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6408            ) -> Self {
6409                tuple.into()
6410            }
6411            #[inline]
6412            fn tokenize(&self) -> Self::Token<'_> {
6413                ()
6414            }
6415            #[inline]
6416            fn abi_decode_returns(
6417                data: &[u8],
6418                validate: bool,
6419            ) -> alloy_sol_types::Result<Self::Return> {
6420                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6421                    data, validate,
6422                )
6423                .map(Into::into)
6424            }
6425        }
6426    };
6427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6428    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6429    ```solidity
6430    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6431    ```*/
6432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6433    #[derive(Clone)]
6434    pub struct _getVkCall {}
6435    #[derive()]
6436    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6438    #[derive(Clone)]
6439    pub struct _getVkReturn {
6440        #[allow(missing_docs)]
6441        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6442    }
6443    #[allow(
6444        non_camel_case_types,
6445        non_snake_case,
6446        clippy::pub_underscore_fields,
6447        clippy::style
6448    )]
6449    const _: () = {
6450        use alloy::sol_types as alloy_sol_types;
6451        {
6452            #[doc(hidden)]
6453            type UnderlyingSolTuple<'a> = ();
6454            #[doc(hidden)]
6455            type UnderlyingRustTuple<'a> = ();
6456            #[cfg(test)]
6457            #[allow(dead_code, unreachable_patterns)]
6458            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6459                match _t {
6460                    alloy_sol_types::private::AssertTypeEq::<
6461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6462                    >(_) => {},
6463                }
6464            }
6465            #[automatically_derived]
6466            #[doc(hidden)]
6467            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6468                fn from(value: _getVkCall) -> Self {
6469                    ()
6470                }
6471            }
6472            #[automatically_derived]
6473            #[doc(hidden)]
6474            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6475                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6476                    Self {}
6477                }
6478            }
6479        }
6480        {
6481            #[doc(hidden)]
6482            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6483            #[doc(hidden)]
6484            type UnderlyingRustTuple<'a> =
6485                (<IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,);
6486            #[cfg(test)]
6487            #[allow(dead_code, unreachable_patterns)]
6488            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6489                match _t {
6490                    alloy_sol_types::private::AssertTypeEq::<
6491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6492                    >(_) => {},
6493                }
6494            }
6495            #[automatically_derived]
6496            #[doc(hidden)]
6497            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6498                fn from(value: _getVkReturn) -> Self {
6499                    (value.vk,)
6500                }
6501            }
6502            #[automatically_derived]
6503            #[doc(hidden)]
6504            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6505                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6506                    Self { vk: tuple.0 }
6507                }
6508            }
6509        }
6510        #[automatically_derived]
6511        impl alloy_sol_types::SolCall for _getVkCall {
6512            type Parameters<'a> = ();
6513            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6514            type Return = _getVkReturn;
6515            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6516            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6517            const SIGNATURE: &'static str = "_getVk()";
6518            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6519            #[inline]
6520            fn new<'a>(
6521                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6522            ) -> Self {
6523                tuple.into()
6524            }
6525            #[inline]
6526            fn tokenize(&self) -> Self::Token<'_> {
6527                ()
6528            }
6529            #[inline]
6530            fn abi_decode_returns(
6531                data: &[u8],
6532                validate: bool,
6533            ) -> alloy_sol_types::Result<Self::Return> {
6534                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6535                    data, validate,
6536                )
6537                .map(Into::into)
6538            }
6539        }
6540    };
6541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6542    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6543    ```solidity
6544    function currentBlockNumber() external view returns (uint256);
6545    ```*/
6546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6547    #[derive(Clone)]
6548    pub struct currentBlockNumberCall {}
6549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6550    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6552    #[derive(Clone)]
6553    pub struct currentBlockNumberReturn {
6554        #[allow(missing_docs)]
6555        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6556    }
6557    #[allow(
6558        non_camel_case_types,
6559        non_snake_case,
6560        clippy::pub_underscore_fields,
6561        clippy::style
6562    )]
6563    const _: () = {
6564        use alloy::sol_types as alloy_sol_types;
6565        {
6566            #[doc(hidden)]
6567            type UnderlyingSolTuple<'a> = ();
6568            #[doc(hidden)]
6569            type UnderlyingRustTuple<'a> = ();
6570            #[cfg(test)]
6571            #[allow(dead_code, unreachable_patterns)]
6572            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6573                match _t {
6574                    alloy_sol_types::private::AssertTypeEq::<
6575                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6576                    >(_) => {},
6577                }
6578            }
6579            #[automatically_derived]
6580            #[doc(hidden)]
6581            impl ::core::convert::From<currentBlockNumberCall> for UnderlyingRustTuple<'_> {
6582                fn from(value: currentBlockNumberCall) -> Self {
6583                    ()
6584                }
6585            }
6586            #[automatically_derived]
6587            #[doc(hidden)]
6588            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberCall {
6589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6590                    Self {}
6591                }
6592            }
6593        }
6594        {
6595            #[doc(hidden)]
6596            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6597            #[doc(hidden)]
6598            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6599            #[cfg(test)]
6600            #[allow(dead_code, unreachable_patterns)]
6601            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6602                match _t {
6603                    alloy_sol_types::private::AssertTypeEq::<
6604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6605                    >(_) => {},
6606                }
6607            }
6608            #[automatically_derived]
6609            #[doc(hidden)]
6610            impl ::core::convert::From<currentBlockNumberReturn> for UnderlyingRustTuple<'_> {
6611                fn from(value: currentBlockNumberReturn) -> Self {
6612                    (value._0,)
6613                }
6614            }
6615            #[automatically_derived]
6616            #[doc(hidden)]
6617            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberReturn {
6618                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6619                    Self { _0: tuple.0 }
6620                }
6621            }
6622        }
6623        #[automatically_derived]
6624        impl alloy_sol_types::SolCall for currentBlockNumberCall {
6625            type Parameters<'a> = ();
6626            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6627            type Return = currentBlockNumberReturn;
6628            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6629            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6630            const SIGNATURE: &'static str = "currentBlockNumber()";
6631            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
6632            #[inline]
6633            fn new<'a>(
6634                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6635            ) -> Self {
6636                tuple.into()
6637            }
6638            #[inline]
6639            fn tokenize(&self) -> Self::Token<'_> {
6640                ()
6641            }
6642            #[inline]
6643            fn abi_decode_returns(
6644                data: &[u8],
6645                validate: bool,
6646            ) -> alloy_sol_types::Result<Self::Return> {
6647                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6648                    data, validate,
6649                )
6650                .map(Into::into)
6651            }
6652        }
6653    };
6654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6655    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
6656    ```solidity
6657    function disablePermissionedProverMode() external;
6658    ```*/
6659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6660    #[derive(Clone)]
6661    pub struct disablePermissionedProverModeCall {}
6662    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
6663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6664    #[derive(Clone)]
6665    pub struct disablePermissionedProverModeReturn {}
6666    #[allow(
6667        non_camel_case_types,
6668        non_snake_case,
6669        clippy::pub_underscore_fields,
6670        clippy::style
6671    )]
6672    const _: () = {
6673        use alloy::sol_types as alloy_sol_types;
6674        {
6675            #[doc(hidden)]
6676            type UnderlyingSolTuple<'a> = ();
6677            #[doc(hidden)]
6678            type UnderlyingRustTuple<'a> = ();
6679            #[cfg(test)]
6680            #[allow(dead_code, unreachable_patterns)]
6681            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6682                match _t {
6683                    alloy_sol_types::private::AssertTypeEq::<
6684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6685                    >(_) => {},
6686                }
6687            }
6688            #[automatically_derived]
6689            #[doc(hidden)]
6690            impl ::core::convert::From<disablePermissionedProverModeCall> for UnderlyingRustTuple<'_> {
6691                fn from(value: disablePermissionedProverModeCall) -> Self {
6692                    ()
6693                }
6694            }
6695            #[automatically_derived]
6696            #[doc(hidden)]
6697            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeCall {
6698                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6699                    Self {}
6700                }
6701            }
6702        }
6703        {
6704            #[doc(hidden)]
6705            type UnderlyingSolTuple<'a> = ();
6706            #[doc(hidden)]
6707            type UnderlyingRustTuple<'a> = ();
6708            #[cfg(test)]
6709            #[allow(dead_code, unreachable_patterns)]
6710            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6711                match _t {
6712                    alloy_sol_types::private::AssertTypeEq::<
6713                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6714                    >(_) => {},
6715                }
6716            }
6717            #[automatically_derived]
6718            #[doc(hidden)]
6719            impl ::core::convert::From<disablePermissionedProverModeReturn> for UnderlyingRustTuple<'_> {
6720                fn from(value: disablePermissionedProverModeReturn) -> Self {
6721                    ()
6722                }
6723            }
6724            #[automatically_derived]
6725            #[doc(hidden)]
6726            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeReturn {
6727                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6728                    Self {}
6729                }
6730            }
6731        }
6732        #[automatically_derived]
6733        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
6734            type Parameters<'a> = ();
6735            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6736            type Return = disablePermissionedProverModeReturn;
6737            type ReturnTuple<'a> = ();
6738            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6739            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
6740            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
6741            #[inline]
6742            fn new<'a>(
6743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6744            ) -> Self {
6745                tuple.into()
6746            }
6747            #[inline]
6748            fn tokenize(&self) -> Self::Token<'_> {
6749                ()
6750            }
6751            #[inline]
6752            fn abi_decode_returns(
6753                data: &[u8],
6754                validate: bool,
6755            ) -> alloy_sol_types::Result<Self::Return> {
6756                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6757                    data, validate,
6758                )
6759                .map(Into::into)
6760            }
6761        }
6762    };
6763    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6764    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
6765    ```solidity
6766    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6767    ```*/
6768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6769    #[derive(Clone)]
6770    pub struct finalizedStateCall {}
6771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6772    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
6773    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6774    #[derive(Clone)]
6775    pub struct finalizedStateReturn {
6776        #[allow(missing_docs)]
6777        pub viewNum: u64,
6778        #[allow(missing_docs)]
6779        pub blockHeight: u64,
6780        #[allow(missing_docs)]
6781        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6782    }
6783    #[allow(
6784        non_camel_case_types,
6785        non_snake_case,
6786        clippy::pub_underscore_fields,
6787        clippy::style
6788    )]
6789    const _: () = {
6790        use alloy::sol_types as alloy_sol_types;
6791        {
6792            #[doc(hidden)]
6793            type UnderlyingSolTuple<'a> = ();
6794            #[doc(hidden)]
6795            type UnderlyingRustTuple<'a> = ();
6796            #[cfg(test)]
6797            #[allow(dead_code, unreachable_patterns)]
6798            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6799                match _t {
6800                    alloy_sol_types::private::AssertTypeEq::<
6801                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6802                    >(_) => {},
6803                }
6804            }
6805            #[automatically_derived]
6806            #[doc(hidden)]
6807            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
6808                fn from(value: finalizedStateCall) -> Self {
6809                    ()
6810                }
6811            }
6812            #[automatically_derived]
6813            #[doc(hidden)]
6814            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
6815                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6816                    Self {}
6817                }
6818            }
6819        }
6820        {
6821            #[doc(hidden)]
6822            type UnderlyingSolTuple<'a> = (
6823                alloy::sol_types::sol_data::Uint<64>,
6824                alloy::sol_types::sol_data::Uint<64>,
6825                BN254::ScalarField,
6826            );
6827            #[doc(hidden)]
6828            type UnderlyingRustTuple<'a> = (
6829                u64,
6830                u64,
6831                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6832            );
6833            #[cfg(test)]
6834            #[allow(dead_code, unreachable_patterns)]
6835            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6836                match _t {
6837                    alloy_sol_types::private::AssertTypeEq::<
6838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6839                    >(_) => {},
6840                }
6841            }
6842            #[automatically_derived]
6843            #[doc(hidden)]
6844            impl ::core::convert::From<finalizedStateReturn> for UnderlyingRustTuple<'_> {
6845                fn from(value: finalizedStateReturn) -> Self {
6846                    (value.viewNum, value.blockHeight, value.blockCommRoot)
6847                }
6848            }
6849            #[automatically_derived]
6850            #[doc(hidden)]
6851            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateReturn {
6852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6853                    Self {
6854                        viewNum: tuple.0,
6855                        blockHeight: tuple.1,
6856                        blockCommRoot: tuple.2,
6857                    }
6858                }
6859            }
6860        }
6861        #[automatically_derived]
6862        impl alloy_sol_types::SolCall for finalizedStateCall {
6863            type Parameters<'a> = ();
6864            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6865            type Return = finalizedStateReturn;
6866            type ReturnTuple<'a> = (
6867                alloy::sol_types::sol_data::Uint<64>,
6868                alloy::sol_types::sol_data::Uint<64>,
6869                BN254::ScalarField,
6870            );
6871            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6872            const SIGNATURE: &'static str = "finalizedState()";
6873            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
6874            #[inline]
6875            fn new<'a>(
6876                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6877            ) -> Self {
6878                tuple.into()
6879            }
6880            #[inline]
6881            fn tokenize(&self) -> Self::Token<'_> {
6882                ()
6883            }
6884            #[inline]
6885            fn abi_decode_returns(
6886                data: &[u8],
6887                validate: bool,
6888            ) -> alloy_sol_types::Result<Self::Return> {
6889                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6890                    data, validate,
6891                )
6892                .map(Into::into)
6893            }
6894        }
6895    };
6896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6897    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
6898    ```solidity
6899    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
6900    ```*/
6901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6902    #[derive(Clone)]
6903    pub struct genesisStakeTableStateCall {}
6904    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6905    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
6906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6907    #[derive(Clone)]
6908    pub struct genesisStakeTableStateReturn {
6909        #[allow(missing_docs)]
6910        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
6911        #[allow(missing_docs)]
6912        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6913        #[allow(missing_docs)]
6914        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6915        #[allow(missing_docs)]
6916        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6917    }
6918    #[allow(
6919        non_camel_case_types,
6920        non_snake_case,
6921        clippy::pub_underscore_fields,
6922        clippy::style
6923    )]
6924    const _: () = {
6925        use alloy::sol_types as alloy_sol_types;
6926        {
6927            #[doc(hidden)]
6928            type UnderlyingSolTuple<'a> = ();
6929            #[doc(hidden)]
6930            type UnderlyingRustTuple<'a> = ();
6931            #[cfg(test)]
6932            #[allow(dead_code, unreachable_patterns)]
6933            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6934                match _t {
6935                    alloy_sol_types::private::AssertTypeEq::<
6936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6937                    >(_) => {},
6938                }
6939            }
6940            #[automatically_derived]
6941            #[doc(hidden)]
6942            impl ::core::convert::From<genesisStakeTableStateCall> for UnderlyingRustTuple<'_> {
6943                fn from(value: genesisStakeTableStateCall) -> Self {
6944                    ()
6945                }
6946            }
6947            #[automatically_derived]
6948            #[doc(hidden)]
6949            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateCall {
6950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6951                    Self {}
6952                }
6953            }
6954        }
6955        {
6956            #[doc(hidden)]
6957            type UnderlyingSolTuple<'a> = (
6958                alloy::sol_types::sol_data::Uint<256>,
6959                BN254::ScalarField,
6960                BN254::ScalarField,
6961                BN254::ScalarField,
6962            );
6963            #[doc(hidden)]
6964            type UnderlyingRustTuple<'a> = (
6965                alloy::sol_types::private::primitives::aliases::U256,
6966                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6967                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6968                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6969            );
6970            #[cfg(test)]
6971            #[allow(dead_code, unreachable_patterns)]
6972            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6973                match _t {
6974                    alloy_sol_types::private::AssertTypeEq::<
6975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6976                    >(_) => {},
6977                }
6978            }
6979            #[automatically_derived]
6980            #[doc(hidden)]
6981            impl ::core::convert::From<genesisStakeTableStateReturn> for UnderlyingRustTuple<'_> {
6982                fn from(value: genesisStakeTableStateReturn) -> Self {
6983                    (
6984                        value.threshold,
6985                        value.blsKeyComm,
6986                        value.schnorrKeyComm,
6987                        value.amountComm,
6988                    )
6989                }
6990            }
6991            #[automatically_derived]
6992            #[doc(hidden)]
6993            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateReturn {
6994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6995                    Self {
6996                        threshold: tuple.0,
6997                        blsKeyComm: tuple.1,
6998                        schnorrKeyComm: tuple.2,
6999                        amountComm: tuple.3,
7000                    }
7001                }
7002            }
7003        }
7004        #[automatically_derived]
7005        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7006            type Parameters<'a> = ();
7007            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7008            type Return = genesisStakeTableStateReturn;
7009            type ReturnTuple<'a> = (
7010                alloy::sol_types::sol_data::Uint<256>,
7011                BN254::ScalarField,
7012                BN254::ScalarField,
7013                BN254::ScalarField,
7014            );
7015            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7016            const SIGNATURE: &'static str = "genesisStakeTableState()";
7017            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7018            #[inline]
7019            fn new<'a>(
7020                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7021            ) -> Self {
7022                tuple.into()
7023            }
7024            #[inline]
7025            fn tokenize(&self) -> Self::Token<'_> {
7026                ()
7027            }
7028            #[inline]
7029            fn abi_decode_returns(
7030                data: &[u8],
7031                validate: bool,
7032            ) -> alloy_sol_types::Result<Self::Return> {
7033                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7034                    data, validate,
7035                )
7036                .map(Into::into)
7037            }
7038        }
7039    };
7040    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7041    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7042    ```solidity
7043    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7044    ```*/
7045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7046    #[derive(Clone)]
7047    pub struct genesisStateCall {}
7048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7049    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7051    #[derive(Clone)]
7052    pub struct genesisStateReturn {
7053        #[allow(missing_docs)]
7054        pub viewNum: u64,
7055        #[allow(missing_docs)]
7056        pub blockHeight: u64,
7057        #[allow(missing_docs)]
7058        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7059    }
7060    #[allow(
7061        non_camel_case_types,
7062        non_snake_case,
7063        clippy::pub_underscore_fields,
7064        clippy::style
7065    )]
7066    const _: () = {
7067        use alloy::sol_types as alloy_sol_types;
7068        {
7069            #[doc(hidden)]
7070            type UnderlyingSolTuple<'a> = ();
7071            #[doc(hidden)]
7072            type UnderlyingRustTuple<'a> = ();
7073            #[cfg(test)]
7074            #[allow(dead_code, unreachable_patterns)]
7075            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7076                match _t {
7077                    alloy_sol_types::private::AssertTypeEq::<
7078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7079                    >(_) => {},
7080                }
7081            }
7082            #[automatically_derived]
7083            #[doc(hidden)]
7084            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7085                fn from(value: genesisStateCall) -> Self {
7086                    ()
7087                }
7088            }
7089            #[automatically_derived]
7090            #[doc(hidden)]
7091            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7092                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7093                    Self {}
7094                }
7095            }
7096        }
7097        {
7098            #[doc(hidden)]
7099            type UnderlyingSolTuple<'a> = (
7100                alloy::sol_types::sol_data::Uint<64>,
7101                alloy::sol_types::sol_data::Uint<64>,
7102                BN254::ScalarField,
7103            );
7104            #[doc(hidden)]
7105            type UnderlyingRustTuple<'a> = (
7106                u64,
7107                u64,
7108                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7109            );
7110            #[cfg(test)]
7111            #[allow(dead_code, unreachable_patterns)]
7112            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7113                match _t {
7114                    alloy_sol_types::private::AssertTypeEq::<
7115                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7116                    >(_) => {},
7117                }
7118            }
7119            #[automatically_derived]
7120            #[doc(hidden)]
7121            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7122                fn from(value: genesisStateReturn) -> Self {
7123                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7124                }
7125            }
7126            #[automatically_derived]
7127            #[doc(hidden)]
7128            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7129                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7130                    Self {
7131                        viewNum: tuple.0,
7132                        blockHeight: tuple.1,
7133                        blockCommRoot: tuple.2,
7134                    }
7135                }
7136            }
7137        }
7138        #[automatically_derived]
7139        impl alloy_sol_types::SolCall for genesisStateCall {
7140            type Parameters<'a> = ();
7141            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7142            type Return = genesisStateReturn;
7143            type ReturnTuple<'a> = (
7144                alloy::sol_types::sol_data::Uint<64>,
7145                alloy::sol_types::sol_data::Uint<64>,
7146                BN254::ScalarField,
7147            );
7148            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7149            const SIGNATURE: &'static str = "genesisState()";
7150            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7151            #[inline]
7152            fn new<'a>(
7153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7154            ) -> Self {
7155                tuple.into()
7156            }
7157            #[inline]
7158            fn tokenize(&self) -> Self::Token<'_> {
7159                ()
7160            }
7161            #[inline]
7162            fn abi_decode_returns(
7163                data: &[u8],
7164                validate: bool,
7165            ) -> alloy_sol_types::Result<Self::Return> {
7166                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7167                    data, validate,
7168                )
7169                .map(Into::into)
7170            }
7171        }
7172    };
7173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7174    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7175    ```solidity
7176    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7177    ```*/
7178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7179    #[derive(Clone)]
7180    pub struct getHotShotCommitmentCall {
7181        #[allow(missing_docs)]
7182        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7183    }
7184    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7185    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7186    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7187    #[derive(Clone)]
7188    pub struct getHotShotCommitmentReturn {
7189        #[allow(missing_docs)]
7190        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7191        #[allow(missing_docs)]
7192        pub hotshotBlockHeight: u64,
7193    }
7194    #[allow(
7195        non_camel_case_types,
7196        non_snake_case,
7197        clippy::pub_underscore_fields,
7198        clippy::style
7199    )]
7200    const _: () = {
7201        use alloy::sol_types as alloy_sol_types;
7202        {
7203            #[doc(hidden)]
7204            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7205            #[doc(hidden)]
7206            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7207            #[cfg(test)]
7208            #[allow(dead_code, unreachable_patterns)]
7209            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7210                match _t {
7211                    alloy_sol_types::private::AssertTypeEq::<
7212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7213                    >(_) => {},
7214                }
7215            }
7216            #[automatically_derived]
7217            #[doc(hidden)]
7218            impl ::core::convert::From<getHotShotCommitmentCall> for UnderlyingRustTuple<'_> {
7219                fn from(value: getHotShotCommitmentCall) -> Self {
7220                    (value.hotShotBlockHeight,)
7221                }
7222            }
7223            #[automatically_derived]
7224            #[doc(hidden)]
7225            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentCall {
7226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7227                    Self {
7228                        hotShotBlockHeight: tuple.0,
7229                    }
7230                }
7231            }
7232        }
7233        {
7234            #[doc(hidden)]
7235            type UnderlyingSolTuple<'a> =
7236                (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
7237            #[doc(hidden)]
7238            type UnderlyingRustTuple<'a> = (
7239                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7240                u64,
7241            );
7242            #[cfg(test)]
7243            #[allow(dead_code, unreachable_patterns)]
7244            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7245                match _t {
7246                    alloy_sol_types::private::AssertTypeEq::<
7247                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7248                    >(_) => {},
7249                }
7250            }
7251            #[automatically_derived]
7252            #[doc(hidden)]
7253            impl ::core::convert::From<getHotShotCommitmentReturn> for UnderlyingRustTuple<'_> {
7254                fn from(value: getHotShotCommitmentReturn) -> Self {
7255                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7256                }
7257            }
7258            #[automatically_derived]
7259            #[doc(hidden)]
7260            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentReturn {
7261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7262                    Self {
7263                        hotShotBlockCommRoot: tuple.0,
7264                        hotshotBlockHeight: tuple.1,
7265                    }
7266                }
7267            }
7268        }
7269        #[automatically_derived]
7270        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7271            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7272            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7273            type Return = getHotShotCommitmentReturn;
7274            type ReturnTuple<'a> = (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
7275            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7276            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7277            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7278            #[inline]
7279            fn new<'a>(
7280                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7281            ) -> Self {
7282                tuple.into()
7283            }
7284            #[inline]
7285            fn tokenize(&self) -> Self::Token<'_> {
7286                (
7287                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7288                        &self.hotShotBlockHeight,
7289                    ),
7290                )
7291            }
7292            #[inline]
7293            fn abi_decode_returns(
7294                data: &[u8],
7295                validate: bool,
7296            ) -> alloy_sol_types::Result<Self::Return> {
7297                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7298                    data, validate,
7299                )
7300                .map(Into::into)
7301            }
7302        }
7303    };
7304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7305    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
7306    ```solidity
7307    function getStateHistoryCount() external view returns (uint256);
7308    ```*/
7309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7310    #[derive(Clone)]
7311    pub struct getStateHistoryCountCall {}
7312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7313    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
7314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7315    #[derive(Clone)]
7316    pub struct getStateHistoryCountReturn {
7317        #[allow(missing_docs)]
7318        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7319    }
7320    #[allow(
7321        non_camel_case_types,
7322        non_snake_case,
7323        clippy::pub_underscore_fields,
7324        clippy::style
7325    )]
7326    const _: () = {
7327        use alloy::sol_types as alloy_sol_types;
7328        {
7329            #[doc(hidden)]
7330            type UnderlyingSolTuple<'a> = ();
7331            #[doc(hidden)]
7332            type UnderlyingRustTuple<'a> = ();
7333            #[cfg(test)]
7334            #[allow(dead_code, unreachable_patterns)]
7335            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7336                match _t {
7337                    alloy_sol_types::private::AssertTypeEq::<
7338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7339                    >(_) => {},
7340                }
7341            }
7342            #[automatically_derived]
7343            #[doc(hidden)]
7344            impl ::core::convert::From<getStateHistoryCountCall> for UnderlyingRustTuple<'_> {
7345                fn from(value: getStateHistoryCountCall) -> Self {
7346                    ()
7347                }
7348            }
7349            #[automatically_derived]
7350            #[doc(hidden)]
7351            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountCall {
7352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7353                    Self {}
7354                }
7355            }
7356        }
7357        {
7358            #[doc(hidden)]
7359            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7360            #[doc(hidden)]
7361            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7362            #[cfg(test)]
7363            #[allow(dead_code, unreachable_patterns)]
7364            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7365                match _t {
7366                    alloy_sol_types::private::AssertTypeEq::<
7367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7368                    >(_) => {},
7369                }
7370            }
7371            #[automatically_derived]
7372            #[doc(hidden)]
7373            impl ::core::convert::From<getStateHistoryCountReturn> for UnderlyingRustTuple<'_> {
7374                fn from(value: getStateHistoryCountReturn) -> Self {
7375                    (value._0,)
7376                }
7377            }
7378            #[automatically_derived]
7379            #[doc(hidden)]
7380            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountReturn {
7381                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7382                    Self { _0: tuple.0 }
7383                }
7384            }
7385        }
7386        #[automatically_derived]
7387        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
7388            type Parameters<'a> = ();
7389            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7390            type Return = getStateHistoryCountReturn;
7391            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7392            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7393            const SIGNATURE: &'static str = "getStateHistoryCount()";
7394            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
7395            #[inline]
7396            fn new<'a>(
7397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7398            ) -> Self {
7399                tuple.into()
7400            }
7401            #[inline]
7402            fn tokenize(&self) -> Self::Token<'_> {
7403                ()
7404            }
7405            #[inline]
7406            fn abi_decode_returns(
7407                data: &[u8],
7408                validate: bool,
7409            ) -> alloy_sol_types::Result<Self::Return> {
7410                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7411                    data, validate,
7412                )
7413                .map(Into::into)
7414            }
7415        }
7416    };
7417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7418    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7419    ```solidity
7420    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7421    ```*/
7422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7423    #[derive(Clone)]
7424    pub struct getVersionCall {}
7425    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7426    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7428    #[derive(Clone)]
7429    pub struct getVersionReturn {
7430        #[allow(missing_docs)]
7431        pub majorVersion: u8,
7432        #[allow(missing_docs)]
7433        pub minorVersion: u8,
7434        #[allow(missing_docs)]
7435        pub patchVersion: u8,
7436    }
7437    #[allow(
7438        non_camel_case_types,
7439        non_snake_case,
7440        clippy::pub_underscore_fields,
7441        clippy::style
7442    )]
7443    const _: () = {
7444        use alloy::sol_types as alloy_sol_types;
7445        {
7446            #[doc(hidden)]
7447            type UnderlyingSolTuple<'a> = ();
7448            #[doc(hidden)]
7449            type UnderlyingRustTuple<'a> = ();
7450            #[cfg(test)]
7451            #[allow(dead_code, unreachable_patterns)]
7452            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7453                match _t {
7454                    alloy_sol_types::private::AssertTypeEq::<
7455                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7456                    >(_) => {},
7457                }
7458            }
7459            #[automatically_derived]
7460            #[doc(hidden)]
7461            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7462                fn from(value: getVersionCall) -> Self {
7463                    ()
7464                }
7465            }
7466            #[automatically_derived]
7467            #[doc(hidden)]
7468            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7470                    Self {}
7471                }
7472            }
7473        }
7474        {
7475            #[doc(hidden)]
7476            type UnderlyingSolTuple<'a> = (
7477                alloy::sol_types::sol_data::Uint<8>,
7478                alloy::sol_types::sol_data::Uint<8>,
7479                alloy::sol_types::sol_data::Uint<8>,
7480            );
7481            #[doc(hidden)]
7482            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7483            #[cfg(test)]
7484            #[allow(dead_code, unreachable_patterns)]
7485            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7486                match _t {
7487                    alloy_sol_types::private::AssertTypeEq::<
7488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7489                    >(_) => {},
7490                }
7491            }
7492            #[automatically_derived]
7493            #[doc(hidden)]
7494            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7495                fn from(value: getVersionReturn) -> Self {
7496                    (value.majorVersion, value.minorVersion, value.patchVersion)
7497                }
7498            }
7499            #[automatically_derived]
7500            #[doc(hidden)]
7501            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7503                    Self {
7504                        majorVersion: tuple.0,
7505                        minorVersion: tuple.1,
7506                        patchVersion: tuple.2,
7507                    }
7508                }
7509            }
7510        }
7511        #[automatically_derived]
7512        impl alloy_sol_types::SolCall for getVersionCall {
7513            type Parameters<'a> = ();
7514            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7515            type Return = getVersionReturn;
7516            type ReturnTuple<'a> = (
7517                alloy::sol_types::sol_data::Uint<8>,
7518                alloy::sol_types::sol_data::Uint<8>,
7519                alloy::sol_types::sol_data::Uint<8>,
7520            );
7521            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7522            const SIGNATURE: &'static str = "getVersion()";
7523            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7524            #[inline]
7525            fn new<'a>(
7526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7527            ) -> Self {
7528                tuple.into()
7529            }
7530            #[inline]
7531            fn tokenize(&self) -> Self::Token<'_> {
7532                ()
7533            }
7534            #[inline]
7535            fn abi_decode_returns(
7536                data: &[u8],
7537                validate: bool,
7538            ) -> alloy_sol_types::Result<Self::Return> {
7539                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7540                    data, validate,
7541                )
7542                .map(Into::into)
7543            }
7544        }
7545    };
7546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7547    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
7548    ```solidity
7549    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
7550    ```*/
7551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7552    #[derive(Clone)]
7553    pub struct initializeCall {
7554        #[allow(missing_docs)]
7555        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7556        #[allow(missing_docs)]
7557        pub _genesisStakeTableState:
7558            <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7559        #[allow(missing_docs)]
7560        pub _stateHistoryRetentionPeriod: u32,
7561        #[allow(missing_docs)]
7562        pub owner: alloy::sol_types::private::Address,
7563    }
7564    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
7565    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7566    #[derive(Clone)]
7567    pub struct initializeReturn {}
7568    #[allow(
7569        non_camel_case_types,
7570        non_snake_case,
7571        clippy::pub_underscore_fields,
7572        clippy::style
7573    )]
7574    const _: () = {
7575        use alloy::sol_types as alloy_sol_types;
7576        {
7577            #[doc(hidden)]
7578            type UnderlyingSolTuple<'a> = (
7579                LightClient::LightClientState,
7580                LightClient::StakeTableState,
7581                alloy::sol_types::sol_data::Uint<32>,
7582                alloy::sol_types::sol_data::Address,
7583            );
7584            #[doc(hidden)]
7585            type UnderlyingRustTuple<'a> = (
7586                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7587                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7588                u32,
7589                alloy::sol_types::private::Address,
7590            );
7591            #[cfg(test)]
7592            #[allow(dead_code, unreachable_patterns)]
7593            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7594                match _t {
7595                    alloy_sol_types::private::AssertTypeEq::<
7596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7597                    >(_) => {},
7598                }
7599            }
7600            #[automatically_derived]
7601            #[doc(hidden)]
7602            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7603                fn from(value: initializeCall) -> Self {
7604                    (
7605                        value._genesis,
7606                        value._genesisStakeTableState,
7607                        value._stateHistoryRetentionPeriod,
7608                        value.owner,
7609                    )
7610                }
7611            }
7612            #[automatically_derived]
7613            #[doc(hidden)]
7614            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7616                    Self {
7617                        _genesis: tuple.0,
7618                        _genesisStakeTableState: tuple.1,
7619                        _stateHistoryRetentionPeriod: tuple.2,
7620                        owner: tuple.3,
7621                    }
7622                }
7623            }
7624        }
7625        {
7626            #[doc(hidden)]
7627            type UnderlyingSolTuple<'a> = ();
7628            #[doc(hidden)]
7629            type UnderlyingRustTuple<'a> = ();
7630            #[cfg(test)]
7631            #[allow(dead_code, unreachable_patterns)]
7632            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7633                match _t {
7634                    alloy_sol_types::private::AssertTypeEq::<
7635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7636                    >(_) => {},
7637                }
7638            }
7639            #[automatically_derived]
7640            #[doc(hidden)]
7641            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7642                fn from(value: initializeReturn) -> Self {
7643                    ()
7644                }
7645            }
7646            #[automatically_derived]
7647            #[doc(hidden)]
7648            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7650                    Self {}
7651                }
7652            }
7653        }
7654        #[automatically_derived]
7655        impl alloy_sol_types::SolCall for initializeCall {
7656            type Parameters<'a> = (
7657                LightClient::LightClientState,
7658                LightClient::StakeTableState,
7659                alloy::sol_types::sol_data::Uint<32>,
7660                alloy::sol_types::sol_data::Address,
7661            );
7662            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7663            type Return = initializeReturn;
7664            type ReturnTuple<'a> = ();
7665            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7666            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
7667            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
7668            #[inline]
7669            fn new<'a>(
7670                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7671            ) -> Self {
7672                tuple.into()
7673            }
7674            #[inline]
7675            fn tokenize(&self) -> Self::Token<'_> {
7676                (
7677                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
7678                        &self._genesis,
7679                    ),
7680                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
7681                        &self._genesisStakeTableState,
7682                    ),
7683                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
7684                        &self._stateHistoryRetentionPeriod,
7685                    ),
7686                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7687                        &self.owner,
7688                    ),
7689                )
7690            }
7691            #[inline]
7692            fn abi_decode_returns(
7693                data: &[u8],
7694                validate: bool,
7695            ) -> alloy_sol_types::Result<Self::Return> {
7696                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7697                    data, validate,
7698                )
7699                .map(Into::into)
7700            }
7701        }
7702    };
7703    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7704    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
7705    ```solidity
7706    function isPermissionedProverEnabled() external view returns (bool);
7707    ```*/
7708    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7709    #[derive(Clone)]
7710    pub struct isPermissionedProverEnabledCall {}
7711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7712    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
7713    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7714    #[derive(Clone)]
7715    pub struct isPermissionedProverEnabledReturn {
7716        #[allow(missing_docs)]
7717        pub _0: bool,
7718    }
7719    #[allow(
7720        non_camel_case_types,
7721        non_snake_case,
7722        clippy::pub_underscore_fields,
7723        clippy::style
7724    )]
7725    const _: () = {
7726        use alloy::sol_types as alloy_sol_types;
7727        {
7728            #[doc(hidden)]
7729            type UnderlyingSolTuple<'a> = ();
7730            #[doc(hidden)]
7731            type UnderlyingRustTuple<'a> = ();
7732            #[cfg(test)]
7733            #[allow(dead_code, unreachable_patterns)]
7734            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7735                match _t {
7736                    alloy_sol_types::private::AssertTypeEq::<
7737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7738                    >(_) => {},
7739                }
7740            }
7741            #[automatically_derived]
7742            #[doc(hidden)]
7743            impl ::core::convert::From<isPermissionedProverEnabledCall> for UnderlyingRustTuple<'_> {
7744                fn from(value: isPermissionedProverEnabledCall) -> Self {
7745                    ()
7746                }
7747            }
7748            #[automatically_derived]
7749            #[doc(hidden)]
7750            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledCall {
7751                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7752                    Self {}
7753                }
7754            }
7755        }
7756        {
7757            #[doc(hidden)]
7758            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7759            #[doc(hidden)]
7760            type UnderlyingRustTuple<'a> = (bool,);
7761            #[cfg(test)]
7762            #[allow(dead_code, unreachable_patterns)]
7763            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7764                match _t {
7765                    alloy_sol_types::private::AssertTypeEq::<
7766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7767                    >(_) => {},
7768                }
7769            }
7770            #[automatically_derived]
7771            #[doc(hidden)]
7772            impl ::core::convert::From<isPermissionedProverEnabledReturn> for UnderlyingRustTuple<'_> {
7773                fn from(value: isPermissionedProverEnabledReturn) -> Self {
7774                    (value._0,)
7775                }
7776            }
7777            #[automatically_derived]
7778            #[doc(hidden)]
7779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledReturn {
7780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7781                    Self { _0: tuple.0 }
7782                }
7783            }
7784        }
7785        #[automatically_derived]
7786        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
7787            type Parameters<'a> = ();
7788            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7789            type Return = isPermissionedProverEnabledReturn;
7790            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7791            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7792            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
7793            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
7794            #[inline]
7795            fn new<'a>(
7796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7797            ) -> Self {
7798                tuple.into()
7799            }
7800            #[inline]
7801            fn tokenize(&self) -> Self::Token<'_> {
7802                ()
7803            }
7804            #[inline]
7805            fn abi_decode_returns(
7806                data: &[u8],
7807                validate: bool,
7808            ) -> alloy_sol_types::Result<Self::Return> {
7809                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7810                    data, validate,
7811                )
7812                .map(Into::into)
7813            }
7814        }
7815    };
7816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7817    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
7818    ```solidity
7819    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
7820    ```*/
7821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7822    #[derive(Clone)]
7823    pub struct lagOverEscapeHatchThresholdCall {
7824        #[allow(missing_docs)]
7825        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
7826        #[allow(missing_docs)]
7827        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7828    }
7829    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7830    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
7831    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7832    #[derive(Clone)]
7833    pub struct lagOverEscapeHatchThresholdReturn {
7834        #[allow(missing_docs)]
7835        pub _0: bool,
7836    }
7837    #[allow(
7838        non_camel_case_types,
7839        non_snake_case,
7840        clippy::pub_underscore_fields,
7841        clippy::style
7842    )]
7843    const _: () = {
7844        use alloy::sol_types as alloy_sol_types;
7845        {
7846            #[doc(hidden)]
7847            type UnderlyingSolTuple<'a> = (
7848                alloy::sol_types::sol_data::Uint<256>,
7849                alloy::sol_types::sol_data::Uint<256>,
7850            );
7851            #[doc(hidden)]
7852            type UnderlyingRustTuple<'a> = (
7853                alloy::sol_types::private::primitives::aliases::U256,
7854                alloy::sol_types::private::primitives::aliases::U256,
7855            );
7856            #[cfg(test)]
7857            #[allow(dead_code, unreachable_patterns)]
7858            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7859                match _t {
7860                    alloy_sol_types::private::AssertTypeEq::<
7861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7862                    >(_) => {},
7863                }
7864            }
7865            #[automatically_derived]
7866            #[doc(hidden)]
7867            impl ::core::convert::From<lagOverEscapeHatchThresholdCall> for UnderlyingRustTuple<'_> {
7868                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
7869                    (value.blockNumber, value.threshold)
7870                }
7871            }
7872            #[automatically_derived]
7873            #[doc(hidden)]
7874            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdCall {
7875                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7876                    Self {
7877                        blockNumber: tuple.0,
7878                        threshold: tuple.1,
7879                    }
7880                }
7881            }
7882        }
7883        {
7884            #[doc(hidden)]
7885            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7886            #[doc(hidden)]
7887            type UnderlyingRustTuple<'a> = (bool,);
7888            #[cfg(test)]
7889            #[allow(dead_code, unreachable_patterns)]
7890            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7891                match _t {
7892                    alloy_sol_types::private::AssertTypeEq::<
7893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7894                    >(_) => {},
7895                }
7896            }
7897            #[automatically_derived]
7898            #[doc(hidden)]
7899            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn> for UnderlyingRustTuple<'_> {
7900                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
7901                    (value._0,)
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdReturn {
7907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7908                    Self { _0: tuple.0 }
7909                }
7910            }
7911        }
7912        #[automatically_derived]
7913        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
7914            type Parameters<'a> = (
7915                alloy::sol_types::sol_data::Uint<256>,
7916                alloy::sol_types::sol_data::Uint<256>,
7917            );
7918            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7919            type Return = lagOverEscapeHatchThresholdReturn;
7920            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7921            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7922            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
7923            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
7924            #[inline]
7925            fn new<'a>(
7926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7927            ) -> Self {
7928                tuple.into()
7929            }
7930            #[inline]
7931            fn tokenize(&self) -> Self::Token<'_> {
7932                (
7933                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7934                        &self.blockNumber,
7935                    ),
7936                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
7937                        &self.threshold,
7938                    ),
7939                )
7940            }
7941            #[inline]
7942            fn abi_decode_returns(
7943                data: &[u8],
7944                validate: bool,
7945            ) -> alloy_sol_types::Result<Self::Return> {
7946                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7947                    data, validate,
7948                )
7949                .map(Into::into)
7950            }
7951        }
7952    };
7953    #[derive()]
7954    /**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`.
7955    ```solidity
7956    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
7957    ```*/
7958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7959    #[derive(Clone)]
7960    pub struct newFinalizedStateCall {
7961        #[allow(missing_docs)]
7962        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7963        #[allow(missing_docs)]
7964        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7965    }
7966    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedStateCall) function.
7967    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7968    #[derive(Clone)]
7969    pub struct newFinalizedStateReturn {}
7970    #[allow(
7971        non_camel_case_types,
7972        non_snake_case,
7973        clippy::pub_underscore_fields,
7974        clippy::style
7975    )]
7976    const _: () = {
7977        use alloy::sol_types as alloy_sol_types;
7978        {
7979            #[doc(hidden)]
7980            type UnderlyingSolTuple<'a> =
7981                (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
7982            #[doc(hidden)]
7983            type UnderlyingRustTuple<'a> = (
7984                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7985                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
7986            );
7987            #[cfg(test)]
7988            #[allow(dead_code, unreachable_patterns)]
7989            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7990                match _t {
7991                    alloy_sol_types::private::AssertTypeEq::<
7992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7993                    >(_) => {},
7994                }
7995            }
7996            #[automatically_derived]
7997            #[doc(hidden)]
7998            impl ::core::convert::From<newFinalizedStateCall> for UnderlyingRustTuple<'_> {
7999                fn from(value: newFinalizedStateCall) -> Self {
8000                    (value.newState, value.proof)
8001                }
8002            }
8003            #[automatically_derived]
8004            #[doc(hidden)]
8005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateCall {
8006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8007                    Self {
8008                        newState: tuple.0,
8009                        proof: tuple.1,
8010                    }
8011                }
8012            }
8013        }
8014        {
8015            #[doc(hidden)]
8016            type UnderlyingSolTuple<'a> = ();
8017            #[doc(hidden)]
8018            type UnderlyingRustTuple<'a> = ();
8019            #[cfg(test)]
8020            #[allow(dead_code, unreachable_patterns)]
8021            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8022                match _t {
8023                    alloy_sol_types::private::AssertTypeEq::<
8024                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8025                    >(_) => {},
8026                }
8027            }
8028            #[automatically_derived]
8029            #[doc(hidden)]
8030            impl ::core::convert::From<newFinalizedStateReturn> for UnderlyingRustTuple<'_> {
8031                fn from(value: newFinalizedStateReturn) -> Self {
8032                    ()
8033                }
8034            }
8035            #[automatically_derived]
8036            #[doc(hidden)]
8037            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedStateReturn {
8038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8039                    Self {}
8040                }
8041            }
8042        }
8043        #[automatically_derived]
8044        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8045            type Parameters<'a> = (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
8046            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8047            type Return = newFinalizedStateReturn;
8048            type ReturnTuple<'a> = ();
8049            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8050            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))";
8051            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8052            #[inline]
8053            fn new<'a>(
8054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8055            ) -> Self {
8056                tuple.into()
8057            }
8058            #[inline]
8059            fn tokenize(&self) -> Self::Token<'_> {
8060                (
8061                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8062                        &self.newState,
8063                    ),
8064                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
8065                )
8066            }
8067            #[inline]
8068            fn abi_decode_returns(
8069                data: &[u8],
8070                validate: bool,
8071            ) -> alloy_sol_types::Result<Self::Return> {
8072                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8073                    data, validate,
8074                )
8075                .map(Into::into)
8076            }
8077        }
8078    };
8079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8080    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8081    ```solidity
8082    function owner() external view returns (address);
8083    ```*/
8084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8085    #[derive(Clone)]
8086    pub struct ownerCall {}
8087    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8088    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8089    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8090    #[derive(Clone)]
8091    pub struct ownerReturn {
8092        #[allow(missing_docs)]
8093        pub _0: alloy::sol_types::private::Address,
8094    }
8095    #[allow(
8096        non_camel_case_types,
8097        non_snake_case,
8098        clippy::pub_underscore_fields,
8099        clippy::style
8100    )]
8101    const _: () = {
8102        use alloy::sol_types as alloy_sol_types;
8103        {
8104            #[doc(hidden)]
8105            type UnderlyingSolTuple<'a> = ();
8106            #[doc(hidden)]
8107            type UnderlyingRustTuple<'a> = ();
8108            #[cfg(test)]
8109            #[allow(dead_code, unreachable_patterns)]
8110            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8111                match _t {
8112                    alloy_sol_types::private::AssertTypeEq::<
8113                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8114                    >(_) => {},
8115                }
8116            }
8117            #[automatically_derived]
8118            #[doc(hidden)]
8119            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
8120                fn from(value: ownerCall) -> Self {
8121                    ()
8122                }
8123            }
8124            #[automatically_derived]
8125            #[doc(hidden)]
8126            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
8127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8128                    Self {}
8129                }
8130            }
8131        }
8132        {
8133            #[doc(hidden)]
8134            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8135            #[doc(hidden)]
8136            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8137            #[cfg(test)]
8138            #[allow(dead_code, unreachable_patterns)]
8139            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8140                match _t {
8141                    alloy_sol_types::private::AssertTypeEq::<
8142                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8143                    >(_) => {},
8144                }
8145            }
8146            #[automatically_derived]
8147            #[doc(hidden)]
8148            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
8149                fn from(value: ownerReturn) -> Self {
8150                    (value._0,)
8151                }
8152            }
8153            #[automatically_derived]
8154            #[doc(hidden)]
8155            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
8156                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8157                    Self { _0: tuple.0 }
8158                }
8159            }
8160        }
8161        #[automatically_derived]
8162        impl alloy_sol_types::SolCall for ownerCall {
8163            type Parameters<'a> = ();
8164            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8165            type Return = ownerReturn;
8166            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8167            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8168            const SIGNATURE: &'static str = "owner()";
8169            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
8170            #[inline]
8171            fn new<'a>(
8172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8173            ) -> Self {
8174                tuple.into()
8175            }
8176            #[inline]
8177            fn tokenize(&self) -> Self::Token<'_> {
8178                ()
8179            }
8180            #[inline]
8181            fn abi_decode_returns(
8182                data: &[u8],
8183                validate: bool,
8184            ) -> alloy_sol_types::Result<Self::Return> {
8185                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8186                    data, validate,
8187                )
8188                .map(Into::into)
8189            }
8190        }
8191    };
8192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8193    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
8194    ```solidity
8195    function permissionedProver() external view returns (address);
8196    ```*/
8197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8198    #[derive(Clone)]
8199    pub struct permissionedProverCall {}
8200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8201    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
8202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8203    #[derive(Clone)]
8204    pub struct permissionedProverReturn {
8205        #[allow(missing_docs)]
8206        pub _0: alloy::sol_types::private::Address,
8207    }
8208    #[allow(
8209        non_camel_case_types,
8210        non_snake_case,
8211        clippy::pub_underscore_fields,
8212        clippy::style
8213    )]
8214    const _: () = {
8215        use alloy::sol_types as alloy_sol_types;
8216        {
8217            #[doc(hidden)]
8218            type UnderlyingSolTuple<'a> = ();
8219            #[doc(hidden)]
8220            type UnderlyingRustTuple<'a> = ();
8221            #[cfg(test)]
8222            #[allow(dead_code, unreachable_patterns)]
8223            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8224                match _t {
8225                    alloy_sol_types::private::AssertTypeEq::<
8226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8227                    >(_) => {},
8228                }
8229            }
8230            #[automatically_derived]
8231            #[doc(hidden)]
8232            impl ::core::convert::From<permissionedProverCall> for UnderlyingRustTuple<'_> {
8233                fn from(value: permissionedProverCall) -> Self {
8234                    ()
8235                }
8236            }
8237            #[automatically_derived]
8238            #[doc(hidden)]
8239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverCall {
8240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8241                    Self {}
8242                }
8243            }
8244        }
8245        {
8246            #[doc(hidden)]
8247            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8248            #[doc(hidden)]
8249            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8250            #[cfg(test)]
8251            #[allow(dead_code, unreachable_patterns)]
8252            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8253                match _t {
8254                    alloy_sol_types::private::AssertTypeEq::<
8255                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8256                    >(_) => {},
8257                }
8258            }
8259            #[automatically_derived]
8260            #[doc(hidden)]
8261            impl ::core::convert::From<permissionedProverReturn> for UnderlyingRustTuple<'_> {
8262                fn from(value: permissionedProverReturn) -> Self {
8263                    (value._0,)
8264                }
8265            }
8266            #[automatically_derived]
8267            #[doc(hidden)]
8268            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverReturn {
8269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8270                    Self { _0: tuple.0 }
8271                }
8272            }
8273        }
8274        #[automatically_derived]
8275        impl alloy_sol_types::SolCall for permissionedProverCall {
8276            type Parameters<'a> = ();
8277            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8278            type Return = permissionedProverReturn;
8279            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8280            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8281            const SIGNATURE: &'static str = "permissionedProver()";
8282            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
8283            #[inline]
8284            fn new<'a>(
8285                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8286            ) -> Self {
8287                tuple.into()
8288            }
8289            #[inline]
8290            fn tokenize(&self) -> Self::Token<'_> {
8291                ()
8292            }
8293            #[inline]
8294            fn abi_decode_returns(
8295                data: &[u8],
8296                validate: bool,
8297            ) -> alloy_sol_types::Result<Self::Return> {
8298                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8299                    data, validate,
8300                )
8301                .map(Into::into)
8302            }
8303        }
8304    };
8305    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8306    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
8307    ```solidity
8308    function proxiableUUID() external view returns (bytes32);
8309    ```*/
8310    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8311    #[derive(Clone)]
8312    pub struct proxiableUUIDCall {}
8313    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8314    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
8315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8316    #[derive(Clone)]
8317    pub struct proxiableUUIDReturn {
8318        #[allow(missing_docs)]
8319        pub _0: alloy::sol_types::private::FixedBytes<32>,
8320    }
8321    #[allow(
8322        non_camel_case_types,
8323        non_snake_case,
8324        clippy::pub_underscore_fields,
8325        clippy::style
8326    )]
8327    const _: () = {
8328        use alloy::sol_types as alloy_sol_types;
8329        {
8330            #[doc(hidden)]
8331            type UnderlyingSolTuple<'a> = ();
8332            #[doc(hidden)]
8333            type UnderlyingRustTuple<'a> = ();
8334            #[cfg(test)]
8335            #[allow(dead_code, unreachable_patterns)]
8336            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8337                match _t {
8338                    alloy_sol_types::private::AssertTypeEq::<
8339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8340                    >(_) => {},
8341                }
8342            }
8343            #[automatically_derived]
8344            #[doc(hidden)]
8345            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
8346                fn from(value: proxiableUUIDCall) -> Self {
8347                    ()
8348                }
8349            }
8350            #[automatically_derived]
8351            #[doc(hidden)]
8352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
8353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8354                    Self {}
8355                }
8356            }
8357        }
8358        {
8359            #[doc(hidden)]
8360            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8361            #[doc(hidden)]
8362            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8363            #[cfg(test)]
8364            #[allow(dead_code, unreachable_patterns)]
8365            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8366                match _t {
8367                    alloy_sol_types::private::AssertTypeEq::<
8368                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8369                    >(_) => {},
8370                }
8371            }
8372            #[automatically_derived]
8373            #[doc(hidden)]
8374            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8375                fn from(value: proxiableUUIDReturn) -> Self {
8376                    (value._0,)
8377                }
8378            }
8379            #[automatically_derived]
8380            #[doc(hidden)]
8381            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8383                    Self { _0: tuple.0 }
8384                }
8385            }
8386        }
8387        #[automatically_derived]
8388        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8389            type Parameters<'a> = ();
8390            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8391            type Return = proxiableUUIDReturn;
8392            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8393            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8394            const SIGNATURE: &'static str = "proxiableUUID()";
8395            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8396            #[inline]
8397            fn new<'a>(
8398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8399            ) -> Self {
8400                tuple.into()
8401            }
8402            #[inline]
8403            fn tokenize(&self) -> Self::Token<'_> {
8404                ()
8405            }
8406            #[inline]
8407            fn abi_decode_returns(
8408                data: &[u8],
8409                validate: bool,
8410            ) -> alloy_sol_types::Result<Self::Return> {
8411                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8412                    data, validate,
8413                )
8414                .map(Into::into)
8415            }
8416        }
8417    };
8418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8419    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8420    ```solidity
8421    function renounceOwnership() external;
8422    ```*/
8423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8424    #[derive(Clone)]
8425    pub struct renounceOwnershipCall {}
8426    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8428    #[derive(Clone)]
8429    pub struct renounceOwnershipReturn {}
8430    #[allow(
8431        non_camel_case_types,
8432        non_snake_case,
8433        clippy::pub_underscore_fields,
8434        clippy::style
8435    )]
8436    const _: () = {
8437        use alloy::sol_types as alloy_sol_types;
8438        {
8439            #[doc(hidden)]
8440            type UnderlyingSolTuple<'a> = ();
8441            #[doc(hidden)]
8442            type UnderlyingRustTuple<'a> = ();
8443            #[cfg(test)]
8444            #[allow(dead_code, unreachable_patterns)]
8445            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8446                match _t {
8447                    alloy_sol_types::private::AssertTypeEq::<
8448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8449                    >(_) => {},
8450                }
8451            }
8452            #[automatically_derived]
8453            #[doc(hidden)]
8454            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
8455                fn from(value: renounceOwnershipCall) -> Self {
8456                    ()
8457                }
8458            }
8459            #[automatically_derived]
8460            #[doc(hidden)]
8461            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
8462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8463                    Self {}
8464                }
8465            }
8466        }
8467        {
8468            #[doc(hidden)]
8469            type UnderlyingSolTuple<'a> = ();
8470            #[doc(hidden)]
8471            type UnderlyingRustTuple<'a> = ();
8472            #[cfg(test)]
8473            #[allow(dead_code, unreachable_patterns)]
8474            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8475                match _t {
8476                    alloy_sol_types::private::AssertTypeEq::<
8477                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8478                    >(_) => {},
8479                }
8480            }
8481            #[automatically_derived]
8482            #[doc(hidden)]
8483            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
8484                fn from(value: renounceOwnershipReturn) -> Self {
8485                    ()
8486                }
8487            }
8488            #[automatically_derived]
8489            #[doc(hidden)]
8490            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
8491                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8492                    Self {}
8493                }
8494            }
8495        }
8496        #[automatically_derived]
8497        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8498            type Parameters<'a> = ();
8499            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8500            type Return = renounceOwnershipReturn;
8501            type ReturnTuple<'a> = ();
8502            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8503            const SIGNATURE: &'static str = "renounceOwnership()";
8504            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8505            #[inline]
8506            fn new<'a>(
8507                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8508            ) -> Self {
8509                tuple.into()
8510            }
8511            #[inline]
8512            fn tokenize(&self) -> Self::Token<'_> {
8513                ()
8514            }
8515            #[inline]
8516            fn abi_decode_returns(
8517                data: &[u8],
8518                validate: bool,
8519            ) -> alloy_sol_types::Result<Self::Return> {
8520                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8521                    data, validate,
8522                )
8523                .map(Into::into)
8524            }
8525        }
8526    };
8527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8528    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
8529    ```solidity
8530    function setFinalizedState(LightClient.LightClientState memory state) external;
8531    ```*/
8532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8533    #[derive(Clone)]
8534    pub struct setFinalizedStateCall {
8535        #[allow(missing_docs)]
8536        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8537    }
8538    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
8539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8540    #[derive(Clone)]
8541    pub struct setFinalizedStateReturn {}
8542    #[allow(
8543        non_camel_case_types,
8544        non_snake_case,
8545        clippy::pub_underscore_fields,
8546        clippy::style
8547    )]
8548    const _: () = {
8549        use alloy::sol_types as alloy_sol_types;
8550        {
8551            #[doc(hidden)]
8552            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
8553            #[doc(hidden)]
8554            type UnderlyingRustTuple<'a> =
8555                (<LightClient::LightClientState as alloy::sol_types::SolType>::RustType,);
8556            #[cfg(test)]
8557            #[allow(dead_code, unreachable_patterns)]
8558            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8559                match _t {
8560                    alloy_sol_types::private::AssertTypeEq::<
8561                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8562                    >(_) => {},
8563                }
8564            }
8565            #[automatically_derived]
8566            #[doc(hidden)]
8567            impl ::core::convert::From<setFinalizedStateCall> for UnderlyingRustTuple<'_> {
8568                fn from(value: setFinalizedStateCall) -> Self {
8569                    (value.state,)
8570                }
8571            }
8572            #[automatically_derived]
8573            #[doc(hidden)]
8574            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setFinalizedStateCall {
8575                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8576                    Self { state: tuple.0 }
8577                }
8578            }
8579        }
8580        {
8581            #[doc(hidden)]
8582            type UnderlyingSolTuple<'a> = ();
8583            #[doc(hidden)]
8584            type UnderlyingRustTuple<'a> = ();
8585            #[cfg(test)]
8586            #[allow(dead_code, unreachable_patterns)]
8587            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8588                match _t {
8589                    alloy_sol_types::private::AssertTypeEq::<
8590                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8591                    >(_) => {},
8592                }
8593            }
8594            #[automatically_derived]
8595            #[doc(hidden)]
8596            impl ::core::convert::From<setFinalizedStateReturn> for UnderlyingRustTuple<'_> {
8597                fn from(value: setFinalizedStateReturn) -> Self {
8598                    ()
8599                }
8600            }
8601            #[automatically_derived]
8602            #[doc(hidden)]
8603            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setFinalizedStateReturn {
8604                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8605                    Self {}
8606                }
8607            }
8608        }
8609        #[automatically_derived]
8610        impl alloy_sol_types::SolCall for setFinalizedStateCall {
8611            type Parameters<'a> = (LightClient::LightClientState,);
8612            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8613            type Return = setFinalizedStateReturn;
8614            type ReturnTuple<'a> = ();
8615            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8616            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
8617            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
8618            #[inline]
8619            fn new<'a>(
8620                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8621            ) -> Self {
8622                tuple.into()
8623            }
8624            #[inline]
8625            fn tokenize(&self) -> Self::Token<'_> {
8626                (
8627                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8628                        &self.state,
8629                    ),
8630                )
8631            }
8632            #[inline]
8633            fn abi_decode_returns(
8634                data: &[u8],
8635                validate: bool,
8636            ) -> alloy_sol_types::Result<Self::Return> {
8637                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8638                    data, validate,
8639                )
8640                .map(Into::into)
8641            }
8642        }
8643    };
8644    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8645    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
8646    ```solidity
8647    function setHotShotDownSince(uint256 l1Height) external;
8648    ```*/
8649    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8650    #[derive(Clone)]
8651    pub struct setHotShotDownSinceCall {
8652        #[allow(missing_docs)]
8653        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
8654    }
8655    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
8656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8657    #[derive(Clone)]
8658    pub struct setHotShotDownSinceReturn {}
8659    #[allow(
8660        non_camel_case_types,
8661        non_snake_case,
8662        clippy::pub_underscore_fields,
8663        clippy::style
8664    )]
8665    const _: () = {
8666        use alloy::sol_types as alloy_sol_types;
8667        {
8668            #[doc(hidden)]
8669            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8670            #[doc(hidden)]
8671            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8672            #[cfg(test)]
8673            #[allow(dead_code, unreachable_patterns)]
8674            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8675                match _t {
8676                    alloy_sol_types::private::AssertTypeEq::<
8677                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8678                    >(_) => {},
8679                }
8680            }
8681            #[automatically_derived]
8682            #[doc(hidden)]
8683            impl ::core::convert::From<setHotShotDownSinceCall> for UnderlyingRustTuple<'_> {
8684                fn from(value: setHotShotDownSinceCall) -> Self {
8685                    (value.l1Height,)
8686                }
8687            }
8688            #[automatically_derived]
8689            #[doc(hidden)]
8690            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotDownSinceCall {
8691                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8692                    Self { l1Height: tuple.0 }
8693                }
8694            }
8695        }
8696        {
8697            #[doc(hidden)]
8698            type UnderlyingSolTuple<'a> = ();
8699            #[doc(hidden)]
8700            type UnderlyingRustTuple<'a> = ();
8701            #[cfg(test)]
8702            #[allow(dead_code, unreachable_patterns)]
8703            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8704                match _t {
8705                    alloy_sol_types::private::AssertTypeEq::<
8706                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8707                    >(_) => {},
8708                }
8709            }
8710            #[automatically_derived]
8711            #[doc(hidden)]
8712            impl ::core::convert::From<setHotShotDownSinceReturn> for UnderlyingRustTuple<'_> {
8713                fn from(value: setHotShotDownSinceReturn) -> Self {
8714                    ()
8715                }
8716            }
8717            #[automatically_derived]
8718            #[doc(hidden)]
8719            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotDownSinceReturn {
8720                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8721                    Self {}
8722                }
8723            }
8724        }
8725        #[automatically_derived]
8726        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
8727            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8728            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8729            type Return = setHotShotDownSinceReturn;
8730            type ReturnTuple<'a> = ();
8731            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8732            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
8733            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
8734            #[inline]
8735            fn new<'a>(
8736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8737            ) -> Self {
8738                tuple.into()
8739            }
8740            #[inline]
8741            fn tokenize(&self) -> Self::Token<'_> {
8742                (
8743                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8744                        &self.l1Height,
8745                    ),
8746                )
8747            }
8748            #[inline]
8749            fn abi_decode_returns(
8750                data: &[u8],
8751                validate: bool,
8752            ) -> alloy_sol_types::Result<Self::Return> {
8753                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8754                    data, validate,
8755                )
8756                .map(Into::into)
8757            }
8758        }
8759    };
8760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8761    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
8762    ```solidity
8763    function setHotShotUp() external;
8764    ```*/
8765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8766    #[derive(Clone)]
8767    pub struct setHotShotUpCall {}
8768    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
8769    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8770    #[derive(Clone)]
8771    pub struct setHotShotUpReturn {}
8772    #[allow(
8773        non_camel_case_types,
8774        non_snake_case,
8775        clippy::pub_underscore_fields,
8776        clippy::style
8777    )]
8778    const _: () = {
8779        use alloy::sol_types as alloy_sol_types;
8780        {
8781            #[doc(hidden)]
8782            type UnderlyingSolTuple<'a> = ();
8783            #[doc(hidden)]
8784            type UnderlyingRustTuple<'a> = ();
8785            #[cfg(test)]
8786            #[allow(dead_code, unreachable_patterns)]
8787            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8788                match _t {
8789                    alloy_sol_types::private::AssertTypeEq::<
8790                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8791                    >(_) => {},
8792                }
8793            }
8794            #[automatically_derived]
8795            #[doc(hidden)]
8796            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
8797                fn from(value: setHotShotUpCall) -> Self {
8798                    ()
8799                }
8800            }
8801            #[automatically_derived]
8802            #[doc(hidden)]
8803            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
8804                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8805                    Self {}
8806                }
8807            }
8808        }
8809        {
8810            #[doc(hidden)]
8811            type UnderlyingSolTuple<'a> = ();
8812            #[doc(hidden)]
8813            type UnderlyingRustTuple<'a> = ();
8814            #[cfg(test)]
8815            #[allow(dead_code, unreachable_patterns)]
8816            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8817                match _t {
8818                    alloy_sol_types::private::AssertTypeEq::<
8819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8820                    >(_) => {},
8821                }
8822            }
8823            #[automatically_derived]
8824            #[doc(hidden)]
8825            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
8826                fn from(value: setHotShotUpReturn) -> Self {
8827                    ()
8828                }
8829            }
8830            #[automatically_derived]
8831            #[doc(hidden)]
8832            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
8833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8834                    Self {}
8835                }
8836            }
8837        }
8838        #[automatically_derived]
8839        impl alloy_sol_types::SolCall for setHotShotUpCall {
8840            type Parameters<'a> = ();
8841            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8842            type Return = setHotShotUpReturn;
8843            type ReturnTuple<'a> = ();
8844            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8845            const SIGNATURE: &'static str = "setHotShotUp()";
8846            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
8847            #[inline]
8848            fn new<'a>(
8849                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8850            ) -> Self {
8851                tuple.into()
8852            }
8853            #[inline]
8854            fn tokenize(&self) -> Self::Token<'_> {
8855                ()
8856            }
8857            #[inline]
8858            fn abi_decode_returns(
8859                data: &[u8],
8860                validate: bool,
8861            ) -> alloy_sol_types::Result<Self::Return> {
8862                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8863                    data, validate,
8864                )
8865                .map(Into::into)
8866            }
8867        }
8868    };
8869    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8870    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
8871    ```solidity
8872    function setPermissionedProver(address prover) external;
8873    ```*/
8874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8875    #[derive(Clone)]
8876    pub struct setPermissionedProverCall {
8877        #[allow(missing_docs)]
8878        pub prover: alloy::sol_types::private::Address,
8879    }
8880    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
8881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8882    #[derive(Clone)]
8883    pub struct setPermissionedProverReturn {}
8884    #[allow(
8885        non_camel_case_types,
8886        non_snake_case,
8887        clippy::pub_underscore_fields,
8888        clippy::style
8889    )]
8890    const _: () = {
8891        use alloy::sol_types as alloy_sol_types;
8892        {
8893            #[doc(hidden)]
8894            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8895            #[doc(hidden)]
8896            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8897            #[cfg(test)]
8898            #[allow(dead_code, unreachable_patterns)]
8899            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8900                match _t {
8901                    alloy_sol_types::private::AssertTypeEq::<
8902                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8903                    >(_) => {},
8904                }
8905            }
8906            #[automatically_derived]
8907            #[doc(hidden)]
8908            impl ::core::convert::From<setPermissionedProverCall> for UnderlyingRustTuple<'_> {
8909                fn from(value: setPermissionedProverCall) -> Self {
8910                    (value.prover,)
8911                }
8912            }
8913            #[automatically_derived]
8914            #[doc(hidden)]
8915            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverCall {
8916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8917                    Self { prover: tuple.0 }
8918                }
8919            }
8920        }
8921        {
8922            #[doc(hidden)]
8923            type UnderlyingSolTuple<'a> = ();
8924            #[doc(hidden)]
8925            type UnderlyingRustTuple<'a> = ();
8926            #[cfg(test)]
8927            #[allow(dead_code, unreachable_patterns)]
8928            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8929                match _t {
8930                    alloy_sol_types::private::AssertTypeEq::<
8931                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8932                    >(_) => {},
8933                }
8934            }
8935            #[automatically_derived]
8936            #[doc(hidden)]
8937            impl ::core::convert::From<setPermissionedProverReturn> for UnderlyingRustTuple<'_> {
8938                fn from(value: setPermissionedProverReturn) -> Self {
8939                    ()
8940                }
8941            }
8942            #[automatically_derived]
8943            #[doc(hidden)]
8944            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverReturn {
8945                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8946                    Self {}
8947                }
8948            }
8949        }
8950        #[automatically_derived]
8951        impl alloy_sol_types::SolCall for setPermissionedProverCall {
8952            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8953            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8954            type Return = setPermissionedProverReturn;
8955            type ReturnTuple<'a> = ();
8956            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8957            const SIGNATURE: &'static str = "setPermissionedProver(address)";
8958            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
8959            #[inline]
8960            fn new<'a>(
8961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8962            ) -> Self {
8963                tuple.into()
8964            }
8965            #[inline]
8966            fn tokenize(&self) -> Self::Token<'_> {
8967                (
8968                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8969                        &self.prover,
8970                    ),
8971                )
8972            }
8973            #[inline]
8974            fn abi_decode_returns(
8975                data: &[u8],
8976                validate: bool,
8977            ) -> alloy_sol_types::Result<Self::Return> {
8978                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8979                    data, validate,
8980                )
8981                .map(Into::into)
8982            }
8983        }
8984    };
8985    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8986    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
8987    ```solidity
8988    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
8989    ```*/
8990    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8991    #[derive(Clone)]
8992    pub struct setStateHistoryCall {
8993        #[allow(missing_docs)]
8994        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
8995            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
8996        >,
8997    }
8998    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
8999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9000    #[derive(Clone)]
9001    pub struct setStateHistoryReturn {}
9002    #[allow(
9003        non_camel_case_types,
9004        non_snake_case,
9005        clippy::pub_underscore_fields,
9006        clippy::style
9007    )]
9008    const _: () = {
9009        use alloy::sol_types as alloy_sol_types;
9010        {
9011            #[doc(hidden)]
9012            type UnderlyingSolTuple<'a> =
9013                (alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,);
9014            #[doc(hidden)]
9015            type UnderlyingRustTuple<'a> = (
9016                alloy::sol_types::private::Vec<
9017                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
9018                >,
9019            );
9020            #[cfg(test)]
9021            #[allow(dead_code, unreachable_patterns)]
9022            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9023                match _t {
9024                    alloy_sol_types::private::AssertTypeEq::<
9025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9026                    >(_) => {},
9027                }
9028            }
9029            #[automatically_derived]
9030            #[doc(hidden)]
9031            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
9032                fn from(value: setStateHistoryCall) -> Self {
9033                    (value._stateHistoryCommitments,)
9034                }
9035            }
9036            #[automatically_derived]
9037            #[doc(hidden)]
9038            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
9039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9040                    Self {
9041                        _stateHistoryCommitments: tuple.0,
9042                    }
9043                }
9044            }
9045        }
9046        {
9047            #[doc(hidden)]
9048            type UnderlyingSolTuple<'a> = ();
9049            #[doc(hidden)]
9050            type UnderlyingRustTuple<'a> = ();
9051            #[cfg(test)]
9052            #[allow(dead_code, unreachable_patterns)]
9053            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9054                match _t {
9055                    alloy_sol_types::private::AssertTypeEq::<
9056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9057                    >(_) => {},
9058                }
9059            }
9060            #[automatically_derived]
9061            #[doc(hidden)]
9062            impl ::core::convert::From<setStateHistoryReturn> for UnderlyingRustTuple<'_> {
9063                fn from(value: setStateHistoryReturn) -> Self {
9064                    ()
9065                }
9066            }
9067            #[automatically_derived]
9068            #[doc(hidden)]
9069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryReturn {
9070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9071                    Self {}
9072                }
9073            }
9074        }
9075        #[automatically_derived]
9076        impl alloy_sol_types::SolCall for setStateHistoryCall {
9077            type Parameters<'a> =
9078                (alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,);
9079            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9080            type Return = setStateHistoryReturn;
9081            type ReturnTuple<'a> = ();
9082            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9083            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
9084            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
9085            #[inline]
9086            fn new<'a>(
9087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9088            ) -> Self {
9089                tuple.into()
9090            }
9091            #[inline]
9092            fn tokenize(&self) -> Self::Token<'_> {
9093                (<alloy::sol_types::sol_data::Array<
9094                    LightClient::StateHistoryCommitment,
9095                > as alloy_sol_types::SolType>::tokenize(
9096                    &self._stateHistoryCommitments,
9097                ),)
9098            }
9099            #[inline]
9100            fn abi_decode_returns(
9101                data: &[u8],
9102                validate: bool,
9103            ) -> alloy_sol_types::Result<Self::Return> {
9104                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9105                    data, validate,
9106                )
9107                .map(Into::into)
9108            }
9109        }
9110    };
9111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9112    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9113    ```solidity
9114    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9115    ```*/
9116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9117    #[derive(Clone)]
9118    pub struct setstateHistoryRetentionPeriodCall {
9119        #[allow(missing_docs)]
9120        pub historySeconds: u32,
9121    }
9122    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9124    #[derive(Clone)]
9125    pub struct setstateHistoryRetentionPeriodReturn {}
9126    #[allow(
9127        non_camel_case_types,
9128        non_snake_case,
9129        clippy::pub_underscore_fields,
9130        clippy::style
9131    )]
9132    const _: () = {
9133        use alloy::sol_types as alloy_sol_types;
9134        {
9135            #[doc(hidden)]
9136            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9137            #[doc(hidden)]
9138            type UnderlyingRustTuple<'a> = (u32,);
9139            #[cfg(test)]
9140            #[allow(dead_code, unreachable_patterns)]
9141            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9142                match _t {
9143                    alloy_sol_types::private::AssertTypeEq::<
9144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9145                    >(_) => {},
9146                }
9147            }
9148            #[automatically_derived]
9149            #[doc(hidden)]
9150            impl ::core::convert::From<setstateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
9151                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9152                    (value.historySeconds,)
9153                }
9154            }
9155            #[automatically_derived]
9156            #[doc(hidden)]
9157            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodCall {
9158                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9159                    Self {
9160                        historySeconds: tuple.0,
9161                    }
9162                }
9163            }
9164        }
9165        {
9166            #[doc(hidden)]
9167            type UnderlyingSolTuple<'a> = ();
9168            #[doc(hidden)]
9169            type UnderlyingRustTuple<'a> = ();
9170            #[cfg(test)]
9171            #[allow(dead_code, unreachable_patterns)]
9172            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9173                match _t {
9174                    alloy_sol_types::private::AssertTypeEq::<
9175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9176                    >(_) => {},
9177                }
9178            }
9179            #[automatically_derived]
9180            #[doc(hidden)]
9181            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
9182                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9183                    ()
9184                }
9185            }
9186            #[automatically_derived]
9187            #[doc(hidden)]
9188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodReturn {
9189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9190                    Self {}
9191                }
9192            }
9193        }
9194        #[automatically_derived]
9195        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9196            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9197            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9198            type Return = setstateHistoryRetentionPeriodReturn;
9199            type ReturnTuple<'a> = ();
9200            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9201            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9202            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9203            #[inline]
9204            fn new<'a>(
9205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9206            ) -> Self {
9207                tuple.into()
9208            }
9209            #[inline]
9210            fn tokenize(&self) -> Self::Token<'_> {
9211                (
9212                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
9213                        &self.historySeconds,
9214                    ),
9215                )
9216            }
9217            #[inline]
9218            fn abi_decode_returns(
9219                data: &[u8],
9220                validate: bool,
9221            ) -> alloy_sol_types::Result<Self::Return> {
9222                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9223                    data, validate,
9224                )
9225                .map(Into::into)
9226            }
9227        }
9228    };
9229    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9230    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9231    ```solidity
9232    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9233    ```*/
9234    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9235    #[derive(Clone)]
9236    pub struct stateHistoryCommitmentsCall {
9237        #[allow(missing_docs)]
9238        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9239    }
9240    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9241    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9243    #[derive(Clone)]
9244    pub struct stateHistoryCommitmentsReturn {
9245        #[allow(missing_docs)]
9246        pub l1BlockHeight: u64,
9247        #[allow(missing_docs)]
9248        pub l1BlockTimestamp: u64,
9249        #[allow(missing_docs)]
9250        pub hotShotBlockHeight: u64,
9251        #[allow(missing_docs)]
9252        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9253    }
9254    #[allow(
9255        non_camel_case_types,
9256        non_snake_case,
9257        clippy::pub_underscore_fields,
9258        clippy::style
9259    )]
9260    const _: () = {
9261        use alloy::sol_types as alloy_sol_types;
9262        {
9263            #[doc(hidden)]
9264            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9265            #[doc(hidden)]
9266            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
9267            #[cfg(test)]
9268            #[allow(dead_code, unreachable_patterns)]
9269            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9270                match _t {
9271                    alloy_sol_types::private::AssertTypeEq::<
9272                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9273                    >(_) => {},
9274                }
9275            }
9276            #[automatically_derived]
9277            #[doc(hidden)]
9278            impl ::core::convert::From<stateHistoryCommitmentsCall> for UnderlyingRustTuple<'_> {
9279                fn from(value: stateHistoryCommitmentsCall) -> Self {
9280                    (value._0,)
9281                }
9282            }
9283            #[automatically_derived]
9284            #[doc(hidden)]
9285            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsCall {
9286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9287                    Self { _0: tuple.0 }
9288                }
9289            }
9290        }
9291        {
9292            #[doc(hidden)]
9293            type UnderlyingSolTuple<'a> = (
9294                alloy::sol_types::sol_data::Uint<64>,
9295                alloy::sol_types::sol_data::Uint<64>,
9296                alloy::sol_types::sol_data::Uint<64>,
9297                BN254::ScalarField,
9298            );
9299            #[doc(hidden)]
9300            type UnderlyingRustTuple<'a> = (
9301                u64,
9302                u64,
9303                u64,
9304                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9305            );
9306            #[cfg(test)]
9307            #[allow(dead_code, unreachable_patterns)]
9308            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9309                match _t {
9310                    alloy_sol_types::private::AssertTypeEq::<
9311                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9312                    >(_) => {},
9313                }
9314            }
9315            #[automatically_derived]
9316            #[doc(hidden)]
9317            impl ::core::convert::From<stateHistoryCommitmentsReturn> for UnderlyingRustTuple<'_> {
9318                fn from(value: stateHistoryCommitmentsReturn) -> Self {
9319                    (
9320                        value.l1BlockHeight,
9321                        value.l1BlockTimestamp,
9322                        value.hotShotBlockHeight,
9323                        value.hotShotBlockCommRoot,
9324                    )
9325                }
9326            }
9327            #[automatically_derived]
9328            #[doc(hidden)]
9329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsReturn {
9330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9331                    Self {
9332                        l1BlockHeight: tuple.0,
9333                        l1BlockTimestamp: tuple.1,
9334                        hotShotBlockHeight: tuple.2,
9335                        hotShotBlockCommRoot: tuple.3,
9336                    }
9337                }
9338            }
9339        }
9340        #[automatically_derived]
9341        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
9342            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9343            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9344            type Return = stateHistoryCommitmentsReturn;
9345            type ReturnTuple<'a> = (
9346                alloy::sol_types::sol_data::Uint<64>,
9347                alloy::sol_types::sol_data::Uint<64>,
9348                alloy::sol_types::sol_data::Uint<64>,
9349                BN254::ScalarField,
9350            );
9351            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9352            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
9353            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
9354            #[inline]
9355            fn new<'a>(
9356                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9357            ) -> Self {
9358                tuple.into()
9359            }
9360            #[inline]
9361            fn tokenize(&self) -> Self::Token<'_> {
9362                (
9363                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9364                        &self._0,
9365                    ),
9366                )
9367            }
9368            #[inline]
9369            fn abi_decode_returns(
9370                data: &[u8],
9371                validate: bool,
9372            ) -> alloy_sol_types::Result<Self::Return> {
9373                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9374                    data, validate,
9375                )
9376                .map(Into::into)
9377            }
9378        }
9379    };
9380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9381    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
9382    ```solidity
9383    function stateHistoryFirstIndex() external view returns (uint64);
9384    ```*/
9385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9386    #[derive(Clone)]
9387    pub struct stateHistoryFirstIndexCall {}
9388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9389    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
9390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9391    #[derive(Clone)]
9392    pub struct stateHistoryFirstIndexReturn {
9393        #[allow(missing_docs)]
9394        pub _0: u64,
9395    }
9396    #[allow(
9397        non_camel_case_types,
9398        non_snake_case,
9399        clippy::pub_underscore_fields,
9400        clippy::style
9401    )]
9402    const _: () = {
9403        use alloy::sol_types as alloy_sol_types;
9404        {
9405            #[doc(hidden)]
9406            type UnderlyingSolTuple<'a> = ();
9407            #[doc(hidden)]
9408            type UnderlyingRustTuple<'a> = ();
9409            #[cfg(test)]
9410            #[allow(dead_code, unreachable_patterns)]
9411            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9412                match _t {
9413                    alloy_sol_types::private::AssertTypeEq::<
9414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9415                    >(_) => {},
9416                }
9417            }
9418            #[automatically_derived]
9419            #[doc(hidden)]
9420            impl ::core::convert::From<stateHistoryFirstIndexCall> for UnderlyingRustTuple<'_> {
9421                fn from(value: stateHistoryFirstIndexCall) -> Self {
9422                    ()
9423                }
9424            }
9425            #[automatically_derived]
9426            #[doc(hidden)]
9427            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexCall {
9428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9429                    Self {}
9430                }
9431            }
9432        }
9433        {
9434            #[doc(hidden)]
9435            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9436            #[doc(hidden)]
9437            type UnderlyingRustTuple<'a> = (u64,);
9438            #[cfg(test)]
9439            #[allow(dead_code, unreachable_patterns)]
9440            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9441                match _t {
9442                    alloy_sol_types::private::AssertTypeEq::<
9443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9444                    >(_) => {},
9445                }
9446            }
9447            #[automatically_derived]
9448            #[doc(hidden)]
9449            impl ::core::convert::From<stateHistoryFirstIndexReturn> for UnderlyingRustTuple<'_> {
9450                fn from(value: stateHistoryFirstIndexReturn) -> Self {
9451                    (value._0,)
9452                }
9453            }
9454            #[automatically_derived]
9455            #[doc(hidden)]
9456            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexReturn {
9457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9458                    Self { _0: tuple.0 }
9459                }
9460            }
9461        }
9462        #[automatically_derived]
9463        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
9464            type Parameters<'a> = ();
9465            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9466            type Return = stateHistoryFirstIndexReturn;
9467            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9468            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9469            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
9470            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
9471            #[inline]
9472            fn new<'a>(
9473                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9474            ) -> Self {
9475                tuple.into()
9476            }
9477            #[inline]
9478            fn tokenize(&self) -> Self::Token<'_> {
9479                ()
9480            }
9481            #[inline]
9482            fn abi_decode_returns(
9483                data: &[u8],
9484                validate: bool,
9485            ) -> alloy_sol_types::Result<Self::Return> {
9486                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9487                    data, validate,
9488                )
9489                .map(Into::into)
9490            }
9491        }
9492    };
9493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9494    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
9495    ```solidity
9496    function stateHistoryRetentionPeriod() external view returns (uint32);
9497    ```*/
9498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9499    #[derive(Clone)]
9500    pub struct stateHistoryRetentionPeriodCall {}
9501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9502    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
9503    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9504    #[derive(Clone)]
9505    pub struct stateHistoryRetentionPeriodReturn {
9506        #[allow(missing_docs)]
9507        pub _0: u32,
9508    }
9509    #[allow(
9510        non_camel_case_types,
9511        non_snake_case,
9512        clippy::pub_underscore_fields,
9513        clippy::style
9514    )]
9515    const _: () = {
9516        use alloy::sol_types as alloy_sol_types;
9517        {
9518            #[doc(hidden)]
9519            type UnderlyingSolTuple<'a> = ();
9520            #[doc(hidden)]
9521            type UnderlyingRustTuple<'a> = ();
9522            #[cfg(test)]
9523            #[allow(dead_code, unreachable_patterns)]
9524            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9525                match _t {
9526                    alloy_sol_types::private::AssertTypeEq::<
9527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9528                    >(_) => {},
9529                }
9530            }
9531            #[automatically_derived]
9532            #[doc(hidden)]
9533            impl ::core::convert::From<stateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
9534                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
9535                    ()
9536                }
9537            }
9538            #[automatically_derived]
9539            #[doc(hidden)]
9540            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodCall {
9541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9542                    Self {}
9543                }
9544            }
9545        }
9546        {
9547            #[doc(hidden)]
9548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9549            #[doc(hidden)]
9550            type UnderlyingRustTuple<'a> = (u32,);
9551            #[cfg(test)]
9552            #[allow(dead_code, unreachable_patterns)]
9553            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9554                match _t {
9555                    alloy_sol_types::private::AssertTypeEq::<
9556                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9557                    >(_) => {},
9558                }
9559            }
9560            #[automatically_derived]
9561            #[doc(hidden)]
9562            impl ::core::convert::From<stateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
9563                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
9564                    (value._0,)
9565                }
9566            }
9567            #[automatically_derived]
9568            #[doc(hidden)]
9569            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodReturn {
9570                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9571                    Self { _0: tuple.0 }
9572                }
9573            }
9574        }
9575        #[automatically_derived]
9576        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
9577            type Parameters<'a> = ();
9578            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9579            type Return = stateHistoryRetentionPeriodReturn;
9580            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9581            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9582            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
9583            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
9584            #[inline]
9585            fn new<'a>(
9586                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9587            ) -> Self {
9588                tuple.into()
9589            }
9590            #[inline]
9591            fn tokenize(&self) -> Self::Token<'_> {
9592                ()
9593            }
9594            #[inline]
9595            fn abi_decode_returns(
9596                data: &[u8],
9597                validate: bool,
9598            ) -> alloy_sol_types::Result<Self::Return> {
9599                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9600                    data, validate,
9601                )
9602                .map(Into::into)
9603            }
9604        }
9605    };
9606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9607    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
9608    ```solidity
9609    function transferOwnership(address newOwner) external;
9610    ```*/
9611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9612    #[derive(Clone)]
9613    pub struct transferOwnershipCall {
9614        #[allow(missing_docs)]
9615        pub newOwner: alloy::sol_types::private::Address,
9616    }
9617    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
9618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9619    #[derive(Clone)]
9620    pub struct transferOwnershipReturn {}
9621    #[allow(
9622        non_camel_case_types,
9623        non_snake_case,
9624        clippy::pub_underscore_fields,
9625        clippy::style
9626    )]
9627    const _: () = {
9628        use alloy::sol_types as alloy_sol_types;
9629        {
9630            #[doc(hidden)]
9631            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9632            #[doc(hidden)]
9633            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9634            #[cfg(test)]
9635            #[allow(dead_code, unreachable_patterns)]
9636            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9637                match _t {
9638                    alloy_sol_types::private::AssertTypeEq::<
9639                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9640                    >(_) => {},
9641                }
9642            }
9643            #[automatically_derived]
9644            #[doc(hidden)]
9645            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
9646                fn from(value: transferOwnershipCall) -> Self {
9647                    (value.newOwner,)
9648                }
9649            }
9650            #[automatically_derived]
9651            #[doc(hidden)]
9652            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
9653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9654                    Self { newOwner: tuple.0 }
9655                }
9656            }
9657        }
9658        {
9659            #[doc(hidden)]
9660            type UnderlyingSolTuple<'a> = ();
9661            #[doc(hidden)]
9662            type UnderlyingRustTuple<'a> = ();
9663            #[cfg(test)]
9664            #[allow(dead_code, unreachable_patterns)]
9665            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9666                match _t {
9667                    alloy_sol_types::private::AssertTypeEq::<
9668                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9669                    >(_) => {},
9670                }
9671            }
9672            #[automatically_derived]
9673            #[doc(hidden)]
9674            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
9675                fn from(value: transferOwnershipReturn) -> Self {
9676                    ()
9677                }
9678            }
9679            #[automatically_derived]
9680            #[doc(hidden)]
9681            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
9682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9683                    Self {}
9684                }
9685            }
9686        }
9687        #[automatically_derived]
9688        impl alloy_sol_types::SolCall for transferOwnershipCall {
9689            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9690            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9691            type Return = transferOwnershipReturn;
9692            type ReturnTuple<'a> = ();
9693            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9694            const SIGNATURE: &'static str = "transferOwnership(address)";
9695            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
9696            #[inline]
9697            fn new<'a>(
9698                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9699            ) -> Self {
9700                tuple.into()
9701            }
9702            #[inline]
9703            fn tokenize(&self) -> Self::Token<'_> {
9704                (
9705                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9706                        &self.newOwner,
9707                    ),
9708                )
9709            }
9710            #[inline]
9711            fn abi_decode_returns(
9712                data: &[u8],
9713                validate: bool,
9714            ) -> alloy_sol_types::Result<Self::Return> {
9715                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9716                    data, validate,
9717                )
9718                .map(Into::into)
9719            }
9720        }
9721    };
9722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9723    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9724    ```solidity
9725    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9726    ```*/
9727    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9728    #[derive(Clone)]
9729    pub struct upgradeToAndCallCall {
9730        #[allow(missing_docs)]
9731        pub newImplementation: alloy::sol_types::private::Address,
9732        #[allow(missing_docs)]
9733        pub data: alloy::sol_types::private::Bytes,
9734    }
9735    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9737    #[derive(Clone)]
9738    pub struct upgradeToAndCallReturn {}
9739    #[allow(
9740        non_camel_case_types,
9741        non_snake_case,
9742        clippy::pub_underscore_fields,
9743        clippy::style
9744    )]
9745    const _: () = {
9746        use alloy::sol_types as alloy_sol_types;
9747        {
9748            #[doc(hidden)]
9749            type UnderlyingSolTuple<'a> = (
9750                alloy::sol_types::sol_data::Address,
9751                alloy::sol_types::sol_data::Bytes,
9752            );
9753            #[doc(hidden)]
9754            type UnderlyingRustTuple<'a> = (
9755                alloy::sol_types::private::Address,
9756                alloy::sol_types::private::Bytes,
9757            );
9758            #[cfg(test)]
9759            #[allow(dead_code, unreachable_patterns)]
9760            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9761                match _t {
9762                    alloy_sol_types::private::AssertTypeEq::<
9763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9764                    >(_) => {},
9765                }
9766            }
9767            #[automatically_derived]
9768            #[doc(hidden)]
9769            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
9770                fn from(value: upgradeToAndCallCall) -> Self {
9771                    (value.newImplementation, value.data)
9772                }
9773            }
9774            #[automatically_derived]
9775            #[doc(hidden)]
9776            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
9777                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9778                    Self {
9779                        newImplementation: tuple.0,
9780                        data: tuple.1,
9781                    }
9782                }
9783            }
9784        }
9785        {
9786            #[doc(hidden)]
9787            type UnderlyingSolTuple<'a> = ();
9788            #[doc(hidden)]
9789            type UnderlyingRustTuple<'a> = ();
9790            #[cfg(test)]
9791            #[allow(dead_code, unreachable_patterns)]
9792            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9793                match _t {
9794                    alloy_sol_types::private::AssertTypeEq::<
9795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9796                    >(_) => {},
9797                }
9798            }
9799            #[automatically_derived]
9800            #[doc(hidden)]
9801            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
9802                fn from(value: upgradeToAndCallReturn) -> Self {
9803                    ()
9804                }
9805            }
9806            #[automatically_derived]
9807            #[doc(hidden)]
9808            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
9809                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9810                    Self {}
9811                }
9812            }
9813        }
9814        #[automatically_derived]
9815        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9816            type Parameters<'a> = (
9817                alloy::sol_types::sol_data::Address,
9818                alloy::sol_types::sol_data::Bytes,
9819            );
9820            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9821            type Return = upgradeToAndCallReturn;
9822            type ReturnTuple<'a> = ();
9823            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9824            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9825            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9826            #[inline]
9827            fn new<'a>(
9828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9829            ) -> Self {
9830                tuple.into()
9831            }
9832            #[inline]
9833            fn tokenize(&self) -> Self::Token<'_> {
9834                (
9835                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9836                        &self.newImplementation,
9837                    ),
9838                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9839                        &self.data,
9840                    ),
9841                )
9842            }
9843            #[inline]
9844            fn abi_decode_returns(
9845                data: &[u8],
9846                validate: bool,
9847            ) -> alloy_sol_types::Result<Self::Return> {
9848                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9849                    data, validate,
9850                )
9851                .map(Into::into)
9852            }
9853        }
9854    };
9855    ///Container for all the [`LightClientMock`](self) function calls.
9856    #[derive()]
9857    pub enum LightClientMockCalls {
9858        #[allow(missing_docs)]
9859        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9860        #[allow(missing_docs)]
9861        _getVk(_getVkCall),
9862        #[allow(missing_docs)]
9863        currentBlockNumber(currentBlockNumberCall),
9864        #[allow(missing_docs)]
9865        disablePermissionedProverMode(disablePermissionedProverModeCall),
9866        #[allow(missing_docs)]
9867        finalizedState(finalizedStateCall),
9868        #[allow(missing_docs)]
9869        genesisStakeTableState(genesisStakeTableStateCall),
9870        #[allow(missing_docs)]
9871        genesisState(genesisStateCall),
9872        #[allow(missing_docs)]
9873        getHotShotCommitment(getHotShotCommitmentCall),
9874        #[allow(missing_docs)]
9875        getStateHistoryCount(getStateHistoryCountCall),
9876        #[allow(missing_docs)]
9877        getVersion(getVersionCall),
9878        #[allow(missing_docs)]
9879        initialize(initializeCall),
9880        #[allow(missing_docs)]
9881        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
9882        #[allow(missing_docs)]
9883        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
9884        #[allow(missing_docs)]
9885        newFinalizedState(newFinalizedStateCall),
9886        #[allow(missing_docs)]
9887        owner(ownerCall),
9888        #[allow(missing_docs)]
9889        permissionedProver(permissionedProverCall),
9890        #[allow(missing_docs)]
9891        proxiableUUID(proxiableUUIDCall),
9892        #[allow(missing_docs)]
9893        renounceOwnership(renounceOwnershipCall),
9894        #[allow(missing_docs)]
9895        setFinalizedState(setFinalizedStateCall),
9896        #[allow(missing_docs)]
9897        setHotShotDownSince(setHotShotDownSinceCall),
9898        #[allow(missing_docs)]
9899        setHotShotUp(setHotShotUpCall),
9900        #[allow(missing_docs)]
9901        setPermissionedProver(setPermissionedProverCall),
9902        #[allow(missing_docs)]
9903        setStateHistory(setStateHistoryCall),
9904        #[allow(missing_docs)]
9905        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
9906        #[allow(missing_docs)]
9907        stateHistoryCommitments(stateHistoryCommitmentsCall),
9908        #[allow(missing_docs)]
9909        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
9910        #[allow(missing_docs)]
9911        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
9912        #[allow(missing_docs)]
9913        transferOwnership(transferOwnershipCall),
9914        #[allow(missing_docs)]
9915        upgradeToAndCall(upgradeToAndCallCall),
9916    }
9917    #[automatically_derived]
9918    impl LightClientMockCalls {
9919        /// All the selectors of this enum.
9920        ///
9921        /// Note that the selectors might not be in the same order as the variants.
9922        /// No guarantees are made about the order of the selectors.
9923        ///
9924        /// Prefer using `SolInterface` methods instead.
9925        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9926            [1u8, 63u8, 165u8, 252u8],
9927            [2u8, 181u8, 146u8, 243u8],
9928            [13u8, 142u8, 110u8, 44u8],
9929            [18u8, 23u8, 60u8, 44u8],
9930            [32u8, 99u8, 212u8, 247u8],
9931            [45u8, 82u8, 170u8, 214u8],
9932            [47u8, 121u8, 136u8, 157u8],
9933            [49u8, 61u8, 247u8, 177u8],
9934            [55u8, 142u8, 194u8, 59u8],
9935            [66u8, 109u8, 49u8, 148u8],
9936            [79u8, 30u8, 242u8, 134u8],
9937            [82u8, 209u8, 144u8, 45u8],
9938            [105u8, 204u8, 106u8, 4u8],
9939            [113u8, 80u8, 24u8, 166u8],
9940            [130u8, 110u8, 65u8, 252u8],
9941            [133u8, 132u8, 210u8, 63u8],
9942            [141u8, 165u8, 203u8, 91u8],
9943            [150u8, 193u8, 202u8, 97u8],
9944            [155u8, 170u8, 60u8, 201u8],
9945            [159u8, 219u8, 84u8, 167u8],
9946            [173u8, 60u8, 177u8, 204u8],
9947            [181u8, 173u8, 234u8, 60u8],
9948            [194u8, 59u8, 158u8, 158u8],
9949            [200u8, 229u8, 228u8, 152u8],
9950            [210u8, 77u8, 147u8, 61u8],
9951            [224u8, 48u8, 51u8, 1u8],
9952            [242u8, 253u8, 227u8, 139u8],
9953            [245u8, 103u8, 97u8, 96u8],
9954            [249u8, 229u8, 13u8, 25u8],
9955        ];
9956    }
9957    #[automatically_derived]
9958    impl alloy_sol_types::SolInterface for LightClientMockCalls {
9959        const NAME: &'static str = "LightClientMockCalls";
9960        const MIN_DATA_LENGTH: usize = 0usize;
9961        const COUNT: usize = 29usize;
9962        #[inline]
9963        fn selector(&self) -> [u8; 4] {
9964            match self {
9965                Self::UPGRADE_INTERFACE_VERSION(_) => {
9966                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9967                },
9968                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
9969                Self::currentBlockNumber(_) => {
9970                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9971                },
9972                Self::disablePermissionedProverMode(_) => {
9973                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
9974                },
9975                Self::finalizedState(_) => {
9976                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9977                },
9978                Self::genesisStakeTableState(_) => {
9979                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
9980                },
9981                Self::genesisState(_) => <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR,
9982                Self::getHotShotCommitment(_) => {
9983                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
9984                },
9985                Self::getStateHistoryCount(_) => {
9986                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
9987                },
9988                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
9989                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
9990                Self::isPermissionedProverEnabled(_) => {
9991                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
9992                },
9993                Self::lagOverEscapeHatchThreshold(_) => {
9994                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
9995                },
9996                Self::newFinalizedState(_) => {
9997                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9998                },
9999                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10000                Self::permissionedProver(_) => {
10001                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10002                },
10003                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
10004                Self::renounceOwnership(_) => {
10005                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10006                },
10007                Self::setFinalizedState(_) => {
10008                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10009                },
10010                Self::setHotShotDownSince(_) => {
10011                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
10012                },
10013                Self::setHotShotUp(_) => <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR,
10014                Self::setPermissionedProver(_) => {
10015                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10016                },
10017                Self::setStateHistory(_) => {
10018                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
10019                },
10020                Self::setstateHistoryRetentionPeriod(_) => {
10021                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10022                },
10023                Self::stateHistoryCommitments(_) => {
10024                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10025                },
10026                Self::stateHistoryFirstIndex(_) => {
10027                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10028                },
10029                Self::stateHistoryRetentionPeriod(_) => {
10030                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10031                },
10032                Self::transferOwnership(_) => {
10033                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10034                },
10035                Self::upgradeToAndCall(_) => {
10036                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10037                },
10038            }
10039        }
10040        #[inline]
10041        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10042            Self::SELECTORS.get(i).copied()
10043        }
10044        #[inline]
10045        fn valid_selector(selector: [u8; 4]) -> bool {
10046            Self::SELECTORS.binary_search(&selector).is_ok()
10047        }
10048        #[inline]
10049        #[allow(non_snake_case)]
10050        fn abi_decode_raw(
10051            selector: [u8; 4],
10052            data: &[u8],
10053            validate: bool,
10054        ) -> alloy_sol_types::Result<Self> {
10055            static DECODE_SHIMS: &[fn(
10056                &[u8],
10057                bool,
10058            )
10059                -> alloy_sol_types::Result<LightClientMockCalls>] = &[
10060                {
10061                    fn setPermissionedProver(
10062                        data: &[u8],
10063                        validate: bool,
10064                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10065                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10066                            data, validate,
10067                        )
10068                        .map(LightClientMockCalls::setPermissionedProver)
10069                    }
10070                    setPermissionedProver
10071                },
10072                {
10073                    fn stateHistoryCommitments(
10074                        data: &[u8],
10075                        validate: bool,
10076                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10077                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10078                            data, validate,
10079                        )
10080                        .map(LightClientMockCalls::stateHistoryCommitments)
10081                    }
10082                    stateHistoryCommitments
10083                },
10084                {
10085                    fn getVersion(
10086                        data: &[u8],
10087                        validate: bool,
10088                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10089                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
10090                            .map(LightClientMockCalls::getVersion)
10091                    }
10092                    getVersion
10093                },
10094                {
10095                    fn _getVk(
10096                        data: &[u8],
10097                        validate: bool,
10098                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10099                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
10100                            .map(LightClientMockCalls::_getVk)
10101                    }
10102                    _getVk
10103                },
10104                {
10105                    fn newFinalizedState(
10106                        data: &[u8],
10107                        validate: bool,
10108                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10109                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10110                            data, validate,
10111                        )
10112                        .map(LightClientMockCalls::newFinalizedState)
10113                    }
10114                    newFinalizedState
10115                },
10116                {
10117                    fn setHotShotDownSince(
10118                        data: &[u8],
10119                        validate: bool,
10120                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10121                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
10122                            data, validate,
10123                        )
10124                        .map(LightClientMockCalls::setHotShotDownSince)
10125                    }
10126                    setHotShotDownSince
10127                },
10128                {
10129                    fn stateHistoryFirstIndex(
10130                        data: &[u8],
10131                        validate: bool,
10132                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10133                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10134                            data, validate,
10135                        )
10136                        .map(LightClientMockCalls::stateHistoryFirstIndex)
10137                    }
10138                    stateHistoryFirstIndex
10139                },
10140                {
10141                    fn permissionedProver(
10142                        data: &[u8],
10143                        validate: bool,
10144                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10145                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10146                            data, validate,
10147                        )
10148                        .map(LightClientMockCalls::permissionedProver)
10149                    }
10150                    permissionedProver
10151                },
10152                {
10153                    fn currentBlockNumber(
10154                        data: &[u8],
10155                        validate: bool,
10156                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10157                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10158                            data, validate,
10159                        )
10160                        .map(LightClientMockCalls::currentBlockNumber)
10161                    }
10162                    currentBlockNumber
10163                },
10164                {
10165                    fn genesisStakeTableState(
10166                        data: &[u8],
10167                        validate: bool,
10168                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10169                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10170                            data, validate,
10171                        )
10172                        .map(LightClientMockCalls::genesisStakeTableState)
10173                    }
10174                    genesisStakeTableState
10175                },
10176                {
10177                    fn upgradeToAndCall(
10178                        data: &[u8],
10179                        validate: bool,
10180                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10181                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10182                            data, validate,
10183                        )
10184                        .map(LightClientMockCalls::upgradeToAndCall)
10185                    }
10186                    upgradeToAndCall
10187                },
10188                {
10189                    fn proxiableUUID(
10190                        data: &[u8],
10191                        validate: bool,
10192                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10193                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10194                            data, validate,
10195                        )
10196                        .map(LightClientMockCalls::proxiableUUID)
10197                    }
10198                    proxiableUUID
10199                },
10200                {
10201                    fn disablePermissionedProverMode(
10202                        data: &[u8],
10203                        validate: bool,
10204                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10205                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10206                                data,
10207                                validate,
10208                            )
10209                            .map(LightClientMockCalls::disablePermissionedProverMode)
10210                    }
10211                    disablePermissionedProverMode
10212                },
10213                {
10214                    fn renounceOwnership(
10215                        data: &[u8],
10216                        validate: bool,
10217                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10218                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10219                            data, validate,
10220                        )
10221                        .map(LightClientMockCalls::renounceOwnership)
10222                    }
10223                    renounceOwnership
10224                },
10225                {
10226                    fn isPermissionedProverEnabled(
10227                        data: &[u8],
10228                        validate: bool,
10229                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10230                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
10231                                data,
10232                                validate,
10233                            )
10234                            .map(LightClientMockCalls::isPermissionedProverEnabled)
10235                    }
10236                    isPermissionedProverEnabled
10237                },
10238                {
10239                    fn getHotShotCommitment(
10240                        data: &[u8],
10241                        validate: bool,
10242                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10243                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
10244                            data, validate,
10245                        )
10246                        .map(LightClientMockCalls::getHotShotCommitment)
10247                    }
10248                    getHotShotCommitment
10249                },
10250                {
10251                    fn owner(
10252                        data: &[u8],
10253                        validate: bool,
10254                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10255                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
10256                            .map(LightClientMockCalls::owner)
10257                    }
10258                    owner
10259                },
10260                {
10261                    fn setstateHistoryRetentionPeriod(
10262                        data: &[u8],
10263                        validate: bool,
10264                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10265                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10266                                data,
10267                                validate,
10268                            )
10269                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
10270                    }
10271                    setstateHistoryRetentionPeriod
10272                },
10273                {
10274                    fn initialize(
10275                        data: &[u8],
10276                        validate: bool,
10277                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10278                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
10279                            .map(LightClientMockCalls::initialize)
10280                    }
10281                    initialize
10282                },
10283                {
10284                    fn finalizedState(
10285                        data: &[u8],
10286                        validate: bool,
10287                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10288                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10289                            data, validate,
10290                        )
10291                        .map(LightClientMockCalls::finalizedState)
10292                    }
10293                    finalizedState
10294                },
10295                {
10296                    fn UPGRADE_INTERFACE_VERSION(
10297                        data: &[u8],
10298                        validate: bool,
10299                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10300                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
10301                            data, validate,
10302                        )
10303                        .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
10304                    }
10305                    UPGRADE_INTERFACE_VERSION
10306                },
10307                {
10308                    fn setFinalizedState(
10309                        data: &[u8],
10310                        validate: bool,
10311                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10312                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10313                            data, validate,
10314                        )
10315                        .map(LightClientMockCalls::setFinalizedState)
10316                    }
10317                    setFinalizedState
10318                },
10319                {
10320                    fn stateHistoryRetentionPeriod(
10321                        data: &[u8],
10322                        validate: bool,
10323                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10324                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10325                                data,
10326                                validate,
10327                            )
10328                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
10329                    }
10330                    stateHistoryRetentionPeriod
10331                },
10332                {
10333                    fn setHotShotUp(
10334                        data: &[u8],
10335                        validate: bool,
10336                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10337                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
10338                            data, validate,
10339                        )
10340                        .map(LightClientMockCalls::setHotShotUp)
10341                    }
10342                    setHotShotUp
10343                },
10344                {
10345                    fn genesisState(
10346                        data: &[u8],
10347                        validate: bool,
10348                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10349                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10350                            data, validate,
10351                        )
10352                        .map(LightClientMockCalls::genesisState)
10353                    }
10354                    genesisState
10355                },
10356                {
10357                    fn lagOverEscapeHatchThreshold(
10358                        data: &[u8],
10359                        validate: bool,
10360                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10361                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
10362                                data,
10363                                validate,
10364                            )
10365                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
10366                    }
10367                    lagOverEscapeHatchThreshold
10368                },
10369                {
10370                    fn transferOwnership(
10371                        data: &[u8],
10372                        validate: bool,
10373                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10374                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10375                            data, validate,
10376                        )
10377                        .map(LightClientMockCalls::transferOwnership)
10378                    }
10379                    transferOwnership
10380                },
10381                {
10382                    fn setStateHistory(
10383                        data: &[u8],
10384                        validate: bool,
10385                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10386                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
10387                            data, validate,
10388                        )
10389                        .map(LightClientMockCalls::setStateHistory)
10390                    }
10391                    setStateHistory
10392                },
10393                {
10394                    fn getStateHistoryCount(
10395                        data: &[u8],
10396                        validate: bool,
10397                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
10398                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
10399                            data, validate,
10400                        )
10401                        .map(LightClientMockCalls::getStateHistoryCount)
10402                    }
10403                    getStateHistoryCount
10404                },
10405            ];
10406            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10407                return Err(alloy_sol_types::Error::unknown_selector(
10408                    <Self as alloy_sol_types::SolInterface>::NAME,
10409                    selector,
10410                ));
10411            };
10412            DECODE_SHIMS[idx](data, validate)
10413        }
10414        #[inline]
10415        fn abi_encoded_size(&self) -> usize {
10416            match self {
10417                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10418                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10419                        inner,
10420                    )
10421                }
10422                Self::_getVk(inner) => {
10423                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10424                }
10425                Self::currentBlockNumber(inner) => {
10426                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10427                        inner,
10428                    )
10429                }
10430                Self::disablePermissionedProverMode(inner) => {
10431                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10432                        inner,
10433                    )
10434                }
10435                Self::finalizedState(inner) => {
10436                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10437                        inner,
10438                    )
10439                }
10440                Self::genesisStakeTableState(inner) => {
10441                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10442                        inner,
10443                    )
10444                }
10445                Self::genesisState(inner) => {
10446                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10447                        inner,
10448                    )
10449                }
10450                Self::getHotShotCommitment(inner) => {
10451                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
10452                        inner,
10453                    )
10454                }
10455                Self::getStateHistoryCount(inner) => {
10456                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
10457                        inner,
10458                    )
10459                }
10460                Self::getVersion(inner) => {
10461                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10462                }
10463                Self::initialize(inner) => {
10464                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10465                }
10466                Self::isPermissionedProverEnabled(inner) => {
10467                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
10468                        inner,
10469                    )
10470                }
10471                Self::lagOverEscapeHatchThreshold(inner) => {
10472                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
10473                        inner,
10474                    )
10475                }
10476                Self::newFinalizedState(inner) => {
10477                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10478                        inner,
10479                    )
10480                }
10481                Self::owner(inner) => {
10482                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10483                }
10484                Self::permissionedProver(inner) => {
10485                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10486                        inner,
10487                    )
10488                }
10489                Self::proxiableUUID(inner) => {
10490                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10491                        inner,
10492                    )
10493                }
10494                Self::renounceOwnership(inner) => {
10495                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10496                        inner,
10497                    )
10498                }
10499                Self::setFinalizedState(inner) => {
10500                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10501                        inner,
10502                    )
10503                }
10504                Self::setHotShotDownSince(inner) => {
10505                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
10506                        inner,
10507                    )
10508                }
10509                Self::setHotShotUp(inner) => {
10510                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
10511                        inner,
10512                    )
10513                }
10514                Self::setPermissionedProver(inner) => {
10515                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10516                        inner,
10517                    )
10518                }
10519                Self::setStateHistory(inner) => {
10520                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
10521                        inner,
10522                    )
10523                }
10524                Self::setstateHistoryRetentionPeriod(inner) => {
10525                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10526                        inner,
10527                    )
10528                }
10529                Self::stateHistoryCommitments(inner) => {
10530                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10531                        inner,
10532                    )
10533                }
10534                Self::stateHistoryFirstIndex(inner) => {
10535                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10536                        inner,
10537                    )
10538                }
10539                Self::stateHistoryRetentionPeriod(inner) => {
10540                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10541                        inner,
10542                    )
10543                }
10544                Self::transferOwnership(inner) => {
10545                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10546                        inner,
10547                    )
10548                }
10549                Self::upgradeToAndCall(inner) => {
10550                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10551                        inner,
10552                    )
10553                }
10554            }
10555        }
10556        #[inline]
10557        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10558            match self {
10559                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10560                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10561                        inner, out,
10562                    )
10563                },
10564                Self::_getVk(inner) => {
10565                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10566                },
10567                Self::currentBlockNumber(inner) => {
10568                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10569                },
10570                Self::disablePermissionedProverMode(inner) => {
10571                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10572                        inner, out,
10573                    )
10574                },
10575                Self::finalizedState(inner) => {
10576                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10577                },
10578                Self::genesisStakeTableState(inner) => {
10579                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10580                        inner, out,
10581                    )
10582                },
10583                Self::genesisState(inner) => {
10584                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10585                },
10586                Self::getHotShotCommitment(inner) => {
10587                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
10588                        inner, out,
10589                    )
10590                },
10591                Self::getStateHistoryCount(inner) => {
10592                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
10593                        inner, out,
10594                    )
10595                },
10596                Self::getVersion(inner) => {
10597                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10598                },
10599                Self::initialize(inner) => {
10600                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10601                },
10602                Self::isPermissionedProverEnabled(inner) => {
10603                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
10604                        inner, out,
10605                    )
10606                },
10607                Self::lagOverEscapeHatchThreshold(inner) => {
10608                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
10609                        inner, out,
10610                    )
10611                },
10612                Self::newFinalizedState(inner) => {
10613                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10614                },
10615                Self::owner(inner) => {
10616                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10617                },
10618                Self::permissionedProver(inner) => {
10619                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10620                },
10621                Self::proxiableUUID(inner) => {
10622                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10623                },
10624                Self::renounceOwnership(inner) => {
10625                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10626                },
10627                Self::setFinalizedState(inner) => {
10628                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10629                },
10630                Self::setHotShotDownSince(inner) => {
10631                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
10632                        inner, out,
10633                    )
10634                },
10635                Self::setHotShotUp(inner) => {
10636                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10637                },
10638                Self::setPermissionedProver(inner) => {
10639                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
10640                        inner, out,
10641                    )
10642                },
10643                Self::setStateHistory(inner) => {
10644                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10645                },
10646                Self::setstateHistoryRetentionPeriod(inner) => {
10647                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10648                        inner, out,
10649                    )
10650                },
10651                Self::stateHistoryCommitments(inner) => {
10652                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10653                        inner, out,
10654                    )
10655                },
10656                Self::stateHistoryFirstIndex(inner) => {
10657                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10658                        inner, out,
10659                    )
10660                },
10661                Self::stateHistoryRetentionPeriod(inner) => {
10662                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10663                        inner, out,
10664                    )
10665                },
10666                Self::transferOwnership(inner) => {
10667                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10668                },
10669                Self::upgradeToAndCall(inner) => {
10670                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10671                },
10672            }
10673        }
10674    }
10675    ///Container for all the [`LightClientMock`](self) custom errors.
10676    #[derive(Debug, PartialEq, Eq, Hash)]
10677    pub enum LightClientMockErrors {
10678        #[allow(missing_docs)]
10679        AddressEmptyCode(AddressEmptyCode),
10680        #[allow(missing_docs)]
10681        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10682        #[allow(missing_docs)]
10683        ERC1967NonPayable(ERC1967NonPayable),
10684        #[allow(missing_docs)]
10685        FailedInnerCall(FailedInnerCall),
10686        #[allow(missing_docs)]
10687        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
10688        #[allow(missing_docs)]
10689        InvalidAddress(InvalidAddress),
10690        #[allow(missing_docs)]
10691        InvalidArgs(InvalidArgs),
10692        #[allow(missing_docs)]
10693        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
10694        #[allow(missing_docs)]
10695        InvalidInitialization(InvalidInitialization),
10696        #[allow(missing_docs)]
10697        InvalidMaxStateHistory(InvalidMaxStateHistory),
10698        #[allow(missing_docs)]
10699        InvalidProof(InvalidProof),
10700        #[allow(missing_docs)]
10701        NoChangeRequired(NoChangeRequired),
10702        #[allow(missing_docs)]
10703        NotInitializing(NotInitializing),
10704        #[allow(missing_docs)]
10705        OutdatedState(OutdatedState),
10706        #[allow(missing_docs)]
10707        OwnableInvalidOwner(OwnableInvalidOwner),
10708        #[allow(missing_docs)]
10709        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10710        #[allow(missing_docs)]
10711        ProverNotPermissioned(ProverNotPermissioned),
10712        #[allow(missing_docs)]
10713        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10714        #[allow(missing_docs)]
10715        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10716        #[allow(missing_docs)]
10717        WrongStakeTableUsed(WrongStakeTableUsed),
10718    }
10719    #[automatically_derived]
10720    impl LightClientMockErrors {
10721        /// All the selectors of this enum.
10722        ///
10723        /// Note that the selectors might not be in the same order as the variants.
10724        /// No guarantees are made about the order of the selectors.
10725        ///
10726        /// Prefer using `SolInterface` methods instead.
10727        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10728            [5u8, 28u8, 70u8, 239u8],
10729            [9u8, 189u8, 227u8, 57u8],
10730            [17u8, 140u8, 218u8, 167u8],
10731            [20u8, 37u8, 234u8, 66u8],
10732            [30u8, 79u8, 189u8, 247u8],
10733            [76u8, 156u8, 140u8, 227u8],
10734            [81u8, 97u8, 128u8, 137u8],
10735            [97u8, 90u8, 146u8, 100u8],
10736            [153u8, 150u8, 179u8, 21u8],
10737            [161u8, 186u8, 7u8, 238u8],
10738            [163u8, 166u8, 71u8, 128u8],
10739            [168u8, 99u8, 174u8, 201u8],
10740            [170u8, 29u8, 73u8, 164u8],
10741            [176u8, 180u8, 56u8, 119u8],
10742            [179u8, 152u8, 151u8, 159u8],
10743            [215u8, 230u8, 188u8, 248u8],
10744            [224u8, 124u8, 141u8, 186u8],
10745            [230u8, 196u8, 36u8, 123u8],
10746            [244u8, 160u8, 238u8, 224u8],
10747            [249u8, 46u8, 232u8, 169u8],
10748        ];
10749    }
10750    #[automatically_derived]
10751    impl alloy_sol_types::SolInterface for LightClientMockErrors {
10752        const NAME: &'static str = "LightClientMockErrors";
10753        const MIN_DATA_LENGTH: usize = 0usize;
10754        const COUNT: usize = 20usize;
10755        #[inline]
10756        fn selector(&self) -> [u8; 4] {
10757            match self {
10758                Self::AddressEmptyCode(_) => {
10759                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10760                },
10761                Self::ERC1967InvalidImplementation(_) => {
10762                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10763                },
10764                Self::ERC1967NonPayable(_) => {
10765                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10766                },
10767                Self::FailedInnerCall(_) => {
10768                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
10769                },
10770                Self::InsufficientSnapshotHistory(_) => {
10771                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
10772                },
10773                Self::InvalidAddress(_) => <InvalidAddress as alloy_sol_types::SolError>::SELECTOR,
10774                Self::InvalidArgs(_) => <InvalidArgs as alloy_sol_types::SolError>::SELECTOR,
10775                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
10776                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
10777                },
10778                Self::InvalidInitialization(_) => {
10779                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
10780                },
10781                Self::InvalidMaxStateHistory(_) => {
10782                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
10783                },
10784                Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
10785                Self::NoChangeRequired(_) => {
10786                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
10787                },
10788                Self::NotInitializing(_) => {
10789                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
10790                },
10791                Self::OutdatedState(_) => <OutdatedState as alloy_sol_types::SolError>::SELECTOR,
10792                Self::OwnableInvalidOwner(_) => {
10793                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
10794                },
10795                Self::OwnableUnauthorizedAccount(_) => {
10796                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
10797                },
10798                Self::ProverNotPermissioned(_) => {
10799                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
10800                },
10801                Self::UUPSUnauthorizedCallContext(_) => {
10802                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
10803                },
10804                Self::UUPSUnsupportedProxiableUUID(_) => {
10805                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
10806                },
10807                Self::WrongStakeTableUsed(_) => {
10808                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
10809                },
10810            }
10811        }
10812        #[inline]
10813        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10814            Self::SELECTORS.get(i).copied()
10815        }
10816        #[inline]
10817        fn valid_selector(selector: [u8; 4]) -> bool {
10818            Self::SELECTORS.binary_search(&selector).is_ok()
10819        }
10820        #[inline]
10821        #[allow(non_snake_case)]
10822        fn abi_decode_raw(
10823            selector: [u8; 4],
10824            data: &[u8],
10825            validate: bool,
10826        ) -> alloy_sol_types::Result<Self> {
10827            static DECODE_SHIMS: &[fn(
10828                &[u8],
10829                bool,
10830            )
10831                -> alloy_sol_types::Result<LightClientMockErrors>] = &[
10832                {
10833                    fn OutdatedState(
10834                        data: &[u8],
10835                        validate: bool,
10836                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10837                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
10838                            .map(LightClientMockErrors::OutdatedState)
10839                    }
10840                    OutdatedState
10841                },
10842                {
10843                    fn InvalidProof(
10844                        data: &[u8],
10845                        validate: bool,
10846                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10847                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
10848                            .map(LightClientMockErrors::InvalidProof)
10849                    }
10850                    InvalidProof
10851                },
10852                {
10853                    fn OwnableUnauthorizedAccount(
10854                        data: &[u8],
10855                        validate: bool,
10856                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10857                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
10858                            data, validate,
10859                        )
10860                        .map(LightClientMockErrors::OwnableUnauthorizedAccount)
10861                    }
10862                    OwnableUnauthorizedAccount
10863                },
10864                {
10865                    fn FailedInnerCall(
10866                        data: &[u8],
10867                        validate: bool,
10868                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10869                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
10870                            data, validate,
10871                        )
10872                        .map(LightClientMockErrors::FailedInnerCall)
10873                    }
10874                    FailedInnerCall
10875                },
10876                {
10877                    fn OwnableInvalidOwner(
10878                        data: &[u8],
10879                        validate: bool,
10880                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10881                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
10882                            data, validate,
10883                        )
10884                        .map(LightClientMockErrors::OwnableInvalidOwner)
10885                    }
10886                    OwnableInvalidOwner
10887                },
10888                {
10889                    fn ERC1967InvalidImplementation(
10890                        data: &[u8],
10891                        validate: bool,
10892                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10893                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
10894                            data, validate,
10895                        )
10896                        .map(LightClientMockErrors::ERC1967InvalidImplementation)
10897                    }
10898                    ERC1967InvalidImplementation
10899                },
10900                {
10901                    fn WrongStakeTableUsed(
10902                        data: &[u8],
10903                        validate: bool,
10904                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10905                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
10906                            data, validate,
10907                        )
10908                        .map(LightClientMockErrors::WrongStakeTableUsed)
10909                    }
10910                    WrongStakeTableUsed
10911                },
10912                {
10913                    fn InvalidHotShotBlockForCommitmentCheck(
10914                        data: &[u8],
10915                        validate: bool,
10916                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10917                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
10918                                data,
10919                                validate,
10920                            )
10921                            .map(
10922                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
10923                            )
10924                    }
10925                    InvalidHotShotBlockForCommitmentCheck
10926                },
10927                {
10928                    fn AddressEmptyCode(
10929                        data: &[u8],
10930                        validate: bool,
10931                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10932                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
10933                            data, validate,
10934                        )
10935                        .map(LightClientMockErrors::AddressEmptyCode)
10936                    }
10937                    AddressEmptyCode
10938                },
10939                {
10940                    fn InvalidArgs(
10941                        data: &[u8],
10942                        validate: bool,
10943                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10944                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
10945                            .map(LightClientMockErrors::InvalidArgs)
10946                    }
10947                    InvalidArgs
10948                },
10949                {
10950                    fn ProverNotPermissioned(
10951                        data: &[u8],
10952                        validate: bool,
10953                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10954                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
10955                            data, validate,
10956                        )
10957                        .map(LightClientMockErrors::ProverNotPermissioned)
10958                    }
10959                    ProverNotPermissioned
10960                },
10961                {
10962                    fn NoChangeRequired(
10963                        data: &[u8],
10964                        validate: bool,
10965                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10966                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
10967                            data, validate,
10968                        )
10969                        .map(LightClientMockErrors::NoChangeRequired)
10970                    }
10971                    NoChangeRequired
10972                },
10973                {
10974                    fn UUPSUnsupportedProxiableUUID(
10975                        data: &[u8],
10976                        validate: bool,
10977                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10978                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
10979                            data, validate,
10980                        )
10981                        .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
10982                    }
10983                    UUPSUnsupportedProxiableUUID
10984                },
10985                {
10986                    fn InsufficientSnapshotHistory(
10987                        data: &[u8],
10988                        validate: bool,
10989                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
10990                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
10991                            data, validate,
10992                        )
10993                        .map(LightClientMockErrors::InsufficientSnapshotHistory)
10994                    }
10995                    InsufficientSnapshotHistory
10996                },
10997                {
10998                    fn ERC1967NonPayable(
10999                        data: &[u8],
11000                        validate: bool,
11001                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11002                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
11003                            data, validate,
11004                        )
11005                        .map(LightClientMockErrors::ERC1967NonPayable)
11006                    }
11007                    ERC1967NonPayable
11008                },
11009                {
11010                    fn NotInitializing(
11011                        data: &[u8],
11012                        validate: bool,
11013                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11014                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
11015                            data, validate,
11016                        )
11017                        .map(LightClientMockErrors::NotInitializing)
11018                    }
11019                    NotInitializing
11020                },
11021                {
11022                    fn UUPSUnauthorizedCallContext(
11023                        data: &[u8],
11024                        validate: bool,
11025                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11026                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
11027                            data, validate,
11028                        )
11029                        .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
11030                    }
11031                    UUPSUnauthorizedCallContext
11032                },
11033                {
11034                    fn InvalidAddress(
11035                        data: &[u8],
11036                        validate: bool,
11037                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11038                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
11039                            data, validate,
11040                        )
11041                        .map(LightClientMockErrors::InvalidAddress)
11042                    }
11043                    InvalidAddress
11044                },
11045                {
11046                    fn InvalidMaxStateHistory(
11047                        data: &[u8],
11048                        validate: bool,
11049                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11050                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
11051                            data, validate,
11052                        )
11053                        .map(LightClientMockErrors::InvalidMaxStateHistory)
11054                    }
11055                    InvalidMaxStateHistory
11056                },
11057                {
11058                    fn InvalidInitialization(
11059                        data: &[u8],
11060                        validate: bool,
11061                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
11062                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
11063                            data, validate,
11064                        )
11065                        .map(LightClientMockErrors::InvalidInitialization)
11066                    }
11067                    InvalidInitialization
11068                },
11069            ];
11070            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11071                return Err(alloy_sol_types::Error::unknown_selector(
11072                    <Self as alloy_sol_types::SolInterface>::NAME,
11073                    selector,
11074                ));
11075            };
11076            DECODE_SHIMS[idx](data, validate)
11077        }
11078        #[inline]
11079        fn abi_encoded_size(&self) -> usize {
11080            match self {
11081                Self::AddressEmptyCode(inner) => {
11082                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
11083                        inner,
11084                    )
11085                }
11086                Self::ERC1967InvalidImplementation(inner) => {
11087                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
11088                        inner,
11089                    )
11090                }
11091                Self::ERC1967NonPayable(inner) => {
11092                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
11093                        inner,
11094                    )
11095                }
11096                Self::FailedInnerCall(inner) => {
11097                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
11098                        inner,
11099                    )
11100                }
11101                Self::InsufficientSnapshotHistory(inner) => {
11102                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
11103                        inner,
11104                    )
11105                }
11106                Self::InvalidAddress(inner) => {
11107                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
11108                        inner,
11109                    )
11110                }
11111                Self::InvalidArgs(inner) => {
11112                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
11113                }
11114                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
11115                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
11116                        inner,
11117                    )
11118                }
11119                Self::InvalidInitialization(inner) => {
11120                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
11121                        inner,
11122                    )
11123                }
11124                Self::InvalidMaxStateHistory(inner) => {
11125                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
11126                        inner,
11127                    )
11128                }
11129                Self::InvalidProof(inner) => {
11130                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
11131                }
11132                Self::NoChangeRequired(inner) => {
11133                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
11134                        inner,
11135                    )
11136                }
11137                Self::NotInitializing(inner) => {
11138                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
11139                        inner,
11140                    )
11141                }
11142                Self::OutdatedState(inner) => {
11143                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
11144                }
11145                Self::OwnableInvalidOwner(inner) => {
11146                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
11147                        inner,
11148                    )
11149                }
11150                Self::OwnableUnauthorizedAccount(inner) => {
11151                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
11152                        inner,
11153                    )
11154                }
11155                Self::ProverNotPermissioned(inner) => {
11156                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
11157                        inner,
11158                    )
11159                }
11160                Self::UUPSUnauthorizedCallContext(inner) => {
11161                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
11162                        inner,
11163                    )
11164                }
11165                Self::UUPSUnsupportedProxiableUUID(inner) => {
11166                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
11167                        inner,
11168                    )
11169                }
11170                Self::WrongStakeTableUsed(inner) => {
11171                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
11172                        inner,
11173                    )
11174                }
11175            }
11176        }
11177        #[inline]
11178        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11179            match self {
11180                Self::AddressEmptyCode(inner) => {
11181                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
11182                        inner,
11183                        out,
11184                    )
11185                }
11186                Self::ERC1967InvalidImplementation(inner) => {
11187                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
11188                        inner,
11189                        out,
11190                    )
11191                }
11192                Self::ERC1967NonPayable(inner) => {
11193                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
11194                        inner,
11195                        out,
11196                    )
11197                }
11198                Self::FailedInnerCall(inner) => {
11199                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
11200                        inner,
11201                        out,
11202                    )
11203                }
11204                Self::InsufficientSnapshotHistory(inner) => {
11205                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
11206                        inner,
11207                        out,
11208                    )
11209                }
11210                Self::InvalidAddress(inner) => {
11211                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
11212                        inner,
11213                        out,
11214                    )
11215                }
11216                Self::InvalidArgs(inner) => {
11217                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
11218                        inner,
11219                        out,
11220                    )
11221                }
11222                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
11223                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
11224                        inner,
11225                        out,
11226                    )
11227                }
11228                Self::InvalidInitialization(inner) => {
11229                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
11230                        inner,
11231                        out,
11232                    )
11233                }
11234                Self::InvalidMaxStateHistory(inner) => {
11235                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
11236                        inner,
11237                        out,
11238                    )
11239                }
11240                Self::InvalidProof(inner) => {
11241                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
11242                        inner,
11243                        out,
11244                    )
11245                }
11246                Self::NoChangeRequired(inner) => {
11247                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
11248                        inner,
11249                        out,
11250                    )
11251                }
11252                Self::NotInitializing(inner) => {
11253                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
11254                        inner,
11255                        out,
11256                    )
11257                }
11258                Self::OutdatedState(inner) => {
11259                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
11260                        inner,
11261                        out,
11262                    )
11263                }
11264                Self::OwnableInvalidOwner(inner) => {
11265                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
11266                        inner,
11267                        out,
11268                    )
11269                }
11270                Self::OwnableUnauthorizedAccount(inner) => {
11271                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
11272                        inner,
11273                        out,
11274                    )
11275                }
11276                Self::ProverNotPermissioned(inner) => {
11277                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
11278                        inner,
11279                        out,
11280                    )
11281                }
11282                Self::UUPSUnauthorizedCallContext(inner) => {
11283                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
11284                        inner,
11285                        out,
11286                    )
11287                }
11288                Self::UUPSUnsupportedProxiableUUID(inner) => {
11289                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
11290                        inner,
11291                        out,
11292                    )
11293                }
11294                Self::WrongStakeTableUsed(inner) => {
11295                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
11296                        inner,
11297                        out,
11298                    )
11299                }
11300            }
11301        }
11302    }
11303    ///Container for all the [`LightClientMock`](self) events.
11304    #[derive(Debug, PartialEq, Eq, Hash)]
11305    pub enum LightClientMockEvents {
11306        #[allow(missing_docs)]
11307        Initialized(Initialized),
11308        #[allow(missing_docs)]
11309        NewState(NewState),
11310        #[allow(missing_docs)]
11311        OwnershipTransferred(OwnershipTransferred),
11312        #[allow(missing_docs)]
11313        PermissionedProverNotRequired(PermissionedProverNotRequired),
11314        #[allow(missing_docs)]
11315        PermissionedProverRequired(PermissionedProverRequired),
11316        #[allow(missing_docs)]
11317        Upgrade(Upgrade),
11318        #[allow(missing_docs)]
11319        Upgraded(Upgraded),
11320    }
11321    #[automatically_derived]
11322    impl LightClientMockEvents {
11323        /// All the selectors of this enum.
11324        ///
11325        /// Note that the selectors might not be in the same order as the variants.
11326        /// No guarantees are made about the order of the selectors.
11327        ///
11328        /// Prefer using `SolInterface` methods instead.
11329        pub const SELECTORS: &'static [[u8; 32usize]] = &[
11330            [
11331                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8, 212u8,
11332                15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8, 133u8,
11333                216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
11334            ],
11335            [
11336                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
11337                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
11338                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11339            ],
11340            [
11341                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
11342                92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
11343                109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
11344            ],
11345            [
11346                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8, 37u8,
11347                245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8, 252u8,
11348                231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
11349            ],
11350            [
11351                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
11352                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
11353                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
11354            ],
11355            [
11356                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
11357                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
11358                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
11359            ],
11360            [
11361                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
11362                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
11363                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
11364            ],
11365        ];
11366    }
11367    #[automatically_derived]
11368    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
11369        const NAME: &'static str = "LightClientMockEvents";
11370        const COUNT: usize = 7usize;
11371        fn decode_raw_log(
11372            topics: &[alloy_sol_types::Word],
11373            data: &[u8],
11374            validate: bool,
11375        ) -> alloy_sol_types::Result<Self> {
11376            match topics.first().copied() {
11377                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11378                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
11379                        topics, data, validate,
11380                    )
11381                    .map(Self::Initialized)
11382                },
11383                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11384                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
11385                        .map(Self::NewState)
11386                },
11387                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11388                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11389                        topics, data, validate,
11390                    )
11391                    .map(Self::OwnershipTransferred)
11392                },
11393                Some(
11394                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11395                ) => <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11396                    topics, data, validate,
11397                )
11398                .map(Self::PermissionedProverNotRequired),
11399                Some(<PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11400                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11401                        topics, data, validate,
11402                    )
11403                    .map(Self::PermissionedProverRequired)
11404                },
11405                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11406                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
11407                        .map(Self::Upgrade)
11408                },
11409                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11410                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
11411                        .map(Self::Upgraded)
11412                },
11413                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11414                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11415                    log: alloy_sol_types::private::Box::new(
11416                        alloy_sol_types::private::LogData::new_unchecked(
11417                            topics.to_vec(),
11418                            data.to_vec().into(),
11419                        ),
11420                    ),
11421                }),
11422            }
11423        }
11424    }
11425    #[automatically_derived]
11426    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
11427        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11428            match self {
11429                Self::Initialized(inner) => {
11430                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11431                },
11432                Self::NewState(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
11433                Self::OwnershipTransferred(inner) => {
11434                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11435                },
11436                Self::PermissionedProverNotRequired(inner) => {
11437                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11438                },
11439                Self::PermissionedProverRequired(inner) => {
11440                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11441                },
11442                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
11443                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
11444            }
11445        }
11446        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11447            match self {
11448                Self::Initialized(inner) => {
11449                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11450                },
11451                Self::NewState(inner) => {
11452                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11453                },
11454                Self::OwnershipTransferred(inner) => {
11455                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11456                },
11457                Self::PermissionedProverNotRequired(inner) => {
11458                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11459                },
11460                Self::PermissionedProverRequired(inner) => {
11461                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11462                },
11463                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
11464                Self::Upgraded(inner) => {
11465                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11466                },
11467            }
11468        }
11469    }
11470    use alloy::contract as alloy_contract;
11471    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
11472
11473    See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
11474    #[inline]
11475    pub const fn new<
11476        T: alloy_contract::private::Transport + ::core::clone::Clone,
11477        P: alloy_contract::private::Provider<T, N>,
11478        N: alloy_contract::private::Network,
11479    >(
11480        address: alloy_sol_types::private::Address,
11481        provider: P,
11482    ) -> LightClientMockInstance<T, P, N> {
11483        LightClientMockInstance::<T, P, N>::new(address, provider)
11484    }
11485    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11486
11487    Returns a new instance of the contract, if the deployment was successful.
11488
11489    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11490    #[inline]
11491    pub fn deploy<
11492        T: alloy_contract::private::Transport + ::core::clone::Clone,
11493        P: alloy_contract::private::Provider<T, N>,
11494        N: alloy_contract::private::Network,
11495    >(
11496        provider: P,
11497    ) -> impl ::core::future::Future<Output = alloy_contract::Result<LightClientMockInstance<T, P, N>>>
11498    {
11499        LightClientMockInstance::<T, P, N>::deploy(provider)
11500    }
11501    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11502    and constructor arguments, if any.
11503
11504    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11505    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11506    #[inline]
11507    pub fn deploy_builder<
11508        T: alloy_contract::private::Transport + ::core::clone::Clone,
11509        P: alloy_contract::private::Provider<T, N>,
11510        N: alloy_contract::private::Network,
11511    >(
11512        provider: P,
11513    ) -> alloy_contract::RawCallBuilder<T, P, N> {
11514        LightClientMockInstance::<T, P, N>::deploy_builder(provider)
11515    }
11516    /**A [`LightClientMock`](self) instance.
11517
11518    Contains type-safe methods for interacting with an on-chain instance of the
11519    [`LightClientMock`](self) contract located at a given `address`, using a given
11520    provider `P`.
11521
11522    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11523    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11524    be used to deploy a new instance of the contract.
11525
11526    See the [module-level documentation](self) for all the available methods.*/
11527    #[derive(Clone)]
11528    pub struct LightClientMockInstance<T, P, N = alloy_contract::private::Ethereum> {
11529        address: alloy_sol_types::private::Address,
11530        provider: P,
11531        _network_transport: ::core::marker::PhantomData<(N, T)>,
11532    }
11533    #[automatically_derived]
11534    impl<T, P, N> ::core::fmt::Debug for LightClientMockInstance<T, P, N> {
11535        #[inline]
11536        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11537            f.debug_tuple("LightClientMockInstance")
11538                .field(&self.address)
11539                .finish()
11540        }
11541    }
11542    /// Instantiation and getters/setters.
11543    #[automatically_derived]
11544    impl<
11545            T: alloy_contract::private::Transport + ::core::clone::Clone,
11546            P: alloy_contract::private::Provider<T, N>,
11547            N: alloy_contract::private::Network,
11548        > LightClientMockInstance<T, P, N>
11549    {
11550        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
11551
11552        See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
11553        #[inline]
11554        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
11555            Self {
11556                address,
11557                provider,
11558                _network_transport: ::core::marker::PhantomData,
11559            }
11560        }
11561        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11562
11563        Returns a new instance of the contract, if the deployment was successful.
11564
11565        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11566        #[inline]
11567        pub async fn deploy(
11568            provider: P,
11569        ) -> alloy_contract::Result<LightClientMockInstance<T, P, N>> {
11570            let call_builder = Self::deploy_builder(provider);
11571            let contract_address = call_builder.deploy().await?;
11572            Ok(Self::new(contract_address, call_builder.provider))
11573        }
11574        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11575        and constructor arguments, if any.
11576
11577        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11578        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11579        #[inline]
11580        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
11581            alloy_contract::RawCallBuilder::new_raw_deploy(
11582                provider,
11583                ::core::clone::Clone::clone(&BYTECODE),
11584            )
11585        }
11586        /// Returns a reference to the address.
11587        #[inline]
11588        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11589            &self.address
11590        }
11591        /// Sets the address.
11592        #[inline]
11593        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11594            self.address = address;
11595        }
11596        /// Sets the address and returns `self`.
11597        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11598            self.set_address(address);
11599            self
11600        }
11601        /// Returns a reference to the provider.
11602        #[inline]
11603        pub const fn provider(&self) -> &P {
11604            &self.provider
11605        }
11606    }
11607    impl<T, P: ::core::clone::Clone, N> LightClientMockInstance<T, &P, N> {
11608        /// Clones the provider and returns a new instance with the cloned provider.
11609        #[inline]
11610        pub fn with_cloned_provider(self) -> LightClientMockInstance<T, P, N> {
11611            LightClientMockInstance {
11612                address: self.address,
11613                provider: ::core::clone::Clone::clone(&self.provider),
11614                _network_transport: ::core::marker::PhantomData,
11615            }
11616        }
11617    }
11618    /// Function calls.
11619    #[automatically_derived]
11620    impl<
11621            T: alloy_contract::private::Transport + ::core::clone::Clone,
11622            P: alloy_contract::private::Provider<T, N>,
11623            N: alloy_contract::private::Network,
11624        > LightClientMockInstance<T, P, N>
11625    {
11626        /// Creates a new call builder using this contract instance's provider and address.
11627        ///
11628        /// Note that the call can be any function call, not just those defined in this
11629        /// contract. Prefer using the other methods for building type-safe contract calls.
11630        pub fn call_builder<C: alloy_sol_types::SolCall>(
11631            &self,
11632            call: &C,
11633        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
11634            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11635        }
11636        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
11637        pub fn UPGRADE_INTERFACE_VERSION(
11638            &self,
11639        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
11640            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
11641        }
11642        ///Creates a new call builder for the [`_getVk`] function.
11643        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
11644            self.call_builder(&_getVkCall {})
11645        }
11646        ///Creates a new call builder for the [`currentBlockNumber`] function.
11647        pub fn currentBlockNumber(
11648            &self,
11649        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
11650            self.call_builder(&currentBlockNumberCall {})
11651        }
11652        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
11653        pub fn disablePermissionedProverMode(
11654            &self,
11655        ) -> alloy_contract::SolCallBuilder<T, &P, disablePermissionedProverModeCall, N> {
11656            self.call_builder(&disablePermissionedProverModeCall {})
11657        }
11658        ///Creates a new call builder for the [`finalizedState`] function.
11659        pub fn finalizedState(
11660            &self,
11661        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
11662            self.call_builder(&finalizedStateCall {})
11663        }
11664        ///Creates a new call builder for the [`genesisStakeTableState`] function.
11665        pub fn genesisStakeTableState(
11666            &self,
11667        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
11668            self.call_builder(&genesisStakeTableStateCall {})
11669        }
11670        ///Creates a new call builder for the [`genesisState`] function.
11671        pub fn genesisState(&self) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
11672            self.call_builder(&genesisStateCall {})
11673        }
11674        ///Creates a new call builder for the [`getHotShotCommitment`] function.
11675        pub fn getHotShotCommitment(
11676            &self,
11677            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
11678        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
11679            self.call_builder(&getHotShotCommitmentCall { hotShotBlockHeight })
11680        }
11681        ///Creates a new call builder for the [`getStateHistoryCount`] function.
11682        pub fn getStateHistoryCount(
11683            &self,
11684        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
11685            self.call_builder(&getStateHistoryCountCall {})
11686        }
11687        ///Creates a new call builder for the [`getVersion`] function.
11688        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
11689            self.call_builder(&getVersionCall {})
11690        }
11691        ///Creates a new call builder for the [`initialize`] function.
11692        pub fn initialize(
11693            &self,
11694            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11695            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11696            _stateHistoryRetentionPeriod: u32,
11697            owner: alloy::sol_types::private::Address,
11698        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
11699            self.call_builder(&initializeCall {
11700                _genesis,
11701                _genesisStakeTableState,
11702                _stateHistoryRetentionPeriod,
11703                owner,
11704            })
11705        }
11706        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
11707        pub fn isPermissionedProverEnabled(
11708            &self,
11709        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
11710            self.call_builder(&isPermissionedProverEnabledCall {})
11711        }
11712        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
11713        pub fn lagOverEscapeHatchThreshold(
11714            &self,
11715            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11716            threshold: alloy::sol_types::private::primitives::aliases::U256,
11717        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
11718            self.call_builder(&lagOverEscapeHatchThresholdCall {
11719                blockNumber,
11720                threshold,
11721            })
11722        }
11723        ///Creates a new call builder for the [`newFinalizedState`] function.
11724        pub fn newFinalizedState(
11725            &self,
11726            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11727            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11728        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
11729            self.call_builder(&newFinalizedStateCall { newState, proof })
11730        }
11731        ///Creates a new call builder for the [`owner`] function.
11732        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
11733            self.call_builder(&ownerCall {})
11734        }
11735        ///Creates a new call builder for the [`permissionedProver`] function.
11736        pub fn permissionedProver(
11737            &self,
11738        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
11739            self.call_builder(&permissionedProverCall {})
11740        }
11741        ///Creates a new call builder for the [`proxiableUUID`] function.
11742        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
11743            self.call_builder(&proxiableUUIDCall {})
11744        }
11745        ///Creates a new call builder for the [`renounceOwnership`] function.
11746        pub fn renounceOwnership(
11747            &self,
11748        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
11749            self.call_builder(&renounceOwnershipCall {})
11750        }
11751        ///Creates a new call builder for the [`setFinalizedState`] function.
11752        pub fn setFinalizedState(
11753            &self,
11754            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11755        ) -> alloy_contract::SolCallBuilder<T, &P, setFinalizedStateCall, N> {
11756            self.call_builder(&setFinalizedStateCall { state })
11757        }
11758        ///Creates a new call builder for the [`setHotShotDownSince`] function.
11759        pub fn setHotShotDownSince(
11760            &self,
11761            l1Height: alloy::sol_types::private::primitives::aliases::U256,
11762        ) -> alloy_contract::SolCallBuilder<T, &P, setHotShotDownSinceCall, N> {
11763            self.call_builder(&setHotShotDownSinceCall { l1Height })
11764        }
11765        ///Creates a new call builder for the [`setHotShotUp`] function.
11766        pub fn setHotShotUp(&self) -> alloy_contract::SolCallBuilder<T, &P, setHotShotUpCall, N> {
11767            self.call_builder(&setHotShotUpCall {})
11768        }
11769        ///Creates a new call builder for the [`setPermissionedProver`] function.
11770        pub fn setPermissionedProver(
11771            &self,
11772            prover: alloy::sol_types::private::Address,
11773        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
11774            self.call_builder(&setPermissionedProverCall { prover })
11775        }
11776        ///Creates a new call builder for the [`setStateHistory`] function.
11777        pub fn setStateHistory(
11778            &self,
11779            _stateHistoryCommitments: alloy::sol_types::private::Vec<
11780                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
11781            >,
11782        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryCall, N> {
11783            self.call_builder(&setStateHistoryCall {
11784                _stateHistoryCommitments,
11785            })
11786        }
11787        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
11788        pub fn setstateHistoryRetentionPeriod(
11789            &self,
11790            historySeconds: u32,
11791        ) -> alloy_contract::SolCallBuilder<T, &P, setstateHistoryRetentionPeriodCall, N> {
11792            self.call_builder(&setstateHistoryRetentionPeriodCall { historySeconds })
11793        }
11794        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
11795        pub fn stateHistoryCommitments(
11796            &self,
11797            _0: alloy::sol_types::private::primitives::aliases::U256,
11798        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
11799            self.call_builder(&stateHistoryCommitmentsCall { _0 })
11800        }
11801        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
11802        pub fn stateHistoryFirstIndex(
11803            &self,
11804        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
11805            self.call_builder(&stateHistoryFirstIndexCall {})
11806        }
11807        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
11808        pub fn stateHistoryRetentionPeriod(
11809            &self,
11810        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
11811            self.call_builder(&stateHistoryRetentionPeriodCall {})
11812        }
11813        ///Creates a new call builder for the [`transferOwnership`] function.
11814        pub fn transferOwnership(
11815            &self,
11816            newOwner: alloy::sol_types::private::Address,
11817        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
11818            self.call_builder(&transferOwnershipCall { newOwner })
11819        }
11820        ///Creates a new call builder for the [`upgradeToAndCall`] function.
11821        pub fn upgradeToAndCall(
11822            &self,
11823            newImplementation: alloy::sol_types::private::Address,
11824            data: alloy::sol_types::private::Bytes,
11825        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
11826            self.call_builder(&upgradeToAndCallCall {
11827                newImplementation,
11828                data,
11829            })
11830        }
11831    }
11832    /// Event filters.
11833    #[automatically_derived]
11834    impl<
11835            T: alloy_contract::private::Transport + ::core::clone::Clone,
11836            P: alloy_contract::private::Provider<T, N>,
11837            N: alloy_contract::private::Network,
11838        > LightClientMockInstance<T, P, N>
11839    {
11840        /// Creates a new event filter using this contract instance's provider and address.
11841        ///
11842        /// Note that the type can be any event, not just those defined in this contract.
11843        /// Prefer using the other methods for building type-safe event filters.
11844        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11845            &self,
11846        ) -> alloy_contract::Event<T, &P, E, N> {
11847            alloy_contract::Event::new_sol(&self.provider, &self.address)
11848        }
11849        ///Creates a new event filter for the [`Initialized`] event.
11850        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
11851            self.event_filter::<Initialized>()
11852        }
11853        ///Creates a new event filter for the [`NewState`] event.
11854        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
11855            self.event_filter::<NewState>()
11856        }
11857        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11858        pub fn OwnershipTransferred_filter(
11859            &self,
11860        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
11861            self.event_filter::<OwnershipTransferred>()
11862        }
11863        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
11864        pub fn PermissionedProverNotRequired_filter(
11865            &self,
11866        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
11867            self.event_filter::<PermissionedProverNotRequired>()
11868        }
11869        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
11870        pub fn PermissionedProverRequired_filter(
11871            &self,
11872        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
11873            self.event_filter::<PermissionedProverRequired>()
11874        }
11875        ///Creates a new event filter for the [`Upgrade`] event.
11876        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
11877            self.event_filter::<Upgrade>()
11878        }
11879        ///Creates a new event filter for the [`Upgraded`] event.
11880        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
11881            self.event_filter::<Upgraded>()
11882        }
11883    }
11884}