hotshot_contract_adapter/bindings/
lightclientarbitrum.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(Default, Debug, PartialEq, Eq, Hash)]
22    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
23    #[derive(Clone)]
24    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
25    const _: () = {
26        use alloy::sol_types as alloy_sol_types;
27        #[automatically_derived]
28        impl alloy_sol_types::private::SolTypeValue<BaseField>
29        for alloy::sol_types::private::primitives::aliases::U256 {
30            #[inline]
31            fn stv_to_tokens(
32                &self,
33            ) -> <alloy::sol_types::sol_data::Uint<
34                256,
35            > as alloy_sol_types::SolType>::Token<'_> {
36                alloy_sol_types::private::SolTypeValue::<
37                    alloy::sol_types::sol_data::Uint<256>,
38                >::stv_to_tokens(self)
39            }
40            #[inline]
41            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
42                <alloy::sol_types::sol_data::Uint<
43                    256,
44                > as alloy_sol_types::SolType>::tokenize(self)
45                    .0
46            }
47            #[inline]
48            fn stv_abi_encode_packed_to(
49                &self,
50                out: &mut alloy_sol_types::private::Vec<u8>,
51            ) {
52                <alloy::sol_types::sol_data::Uint<
53                    256,
54                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
55            }
56            #[inline]
57            fn stv_abi_packed_encoded_size(&self) -> usize {
58                <alloy::sol_types::sol_data::Uint<
59                    256,
60                > as alloy_sol_types::SolType>::abi_encoded_size(self)
61            }
62        }
63        #[automatically_derived]
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl alloy_sol_types::SolType for BaseField {
96            type RustType = alloy::sol_types::private::primitives::aliases::U256;
97            type Token<'a> = <alloy::sol_types::sol_data::Uint<
98                256,
99            > as alloy_sol_types::SolType>::Token<'a>;
100            const SOL_NAME: &'static str = Self::NAME;
101            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
102                256,
103            > as alloy_sol_types::SolType>::ENCODED_SIZE;
104            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
105                256,
106            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
107            #[inline]
108            fn valid_token(token: &Self::Token<'_>) -> bool {
109                Self::type_check(token).is_ok()
110            }
111            #[inline]
112            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
113                <alloy::sol_types::sol_data::Uint<
114                    256,
115                > as alloy_sol_types::SolType>::type_check(token)
116            }
117            #[inline]
118            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
119                <alloy::sol_types::sol_data::Uint<
120                    256,
121                > as alloy_sol_types::SolType>::detokenize(token)
122            }
123        }
124        #[automatically_derived]
125        impl alloy_sol_types::EventTopic for BaseField {
126            #[inline]
127            fn topic_preimage_length(rust: &Self::RustType) -> usize {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
131            }
132            #[inline]
133            fn encode_topic_preimage(
134                rust: &Self::RustType,
135                out: &mut alloy_sol_types::private::Vec<u8>,
136            ) {
137                <alloy::sol_types::sol_data::Uint<
138                    256,
139                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
140            }
141            #[inline]
142            fn encode_topic(
143                rust: &Self::RustType,
144            ) -> alloy_sol_types::abi::token::WordToken {
145                <alloy::sol_types::sol_data::Uint<
146                    256,
147                > as alloy_sol_types::EventTopic>::encode_topic(rust)
148            }
149        }
150    };
151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
152    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
153    #[derive(Clone)]
154    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
155    const _: () = {
156        use alloy::sol_types as alloy_sol_types;
157        #[automatically_derived]
158        impl alloy_sol_types::private::SolTypeValue<ScalarField>
159        for alloy::sol_types::private::primitives::aliases::U256 {
160            #[inline]
161            fn stv_to_tokens(
162                &self,
163            ) -> <alloy::sol_types::sol_data::Uint<
164                256,
165            > as alloy_sol_types::SolType>::Token<'_> {
166                alloy_sol_types::private::SolTypeValue::<
167                    alloy::sol_types::sol_data::Uint<256>,
168                >::stv_to_tokens(self)
169            }
170            #[inline]
171            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
172                <alloy::sol_types::sol_data::Uint<
173                    256,
174                > as alloy_sol_types::SolType>::tokenize(self)
175                    .0
176            }
177            #[inline]
178            fn stv_abi_encode_packed_to(
179                &self,
180                out: &mut alloy_sol_types::private::Vec<u8>,
181            ) {
182                <alloy::sol_types::sol_data::Uint<
183                    256,
184                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
185            }
186            #[inline]
187            fn stv_abi_packed_encoded_size(&self) -> usize {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::abi_encoded_size(self)
191            }
192        }
193        #[automatically_derived]
194        impl ScalarField {
195            /// The Solidity type name.
196            pub const NAME: &'static str = stringify!(@ name);
197            /// Convert from the underlying value type.
198            #[inline]
199            pub const fn from(
200                value: alloy::sol_types::private::primitives::aliases::U256,
201            ) -> Self {
202                Self(value)
203            }
204            /// Return the underlying value.
205            #[inline]
206            pub const fn into(
207                self,
208            ) -> alloy::sol_types::private::primitives::aliases::U256 {
209                self.0
210            }
211            /// Return the single encoding of this value, delegating to the
212            /// underlying type.
213            #[inline]
214            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
215                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
216            }
217            /// Return the packed encoding of this value, delegating to the
218            /// underlying type.
219            #[inline]
220            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
221                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
222            }
223        }
224        #[automatically_derived]
225        impl alloy_sol_types::SolType for ScalarField {
226            type RustType = alloy::sol_types::private::primitives::aliases::U256;
227            type Token<'a> = <alloy::sol_types::sol_data::Uint<
228                256,
229            > as alloy_sol_types::SolType>::Token<'a>;
230            const SOL_NAME: &'static str = Self::NAME;
231            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
232                256,
233            > as alloy_sol_types::SolType>::ENCODED_SIZE;
234            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
235                256,
236            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
237            #[inline]
238            fn valid_token(token: &Self::Token<'_>) -> bool {
239                Self::type_check(token).is_ok()
240            }
241            #[inline]
242            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
243                <alloy::sol_types::sol_data::Uint<
244                    256,
245                > as alloy_sol_types::SolType>::type_check(token)
246            }
247            #[inline]
248            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
249                <alloy::sol_types::sol_data::Uint<
250                    256,
251                > as alloy_sol_types::SolType>::detokenize(token)
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::EventTopic for ScalarField {
256            #[inline]
257            fn topic_preimage_length(rust: &Self::RustType) -> usize {
258                <alloy::sol_types::sol_data::Uint<
259                    256,
260                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
261            }
262            #[inline]
263            fn encode_topic_preimage(
264                rust: &Self::RustType,
265                out: &mut alloy_sol_types::private::Vec<u8>,
266            ) {
267                <alloy::sol_types::sol_data::Uint<
268                    256,
269                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
270            }
271            #[inline]
272            fn encode_topic(
273                rust: &Self::RustType,
274            ) -> alloy_sol_types::abi::token::WordToken {
275                <alloy::sol_types::sol_data::Uint<
276                    256,
277                > as alloy_sol_types::EventTopic>::encode_topic(rust)
278            }
279        }
280    };
281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
282    /**```solidity
283struct G1Point { BaseField x; BaseField y; }
284```*/
285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
286    #[derive(Clone)]
287    pub struct G1Point {
288        #[allow(missing_docs)]
289        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
290        #[allow(missing_docs)]
291        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
292    }
293    #[allow(
294        non_camel_case_types,
295        non_snake_case,
296        clippy::pub_underscore_fields,
297        clippy::style
298    )]
299    const _: () = {
300        use alloy::sol_types as alloy_sol_types;
301        #[doc(hidden)]
302        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
303        #[doc(hidden)]
304        type UnderlyingRustTuple<'a> = (
305            <BaseField as alloy::sol_types::SolType>::RustType,
306            <BaseField as alloy::sol_types::SolType>::RustType,
307        );
308        #[cfg(test)]
309        #[allow(dead_code, unreachable_patterns)]
310        fn _type_assertion(
311            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
312        ) {
313            match _t {
314                alloy_sol_types::private::AssertTypeEq::<
315                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
316                >(_) => {}
317            }
318        }
319        #[automatically_derived]
320        #[doc(hidden)]
321        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
322            fn from(value: G1Point) -> Self {
323                (value.x, value.y)
324            }
325        }
326        #[automatically_derived]
327        #[doc(hidden)]
328        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
329            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
330                Self { x: tuple.0, y: tuple.1 }
331            }
332        }
333        #[automatically_derived]
334        impl alloy_sol_types::SolValue for G1Point {
335            type SolType = Self;
336        }
337        #[automatically_derived]
338        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
339            #[inline]
340            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
341                (
342                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
343                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
344                )
345            }
346            #[inline]
347            fn stv_abi_encoded_size(&self) -> usize {
348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
349                    return size;
350                }
351                let tuple = <UnderlyingRustTuple<
352                    '_,
353                > as ::core::convert::From<Self>>::from(self.clone());
354                <UnderlyingSolTuple<
355                    '_,
356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
357            }
358            #[inline]
359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
361            }
362            #[inline]
363            fn stv_abi_encode_packed_to(
364                &self,
365                out: &mut alloy_sol_types::private::Vec<u8>,
366            ) {
367                let tuple = <UnderlyingRustTuple<
368                    '_,
369                > as ::core::convert::From<Self>>::from(self.clone());
370                <UnderlyingSolTuple<
371                    '_,
372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
373            }
374            #[inline]
375            fn stv_abi_packed_encoded_size(&self) -> usize {
376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
377                    return size;
378                }
379                let tuple = <UnderlyingRustTuple<
380                    '_,
381                > as ::core::convert::From<Self>>::from(self.clone());
382                <UnderlyingSolTuple<
383                    '_,
384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
385            }
386        }
387        #[automatically_derived]
388        impl alloy_sol_types::SolType for G1Point {
389            type RustType = Self;
390            type Token<'a> = <UnderlyingSolTuple<
391                'a,
392            > as alloy_sol_types::SolType>::Token<'a>;
393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
395                '_,
396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
398                '_,
399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
400            #[inline]
401            fn valid_token(token: &Self::Token<'_>) -> bool {
402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
403            }
404            #[inline]
405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
406                let tuple = <UnderlyingSolTuple<
407                    '_,
408                > as alloy_sol_types::SolType>::detokenize(token);
409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
410            }
411        }
412        #[automatically_derived]
413        impl alloy_sol_types::SolStruct for G1Point {
414            const NAME: &'static str = "G1Point";
415            #[inline]
416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
417                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
418            }
419            #[inline]
420            fn eip712_components() -> alloy_sol_types::private::Vec<
421                alloy_sol_types::private::Cow<'static, str>,
422            > {
423                alloy_sol_types::private::Vec::new()
424            }
425            #[inline]
426            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
427                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
428            }
429            #[inline]
430            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
431                [
432                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
433                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
434                ]
435                    .concat()
436            }
437        }
438        #[automatically_derived]
439        impl alloy_sol_types::EventTopic for G1Point {
440            #[inline]
441            fn topic_preimage_length(rust: &Self::RustType) -> usize {
442                0usize
443                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
444                        &rust.x,
445                    )
446                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
447                        &rust.y,
448                    )
449            }
450            #[inline]
451            fn encode_topic_preimage(
452                rust: &Self::RustType,
453                out: &mut alloy_sol_types::private::Vec<u8>,
454            ) {
455                out.reserve(
456                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
457                );
458                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
459                    &rust.x,
460                    out,
461                );
462                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
463                    &rust.y,
464                    out,
465                );
466            }
467            #[inline]
468            fn encode_topic(
469                rust: &Self::RustType,
470            ) -> alloy_sol_types::abi::token::WordToken {
471                let mut out = alloy_sol_types::private::Vec::new();
472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
473                    rust,
474                    &mut out,
475                );
476                alloy_sol_types::abi::token::WordToken(
477                    alloy_sol_types::private::keccak256(out),
478                )
479            }
480        }
481    };
482    use alloy::contract as alloy_contract;
483    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
484
485See the [wrapper's documentation](`BN254Instance`) for more details.*/
486    #[inline]
487    pub const fn new<
488        T: alloy_contract::private::Transport + ::core::clone::Clone,
489        P: alloy_contract::private::Provider<T, N>,
490        N: alloy_contract::private::Network,
491    >(
492        address: alloy_sol_types::private::Address,
493        provider: P,
494    ) -> BN254Instance<T, P, N> {
495        BN254Instance::<T, P, N>::new(address, provider)
496    }
497    /**A [`BN254`](self) instance.
498
499Contains type-safe methods for interacting with an on-chain instance of the
500[`BN254`](self) contract located at a given `address`, using a given
501provider `P`.
502
503If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
504documentation on how to provide it), the `deploy` and `deploy_builder` methods can
505be used to deploy a new instance of the contract.
506
507See the [module-level documentation](self) for all the available methods.*/
508    #[derive(Clone)]
509    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
510        address: alloy_sol_types::private::Address,
511        provider: P,
512        _network_transport: ::core::marker::PhantomData<(N, T)>,
513    }
514    #[automatically_derived]
515    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
516        #[inline]
517        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
518            f.debug_tuple("BN254Instance").field(&self.address).finish()
519        }
520    }
521    /// Instantiation and getters/setters.
522    #[automatically_derived]
523    impl<
524        T: alloy_contract::private::Transport + ::core::clone::Clone,
525        P: alloy_contract::private::Provider<T, N>,
526        N: alloy_contract::private::Network,
527    > BN254Instance<T, P, N> {
528        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
529
530See the [wrapper's documentation](`BN254Instance`) for more details.*/
531        #[inline]
532        pub const fn new(
533            address: alloy_sol_types::private::Address,
534            provider: P,
535        ) -> Self {
536            Self {
537                address,
538                provider,
539                _network_transport: ::core::marker::PhantomData,
540            }
541        }
542        /// Returns a reference to the address.
543        #[inline]
544        pub const fn address(&self) -> &alloy_sol_types::private::Address {
545            &self.address
546        }
547        /// Sets the address.
548        #[inline]
549        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
550            self.address = address;
551        }
552        /// Sets the address and returns `self`.
553        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
554            self.set_address(address);
555            self
556        }
557        /// Returns a reference to the provider.
558        #[inline]
559        pub const fn provider(&self) -> &P {
560            &self.provider
561        }
562    }
563    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
564        /// Clones the provider and returns a new instance with the cloned provider.
565        #[inline]
566        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
567            BN254Instance {
568                address: self.address,
569                provider: ::core::clone::Clone::clone(&self.provider),
570                _network_transport: ::core::marker::PhantomData,
571            }
572        }
573    }
574    /// Function calls.
575    #[automatically_derived]
576    impl<
577        T: alloy_contract::private::Transport + ::core::clone::Clone,
578        P: alloy_contract::private::Provider<T, N>,
579        N: alloy_contract::private::Network,
580    > BN254Instance<T, P, N> {
581        /// Creates a new call builder using this contract instance's provider and address.
582        ///
583        /// Note that the call can be any function call, not just those defined in this
584        /// contract. Prefer using the other methods for building type-safe contract calls.
585        pub fn call_builder<C: alloy_sol_types::SolCall>(
586            &self,
587            call: &C,
588        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
589            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
590        }
591    }
592    /// Event filters.
593    #[automatically_derived]
594    impl<
595        T: alloy_contract::private::Transport + ::core::clone::Clone,
596        P: alloy_contract::private::Provider<T, N>,
597        N: alloy_contract::private::Network,
598    > BN254Instance<T, P, N> {
599        /// Creates a new event filter using this contract instance's provider and address.
600        ///
601        /// Note that the type can be any event, not just those defined in this contract.
602        /// Prefer using the other methods for building type-safe event filters.
603        pub fn event_filter<E: alloy_sol_types::SolEvent>(
604            &self,
605        ) -> alloy_contract::Event<T, &P, E, N> {
606            alloy_contract::Event::new_sol(&self.provider, &self.address)
607        }
608    }
609}
610///Module containing a contract's types and functions.
611/**
612
613```solidity
614library IPlonkVerifier {
615    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
616    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
617}
618```*/
619#[allow(
620    non_camel_case_types,
621    non_snake_case,
622    clippy::pub_underscore_fields,
623    clippy::style,
624    clippy::empty_structs_with_brackets
625)]
626pub mod IPlonkVerifier {
627    use super::*;
628    use alloy::sol_types as alloy_sol_types;
629    #[derive()]
630    /**```solidity
631struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
632```*/
633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
634    #[derive(Clone)]
635    pub struct PlonkProof {
636        #[allow(missing_docs)]
637        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
638        #[allow(missing_docs)]
639        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
640        #[allow(missing_docs)]
641        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
642        #[allow(missing_docs)]
643        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
644        #[allow(missing_docs)]
645        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
646        #[allow(missing_docs)]
647        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
648        #[allow(missing_docs)]
649        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
650        #[allow(missing_docs)]
651        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
652        #[allow(missing_docs)]
653        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
654        #[allow(missing_docs)]
655        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
656        #[allow(missing_docs)]
657        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
658        #[allow(missing_docs)]
659        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
660        #[allow(missing_docs)]
661        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
662        #[allow(missing_docs)]
663        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682    }
683    #[allow(
684        non_camel_case_types,
685        non_snake_case,
686        clippy::pub_underscore_fields,
687        clippy::style
688    )]
689    const _: () = {
690        use alloy::sol_types as alloy_sol_types;
691        #[doc(hidden)]
692        type UnderlyingSolTuple<'a> = (
693            BN254::G1Point,
694            BN254::G1Point,
695            BN254::G1Point,
696            BN254::G1Point,
697            BN254::G1Point,
698            BN254::G1Point,
699            BN254::G1Point,
700            BN254::G1Point,
701            BN254::G1Point,
702            BN254::G1Point,
703            BN254::G1Point,
704            BN254::G1Point,
705            BN254::G1Point,
706            BN254::ScalarField,
707            BN254::ScalarField,
708            BN254::ScalarField,
709            BN254::ScalarField,
710            BN254::ScalarField,
711            BN254::ScalarField,
712            BN254::ScalarField,
713            BN254::ScalarField,
714            BN254::ScalarField,
715            BN254::ScalarField,
716        );
717        #[doc(hidden)]
718        type UnderlyingRustTuple<'a> = (
719            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
720            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
721            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
722            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
723            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
724            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
725            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
726            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
727            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
728            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
729            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
730            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
731            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
732            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
733            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
734            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
735            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
736            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
737            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
738            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
739            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
740            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
741            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
742        );
743        #[cfg(test)]
744        #[allow(dead_code, unreachable_patterns)]
745        fn _type_assertion(
746            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
747        ) {
748            match _t {
749                alloy_sol_types::private::AssertTypeEq::<
750                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
751                >(_) => {}
752            }
753        }
754        #[automatically_derived]
755        #[doc(hidden)]
756        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
757            fn from(value: PlonkProof) -> Self {
758                (
759                    value.wire0,
760                    value.wire1,
761                    value.wire2,
762                    value.wire3,
763                    value.wire4,
764                    value.prodPerm,
765                    value.split0,
766                    value.split1,
767                    value.split2,
768                    value.split3,
769                    value.split4,
770                    value.zeta,
771                    value.zetaOmega,
772                    value.wireEval0,
773                    value.wireEval1,
774                    value.wireEval2,
775                    value.wireEval3,
776                    value.wireEval4,
777                    value.sigmaEval0,
778                    value.sigmaEval1,
779                    value.sigmaEval2,
780                    value.sigmaEval3,
781                    value.prodPermZetaOmegaEval,
782                )
783            }
784        }
785        #[automatically_derived]
786        #[doc(hidden)]
787        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
788            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                Self {
790                    wire0: tuple.0,
791                    wire1: tuple.1,
792                    wire2: tuple.2,
793                    wire3: tuple.3,
794                    wire4: tuple.4,
795                    prodPerm: tuple.5,
796                    split0: tuple.6,
797                    split1: tuple.7,
798                    split2: tuple.8,
799                    split3: tuple.9,
800                    split4: tuple.10,
801                    zeta: tuple.11,
802                    zetaOmega: tuple.12,
803                    wireEval0: tuple.13,
804                    wireEval1: tuple.14,
805                    wireEval2: tuple.15,
806                    wireEval3: tuple.16,
807                    wireEval4: tuple.17,
808                    sigmaEval0: tuple.18,
809                    sigmaEval1: tuple.19,
810                    sigmaEval2: tuple.20,
811                    sigmaEval3: tuple.21,
812                    prodPermZetaOmegaEval: tuple.22,
813                }
814            }
815        }
816        #[automatically_derived]
817        impl alloy_sol_types::SolValue for PlonkProof {
818            type SolType = Self;
819        }
820        #[automatically_derived]
821        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
822            #[inline]
823            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
824                (
825                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
826                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
827                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
828                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
829                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
830                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
831                        &self.prodPerm,
832                    ),
833                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
834                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
835                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
836                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
837                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
838                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
839                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
840                        &self.zetaOmega,
841                    ),
842                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
843                        &self.wireEval0,
844                    ),
845                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
846                        &self.wireEval1,
847                    ),
848                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
849                        &self.wireEval2,
850                    ),
851                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
852                        &self.wireEval3,
853                    ),
854                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
855                        &self.wireEval4,
856                    ),
857                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
858                        &self.sigmaEval0,
859                    ),
860                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
861                        &self.sigmaEval1,
862                    ),
863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
864                        &self.sigmaEval2,
865                    ),
866                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
867                        &self.sigmaEval3,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.prodPermZetaOmegaEval,
871                    ),
872                )
873            }
874            #[inline]
875            fn stv_abi_encoded_size(&self) -> usize {
876                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
877                    return size;
878                }
879                let tuple = <UnderlyingRustTuple<
880                    '_,
881                > as ::core::convert::From<Self>>::from(self.clone());
882                <UnderlyingSolTuple<
883                    '_,
884                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
885            }
886            #[inline]
887            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
888                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
889            }
890            #[inline]
891            fn stv_abi_encode_packed_to(
892                &self,
893                out: &mut alloy_sol_types::private::Vec<u8>,
894            ) {
895                let tuple = <UnderlyingRustTuple<
896                    '_,
897                > as ::core::convert::From<Self>>::from(self.clone());
898                <UnderlyingSolTuple<
899                    '_,
900                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
901            }
902            #[inline]
903            fn stv_abi_packed_encoded_size(&self) -> usize {
904                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
905                    return size;
906                }
907                let tuple = <UnderlyingRustTuple<
908                    '_,
909                > as ::core::convert::From<Self>>::from(self.clone());
910                <UnderlyingSolTuple<
911                    '_,
912                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
913            }
914        }
915        #[automatically_derived]
916        impl alloy_sol_types::SolType for PlonkProof {
917            type RustType = Self;
918            type Token<'a> = <UnderlyingSolTuple<
919                'a,
920            > as alloy_sol_types::SolType>::Token<'a>;
921            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
922            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
923                '_,
924            > as alloy_sol_types::SolType>::ENCODED_SIZE;
925            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
926                '_,
927            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
928            #[inline]
929            fn valid_token(token: &Self::Token<'_>) -> bool {
930                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
931            }
932            #[inline]
933            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
934                let tuple = <UnderlyingSolTuple<
935                    '_,
936                > as alloy_sol_types::SolType>::detokenize(token);
937                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolStruct for PlonkProof {
942            const NAME: &'static str = "PlonkProof";
943            #[inline]
944            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
945                alloy_sol_types::private::Cow::Borrowed(
946                    "PlonkProof(BN254.G1Point wire0,BN254.G1Point wire1,BN254.G1Point wire2,BN254.G1Point wire3,BN254.G1Point wire4,BN254.G1Point prodPerm,BN254.G1Point split0,BN254.G1Point split1,BN254.G1Point split2,BN254.G1Point split3,BN254.G1Point split4,BN254.G1Point zeta,BN254.G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
947                )
948            }
949            #[inline]
950            fn eip712_components() -> alloy_sol_types::private::Vec<
951                alloy_sol_types::private::Cow<'static, str>,
952            > {
953                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
954                components
955                    .push(
956                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
957                    );
958                components
959                    .extend(
960                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
961                    );
962                components
963                    .push(
964                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
965                    );
966                components
967                    .extend(
968                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
969                    );
970                components
971                    .push(
972                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
973                    );
974                components
975                    .extend(
976                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
977                    );
978                components
979                    .push(
980                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
981                    );
982                components
983                    .extend(
984                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
985                    );
986                components
987                    .push(
988                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
989                    );
990                components
991                    .extend(
992                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
993                    );
994                components
995                    .push(
996                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
997                    );
998                components
999                    .extend(
1000                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1001                    );
1002                components
1003                    .push(
1004                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1005                    );
1006                components
1007                    .extend(
1008                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1009                    );
1010                components
1011                    .push(
1012                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1013                    );
1014                components
1015                    .extend(
1016                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1017                    );
1018                components
1019                    .push(
1020                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1021                    );
1022                components
1023                    .extend(
1024                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1025                    );
1026                components
1027                    .push(
1028                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1029                    );
1030                components
1031                    .extend(
1032                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1033                    );
1034                components
1035                    .push(
1036                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1037                    );
1038                components
1039                    .extend(
1040                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1041                    );
1042                components
1043                    .push(
1044                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1045                    );
1046                components
1047                    .extend(
1048                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1049                    );
1050                components
1051                    .push(
1052                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1053                    );
1054                components
1055                    .extend(
1056                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1057                    );
1058                components
1059            }
1060            #[inline]
1061            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1062                [
1063                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1064                            &self.wire0,
1065                        )
1066                        .0,
1067                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1068                            &self.wire1,
1069                        )
1070                        .0,
1071                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1072                            &self.wire2,
1073                        )
1074                        .0,
1075                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1076                            &self.wire3,
1077                        )
1078                        .0,
1079                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1080                            &self.wire4,
1081                        )
1082                        .0,
1083                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1084                            &self.prodPerm,
1085                        )
1086                        .0,
1087                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1088                            &self.split0,
1089                        )
1090                        .0,
1091                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1092                            &self.split1,
1093                        )
1094                        .0,
1095                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1096                            &self.split2,
1097                        )
1098                        .0,
1099                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1100                            &self.split3,
1101                        )
1102                        .0,
1103                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1104                            &self.split4,
1105                        )
1106                        .0,
1107                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1108                            &self.zeta,
1109                        )
1110                        .0,
1111                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1112                            &self.zetaOmega,
1113                        )
1114                        .0,
1115                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1116                            &self.wireEval0,
1117                        )
1118                        .0,
1119                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1120                            &self.wireEval1,
1121                        )
1122                        .0,
1123                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1124                            &self.wireEval2,
1125                        )
1126                        .0,
1127                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1128                            &self.wireEval3,
1129                        )
1130                        .0,
1131                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1132                            &self.wireEval4,
1133                        )
1134                        .0,
1135                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1136                            &self.sigmaEval0,
1137                        )
1138                        .0,
1139                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1140                            &self.sigmaEval1,
1141                        )
1142                        .0,
1143                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1144                            &self.sigmaEval2,
1145                        )
1146                        .0,
1147                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1148                            &self.sigmaEval3,
1149                        )
1150                        .0,
1151                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1152                            &self.prodPermZetaOmegaEval,
1153                        )
1154                        .0,
1155                ]
1156                    .concat()
1157            }
1158        }
1159        #[automatically_derived]
1160        impl alloy_sol_types::EventTopic for PlonkProof {
1161            #[inline]
1162            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1163                0usize
1164                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1165                        &rust.wire0,
1166                    )
1167                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1168                        &rust.wire1,
1169                    )
1170                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1171                        &rust.wire2,
1172                    )
1173                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1174                        &rust.wire3,
1175                    )
1176                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1177                        &rust.wire4,
1178                    )
1179                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1180                        &rust.prodPerm,
1181                    )
1182                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1183                        &rust.split0,
1184                    )
1185                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1186                        &rust.split1,
1187                    )
1188                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1189                        &rust.split2,
1190                    )
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.split3,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.split4,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.zeta,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.zetaOmega,
1202                    )
1203                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wireEval0,
1205                    )
1206                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.wireEval1,
1208                    )
1209                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.wireEval2,
1211                    )
1212                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.wireEval3,
1214                    )
1215                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.wireEval4,
1217                    )
1218                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.sigmaEval0,
1220                    )
1221                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.sigmaEval1,
1223                    )
1224                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.sigmaEval2,
1226                    )
1227                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.sigmaEval3,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.prodPermZetaOmegaEval,
1232                    )
1233            }
1234            #[inline]
1235            fn encode_topic_preimage(
1236                rust: &Self::RustType,
1237                out: &mut alloy_sol_types::private::Vec<u8>,
1238            ) {
1239                out.reserve(
1240                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1241                );
1242                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1243                    &rust.wire0,
1244                    out,
1245                );
1246                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1247                    &rust.wire1,
1248                    out,
1249                );
1250                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1251                    &rust.wire2,
1252                    out,
1253                );
1254                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1255                    &rust.wire3,
1256                    out,
1257                );
1258                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1259                    &rust.wire4,
1260                    out,
1261                );
1262                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1263                    &rust.prodPerm,
1264                    out,
1265                );
1266                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1267                    &rust.split0,
1268                    out,
1269                );
1270                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1271                    &rust.split1,
1272                    out,
1273                );
1274                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1275                    &rust.split2,
1276                    out,
1277                );
1278                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1279                    &rust.split3,
1280                    out,
1281                );
1282                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1283                    &rust.split4,
1284                    out,
1285                );
1286                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1287                    &rust.zeta,
1288                    out,
1289                );
1290                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1291                    &rust.zetaOmega,
1292                    out,
1293                );
1294                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1295                    &rust.wireEval0,
1296                    out,
1297                );
1298                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1299                    &rust.wireEval1,
1300                    out,
1301                );
1302                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1303                    &rust.wireEval2,
1304                    out,
1305                );
1306                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1307                    &rust.wireEval3,
1308                    out,
1309                );
1310                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1311                    &rust.wireEval4,
1312                    out,
1313                );
1314                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1315                    &rust.sigmaEval0,
1316                    out,
1317                );
1318                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1319                    &rust.sigmaEval1,
1320                    out,
1321                );
1322                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1323                    &rust.sigmaEval2,
1324                    out,
1325                );
1326                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1327                    &rust.sigmaEval3,
1328                    out,
1329                );
1330                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1331                    &rust.prodPermZetaOmegaEval,
1332                    out,
1333                );
1334            }
1335            #[inline]
1336            fn encode_topic(
1337                rust: &Self::RustType,
1338            ) -> alloy_sol_types::abi::token::WordToken {
1339                let mut out = alloy_sol_types::private::Vec::new();
1340                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    rust,
1342                    &mut out,
1343                );
1344                alloy_sol_types::abi::token::WordToken(
1345                    alloy_sol_types::private::keccak256(out),
1346                )
1347            }
1348        }
1349    };
1350    #[derive()]
1351    /**```solidity
1352struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1353```*/
1354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1355    #[derive(Clone)]
1356    pub struct VerifyingKey {
1357        #[allow(missing_docs)]
1358        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1359        #[allow(missing_docs)]
1360        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1361        #[allow(missing_docs)]
1362        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1363        #[allow(missing_docs)]
1364        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1365        #[allow(missing_docs)]
1366        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1367        #[allow(missing_docs)]
1368        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1369        #[allow(missing_docs)]
1370        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1371        #[allow(missing_docs)]
1372        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1399        #[allow(missing_docs)]
1400        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1401    }
1402    #[allow(
1403        non_camel_case_types,
1404        non_snake_case,
1405        clippy::pub_underscore_fields,
1406        clippy::style
1407    )]
1408    const _: () = {
1409        use alloy::sol_types as alloy_sol_types;
1410        #[doc(hidden)]
1411        type UnderlyingSolTuple<'a> = (
1412            alloy::sol_types::sol_data::Uint<256>,
1413            alloy::sol_types::sol_data::Uint<256>,
1414            BN254::G1Point,
1415            BN254::G1Point,
1416            BN254::G1Point,
1417            BN254::G1Point,
1418            BN254::G1Point,
1419            BN254::G1Point,
1420            BN254::G1Point,
1421            BN254::G1Point,
1422            BN254::G1Point,
1423            BN254::G1Point,
1424            BN254::G1Point,
1425            BN254::G1Point,
1426            BN254::G1Point,
1427            BN254::G1Point,
1428            BN254::G1Point,
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            alloy::sol_types::sol_data::FixedBytes<32>,
1433            alloy::sol_types::sol_data::FixedBytes<32>,
1434        );
1435        #[doc(hidden)]
1436        type UnderlyingRustTuple<'a> = (
1437            alloy::sol_types::private::primitives::aliases::U256,
1438            alloy::sol_types::private::primitives::aliases::U256,
1439            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1440            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1441            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1442            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1443            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1444            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1445            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1446            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1447            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1448            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1449            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1450            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1451            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1452            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1453            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1454            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            alloy::sol_types::private::FixedBytes<32>,
1458            alloy::sol_types::private::FixedBytes<32>,
1459        );
1460        #[cfg(test)]
1461        #[allow(dead_code, unreachable_patterns)]
1462        fn _type_assertion(
1463            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1464        ) {
1465            match _t {
1466                alloy_sol_types::private::AssertTypeEq::<
1467                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1468                >(_) => {}
1469            }
1470        }
1471        #[automatically_derived]
1472        #[doc(hidden)]
1473        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1474            fn from(value: VerifyingKey) -> Self {
1475                (
1476                    value.domainSize,
1477                    value.numInputs,
1478                    value.sigma0,
1479                    value.sigma1,
1480                    value.sigma2,
1481                    value.sigma3,
1482                    value.sigma4,
1483                    value.q1,
1484                    value.q2,
1485                    value.q3,
1486                    value.q4,
1487                    value.qM12,
1488                    value.qM34,
1489                    value.qO,
1490                    value.qC,
1491                    value.qH1,
1492                    value.qH2,
1493                    value.qH3,
1494                    value.qH4,
1495                    value.qEcc,
1496                    value.g2LSB,
1497                    value.g2MSB,
1498                )
1499            }
1500        }
1501        #[automatically_derived]
1502        #[doc(hidden)]
1503        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    domainSize: tuple.0,
1507                    numInputs: tuple.1,
1508                    sigma0: tuple.2,
1509                    sigma1: tuple.3,
1510                    sigma2: tuple.4,
1511                    sigma3: tuple.5,
1512                    sigma4: tuple.6,
1513                    q1: tuple.7,
1514                    q2: tuple.8,
1515                    q3: tuple.9,
1516                    q4: tuple.10,
1517                    qM12: tuple.11,
1518                    qM34: tuple.12,
1519                    qO: tuple.13,
1520                    qC: tuple.14,
1521                    qH1: tuple.15,
1522                    qH2: tuple.16,
1523                    qH3: tuple.17,
1524                    qH4: tuple.18,
1525                    qEcc: tuple.19,
1526                    g2LSB: tuple.20,
1527                    g2MSB: tuple.21,
1528                }
1529            }
1530        }
1531        #[automatically_derived]
1532        impl alloy_sol_types::SolValue for VerifyingKey {
1533            type SolType = Self;
1534        }
1535        #[automatically_derived]
1536        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1537            #[inline]
1538            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1539                (
1540                    <alloy::sol_types::sol_data::Uint<
1541                        256,
1542                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1543                    <alloy::sol_types::sol_data::Uint<
1544                        256,
1545                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1546                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1547                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1548                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1549                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1550                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1551                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1552                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1553                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1554                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1555                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1556                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1557                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1558                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1559                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1560                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1564                    <alloy::sol_types::sol_data::FixedBytes<
1565                        32,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1567                    <alloy::sol_types::sol_data::FixedBytes<
1568                        32,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1570                )
1571            }
1572            #[inline]
1573            fn stv_abi_encoded_size(&self) -> usize {
1574                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1575                    return size;
1576                }
1577                let tuple = <UnderlyingRustTuple<
1578                    '_,
1579                > as ::core::convert::From<Self>>::from(self.clone());
1580                <UnderlyingSolTuple<
1581                    '_,
1582                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1583            }
1584            #[inline]
1585            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1586                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1587            }
1588            #[inline]
1589            fn stv_abi_encode_packed_to(
1590                &self,
1591                out: &mut alloy_sol_types::private::Vec<u8>,
1592            ) {
1593                let tuple = <UnderlyingRustTuple<
1594                    '_,
1595                > as ::core::convert::From<Self>>::from(self.clone());
1596                <UnderlyingSolTuple<
1597                    '_,
1598                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1599            }
1600            #[inline]
1601            fn stv_abi_packed_encoded_size(&self) -> usize {
1602                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1603                    return size;
1604                }
1605                let tuple = <UnderlyingRustTuple<
1606                    '_,
1607                > as ::core::convert::From<Self>>::from(self.clone());
1608                <UnderlyingSolTuple<
1609                    '_,
1610                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1611            }
1612        }
1613        #[automatically_derived]
1614        impl alloy_sol_types::SolType for VerifyingKey {
1615            type RustType = Self;
1616            type Token<'a> = <UnderlyingSolTuple<
1617                'a,
1618            > as alloy_sol_types::SolType>::Token<'a>;
1619            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1620            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1621                '_,
1622            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1623            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1624                '_,
1625            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1626            #[inline]
1627            fn valid_token(token: &Self::Token<'_>) -> bool {
1628                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1629            }
1630            #[inline]
1631            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1632                let tuple = <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::detokenize(token);
1635                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1636            }
1637        }
1638        #[automatically_derived]
1639        impl alloy_sol_types::SolStruct for VerifyingKey {
1640            const NAME: &'static str = "VerifyingKey";
1641            #[inline]
1642            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1643                alloy_sol_types::private::Cow::Borrowed(
1644                    "VerifyingKey(uint256 domainSize,uint256 numInputs,BN254.G1Point sigma0,BN254.G1Point sigma1,BN254.G1Point sigma2,BN254.G1Point sigma3,BN254.G1Point sigma4,BN254.G1Point q1,BN254.G1Point q2,BN254.G1Point q3,BN254.G1Point q4,BN254.G1Point qM12,BN254.G1Point qM34,BN254.G1Point qO,BN254.G1Point qC,BN254.G1Point qH1,BN254.G1Point qH2,BN254.G1Point qH3,BN254.G1Point qH4,BN254.G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1645                )
1646            }
1647            #[inline]
1648            fn eip712_components() -> alloy_sol_types::private::Vec<
1649                alloy_sol_types::private::Cow<'static, str>,
1650            > {
1651                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1652                components
1653                    .push(
1654                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1655                    );
1656                components
1657                    .extend(
1658                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1659                    );
1660                components
1661                    .push(
1662                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1663                    );
1664                components
1665                    .extend(
1666                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1667                    );
1668                components
1669                    .push(
1670                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1671                    );
1672                components
1673                    .extend(
1674                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1675                    );
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797            }
1798            #[inline]
1799            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1800                [
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1804                        .0,
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1808                        .0,
1809                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1810                            &self.sigma0,
1811                        )
1812                        .0,
1813                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1814                            &self.sigma1,
1815                        )
1816                        .0,
1817                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1818                            &self.sigma2,
1819                        )
1820                        .0,
1821                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1822                            &self.sigma3,
1823                        )
1824                        .0,
1825                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1826                            &self.sigma4,
1827                        )
1828                        .0,
1829                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1830                            &self.q1,
1831                        )
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.q2,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.q3,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.q4,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.qM12,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.qM34,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.qO,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.qC,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.qH1,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.qH2,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qH3,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qH4,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qEcc,
1879                        )
1880                        .0,
1881                    <alloy::sol_types::sol_data::FixedBytes<
1882                        32,
1883                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1884                        .0,
1885                    <alloy::sol_types::sol_data::FixedBytes<
1886                        32,
1887                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1888                        .0,
1889                ]
1890                    .concat()
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::EventTopic for VerifyingKey {
1895            #[inline]
1896            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1897                0usize
1898                    + <alloy::sol_types::sol_data::Uint<
1899                        256,
1900                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.domainSize,
1902                    )
1903                    + <alloy::sol_types::sol_data::Uint<
1904                        256,
1905                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1906                        &rust.numInputs,
1907                    )
1908                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1909                        &rust.sigma0,
1910                    )
1911                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1912                        &rust.sigma1,
1913                    )
1914                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1915                        &rust.sigma2,
1916                    )
1917                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1918                        &rust.sigma3,
1919                    )
1920                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1921                        &rust.sigma4,
1922                    )
1923                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1924                        &rust.q1,
1925                    )
1926                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.q2,
1928                    )
1929                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.q3,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.q4,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.qM12,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.qM34,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.qO,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.qC,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.qH1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.qH2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.qH3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.qH4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qEcc,
1961                    )
1962                    + <alloy::sol_types::sol_data::FixedBytes<
1963                        32,
1964                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1965                    + <alloy::sol_types::sol_data::FixedBytes<
1966                        32,
1967                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1968            }
1969            #[inline]
1970            fn encode_topic_preimage(
1971                rust: &Self::RustType,
1972                out: &mut alloy_sol_types::private::Vec<u8>,
1973            ) {
1974                out.reserve(
1975                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1976                );
1977                <alloy::sol_types::sol_data::Uint<
1978                    256,
1979                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1980                    &rust.domainSize,
1981                    out,
1982                );
1983                <alloy::sol_types::sol_data::Uint<
1984                    256,
1985                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1986                    &rust.numInputs,
1987                    out,
1988                );
1989                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1990                    &rust.sigma0,
1991                    out,
1992                );
1993                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1994                    &rust.sigma1,
1995                    out,
1996                );
1997                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1998                    &rust.sigma2,
1999                    out,
2000                );
2001                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2002                    &rust.sigma3,
2003                    out,
2004                );
2005                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.sigma4,
2007                    out,
2008                );
2009                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.q1,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.q2,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.q3,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.q4,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.qM12,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.qM34,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.qO,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.qC,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.qH1,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.qH2,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qH3,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qH4,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qEcc,
2059                    out,
2060                );
2061                <alloy::sol_types::sol_data::FixedBytes<
2062                    32,
2063                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.g2LSB,
2065                    out,
2066                );
2067                <alloy::sol_types::sol_data::FixedBytes<
2068                    32,
2069                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.g2MSB,
2071                    out,
2072                );
2073            }
2074            #[inline]
2075            fn encode_topic(
2076                rust: &Self::RustType,
2077            ) -> alloy_sol_types::abi::token::WordToken {
2078                let mut out = alloy_sol_types::private::Vec::new();
2079                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    rust,
2081                    &mut out,
2082                );
2083                alloy_sol_types::abi::token::WordToken(
2084                    alloy_sol_types::private::keccak256(out),
2085                )
2086            }
2087        }
2088    };
2089    use alloy::contract as alloy_contract;
2090    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2091
2092See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2093    #[inline]
2094    pub const fn new<
2095        T: alloy_contract::private::Transport + ::core::clone::Clone,
2096        P: alloy_contract::private::Provider<T, N>,
2097        N: alloy_contract::private::Network,
2098    >(
2099        address: alloy_sol_types::private::Address,
2100        provider: P,
2101    ) -> IPlonkVerifierInstance<T, P, N> {
2102        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
2103    }
2104    /**A [`IPlonkVerifier`](self) instance.
2105
2106Contains type-safe methods for interacting with an on-chain instance of the
2107[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2108provider `P`.
2109
2110If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2111documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2112be used to deploy a new instance of the contract.
2113
2114See the [module-level documentation](self) for all the available methods.*/
2115    #[derive(Clone)]
2116    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
2117        address: alloy_sol_types::private::Address,
2118        provider: P,
2119        _network_transport: ::core::marker::PhantomData<(N, T)>,
2120    }
2121    #[automatically_derived]
2122    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
2123        #[inline]
2124        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2125            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2126        }
2127    }
2128    /// Instantiation and getters/setters.
2129    #[automatically_derived]
2130    impl<
2131        T: alloy_contract::private::Transport + ::core::clone::Clone,
2132        P: alloy_contract::private::Provider<T, N>,
2133        N: alloy_contract::private::Network,
2134    > IPlonkVerifierInstance<T, P, N> {
2135        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2136
2137See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2138        #[inline]
2139        pub const fn new(
2140            address: alloy_sol_types::private::Address,
2141            provider: P,
2142        ) -> Self {
2143            Self {
2144                address,
2145                provider,
2146                _network_transport: ::core::marker::PhantomData,
2147            }
2148        }
2149        /// Returns a reference to the address.
2150        #[inline]
2151        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2152            &self.address
2153        }
2154        /// Sets the address.
2155        #[inline]
2156        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2157            self.address = address;
2158        }
2159        /// Sets the address and returns `self`.
2160        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2161            self.set_address(address);
2162            self
2163        }
2164        /// Returns a reference to the provider.
2165        #[inline]
2166        pub const fn provider(&self) -> &P {
2167            &self.provider
2168        }
2169    }
2170    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
2171        /// Clones the provider and returns a new instance with the cloned provider.
2172        #[inline]
2173        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
2174            IPlonkVerifierInstance {
2175                address: self.address,
2176                provider: ::core::clone::Clone::clone(&self.provider),
2177                _network_transport: ::core::marker::PhantomData,
2178            }
2179        }
2180    }
2181    /// Function calls.
2182    #[automatically_derived]
2183    impl<
2184        T: alloy_contract::private::Transport + ::core::clone::Clone,
2185        P: alloy_contract::private::Provider<T, N>,
2186        N: alloy_contract::private::Network,
2187    > IPlonkVerifierInstance<T, P, N> {
2188        /// Creates a new call builder using this contract instance's provider and address.
2189        ///
2190        /// Note that the call can be any function call, not just those defined in this
2191        /// contract. Prefer using the other methods for building type-safe contract calls.
2192        pub fn call_builder<C: alloy_sol_types::SolCall>(
2193            &self,
2194            call: &C,
2195        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2196            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2197        }
2198    }
2199    /// Event filters.
2200    #[automatically_derived]
2201    impl<
2202        T: alloy_contract::private::Transport + ::core::clone::Clone,
2203        P: alloy_contract::private::Provider<T, N>,
2204        N: alloy_contract::private::Network,
2205    > IPlonkVerifierInstance<T, P, N> {
2206        /// Creates a new event filter using this contract instance's provider and address.
2207        ///
2208        /// Note that the type can be any event, not just those defined in this contract.
2209        /// Prefer using the other methods for building type-safe event filters.
2210        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2211            &self,
2212        ) -> alloy_contract::Event<T, &P, E, N> {
2213            alloy_contract::Event::new_sol(&self.provider, &self.address)
2214        }
2215    }
2216}
2217///Module containing a contract's types and functions.
2218/**
2219
2220```solidity
2221library LightClient {
2222    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2223    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2224}
2225```*/
2226#[allow(
2227    non_camel_case_types,
2228    non_snake_case,
2229    clippy::pub_underscore_fields,
2230    clippy::style,
2231    clippy::empty_structs_with_brackets
2232)]
2233pub mod LightClient {
2234    use super::*;
2235    use alloy::sol_types as alloy_sol_types;
2236    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2237    /**```solidity
2238struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2239```*/
2240    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2241    #[derive(Clone)]
2242    pub struct LightClientState {
2243        #[allow(missing_docs)]
2244        pub viewNum: u64,
2245        #[allow(missing_docs)]
2246        pub blockHeight: u64,
2247        #[allow(missing_docs)]
2248        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2249    }
2250    #[allow(
2251        non_camel_case_types,
2252        non_snake_case,
2253        clippy::pub_underscore_fields,
2254        clippy::style
2255    )]
2256    const _: () = {
2257        use alloy::sol_types as alloy_sol_types;
2258        #[doc(hidden)]
2259        type UnderlyingSolTuple<'a> = (
2260            alloy::sol_types::sol_data::Uint<64>,
2261            alloy::sol_types::sol_data::Uint<64>,
2262            BN254::ScalarField,
2263        );
2264        #[doc(hidden)]
2265        type UnderlyingRustTuple<'a> = (
2266            u64,
2267            u64,
2268            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2269        );
2270        #[cfg(test)]
2271        #[allow(dead_code, unreachable_patterns)]
2272        fn _type_assertion(
2273            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2274        ) {
2275            match _t {
2276                alloy_sol_types::private::AssertTypeEq::<
2277                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2278                >(_) => {}
2279            }
2280        }
2281        #[automatically_derived]
2282        #[doc(hidden)]
2283        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2284            fn from(value: LightClientState) -> Self {
2285                (value.viewNum, value.blockHeight, value.blockCommRoot)
2286            }
2287        }
2288        #[automatically_derived]
2289        #[doc(hidden)]
2290        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2291            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2292                Self {
2293                    viewNum: tuple.0,
2294                    blockHeight: tuple.1,
2295                    blockCommRoot: tuple.2,
2296                }
2297            }
2298        }
2299        #[automatically_derived]
2300        impl alloy_sol_types::SolValue for LightClientState {
2301            type SolType = Self;
2302        }
2303        #[automatically_derived]
2304        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2305            #[inline]
2306            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2307                (
2308                    <alloy::sol_types::sol_data::Uint<
2309                        64,
2310                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2311                    <alloy::sol_types::sol_data::Uint<
2312                        64,
2313                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2314                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2315                        &self.blockCommRoot,
2316                    ),
2317                )
2318            }
2319            #[inline]
2320            fn stv_abi_encoded_size(&self) -> usize {
2321                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2322                    return size;
2323                }
2324                let tuple = <UnderlyingRustTuple<
2325                    '_,
2326                > as ::core::convert::From<Self>>::from(self.clone());
2327                <UnderlyingSolTuple<
2328                    '_,
2329                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2330            }
2331            #[inline]
2332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2334            }
2335            #[inline]
2336            fn stv_abi_encode_packed_to(
2337                &self,
2338                out: &mut alloy_sol_types::private::Vec<u8>,
2339            ) {
2340                let tuple = <UnderlyingRustTuple<
2341                    '_,
2342                > as ::core::convert::From<Self>>::from(self.clone());
2343                <UnderlyingSolTuple<
2344                    '_,
2345                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2346            }
2347            #[inline]
2348            fn stv_abi_packed_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2358            }
2359        }
2360        #[automatically_derived]
2361        impl alloy_sol_types::SolType for LightClientState {
2362            type RustType = Self;
2363            type Token<'a> = <UnderlyingSolTuple<
2364                'a,
2365            > as alloy_sol_types::SolType>::Token<'a>;
2366            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2367            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2368                '_,
2369            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2370            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2371                '_,
2372            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2373            #[inline]
2374            fn valid_token(token: &Self::Token<'_>) -> bool {
2375                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2376            }
2377            #[inline]
2378            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2379                let tuple = <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::detokenize(token);
2382                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2383            }
2384        }
2385        #[automatically_derived]
2386        impl alloy_sol_types::SolStruct for LightClientState {
2387            const NAME: &'static str = "LightClientState";
2388            #[inline]
2389            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2390                alloy_sol_types::private::Cow::Borrowed(
2391                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2392                )
2393            }
2394            #[inline]
2395            fn eip712_components() -> alloy_sol_types::private::Vec<
2396                alloy_sol_types::private::Cow<'static, str>,
2397            > {
2398                alloy_sol_types::private::Vec::new()
2399            }
2400            #[inline]
2401            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2402                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2403            }
2404            #[inline]
2405            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2406                [
2407                    <alloy::sol_types::sol_data::Uint<
2408                        64,
2409                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2410                        .0,
2411                    <alloy::sol_types::sol_data::Uint<
2412                        64,
2413                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2414                        .0,
2415                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2416                            &self.blockCommRoot,
2417                        )
2418                        .0,
2419                ]
2420                    .concat()
2421            }
2422        }
2423        #[automatically_derived]
2424        impl alloy_sol_types::EventTopic for LightClientState {
2425            #[inline]
2426            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2427                0usize
2428                    + <alloy::sol_types::sol_data::Uint<
2429                        64,
2430                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2431                        &rust.viewNum,
2432                    )
2433                    + <alloy::sol_types::sol_data::Uint<
2434                        64,
2435                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2436                        &rust.blockHeight,
2437                    )
2438                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2439                        &rust.blockCommRoot,
2440                    )
2441            }
2442            #[inline]
2443            fn encode_topic_preimage(
2444                rust: &Self::RustType,
2445                out: &mut alloy_sol_types::private::Vec<u8>,
2446            ) {
2447                out.reserve(
2448                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2449                );
2450                <alloy::sol_types::sol_data::Uint<
2451                    64,
2452                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2453                    &rust.viewNum,
2454                    out,
2455                );
2456                <alloy::sol_types::sol_data::Uint<
2457                    64,
2458                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2459                    &rust.blockHeight,
2460                    out,
2461                );
2462                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2463                    &rust.blockCommRoot,
2464                    out,
2465                );
2466            }
2467            #[inline]
2468            fn encode_topic(
2469                rust: &Self::RustType,
2470            ) -> alloy_sol_types::abi::token::WordToken {
2471                let mut out = alloy_sol_types::private::Vec::new();
2472                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    rust,
2474                    &mut out,
2475                );
2476                alloy_sol_types::abi::token::WordToken(
2477                    alloy_sol_types::private::keccak256(out),
2478                )
2479            }
2480        }
2481    };
2482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2483    /**```solidity
2484struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2485```*/
2486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2487    #[derive(Clone)]
2488    pub struct StakeTableState {
2489        #[allow(missing_docs)]
2490        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2491        #[allow(missing_docs)]
2492        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2493        #[allow(missing_docs)]
2494        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2495        #[allow(missing_docs)]
2496        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2497    }
2498    #[allow(
2499        non_camel_case_types,
2500        non_snake_case,
2501        clippy::pub_underscore_fields,
2502        clippy::style
2503    )]
2504    const _: () = {
2505        use alloy::sol_types as alloy_sol_types;
2506        #[doc(hidden)]
2507        type UnderlyingSolTuple<'a> = (
2508            alloy::sol_types::sol_data::Uint<256>,
2509            BN254::ScalarField,
2510            BN254::ScalarField,
2511            BN254::ScalarField,
2512        );
2513        #[doc(hidden)]
2514        type UnderlyingRustTuple<'a> = (
2515            alloy::sol_types::private::primitives::aliases::U256,
2516            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        );
2520        #[cfg(test)]
2521        #[allow(dead_code, unreachable_patterns)]
2522        fn _type_assertion(
2523            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2524        ) {
2525            match _t {
2526                alloy_sol_types::private::AssertTypeEq::<
2527                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2528                >(_) => {}
2529            }
2530        }
2531        #[automatically_derived]
2532        #[doc(hidden)]
2533        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2534            fn from(value: StakeTableState) -> Self {
2535                (
2536                    value.threshold,
2537                    value.blsKeyComm,
2538                    value.schnorrKeyComm,
2539                    value.amountComm,
2540                )
2541            }
2542        }
2543        #[automatically_derived]
2544        #[doc(hidden)]
2545        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2546            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2547                Self {
2548                    threshold: tuple.0,
2549                    blsKeyComm: tuple.1,
2550                    schnorrKeyComm: tuple.2,
2551                    amountComm: tuple.3,
2552                }
2553            }
2554        }
2555        #[automatically_derived]
2556        impl alloy_sol_types::SolValue for StakeTableState {
2557            type SolType = Self;
2558        }
2559        #[automatically_derived]
2560        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2561            #[inline]
2562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2563                (
2564                    <alloy::sol_types::sol_data::Uint<
2565                        256,
2566                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2567                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2568                        &self.blsKeyComm,
2569                    ),
2570                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2571                        &self.schnorrKeyComm,
2572                    ),
2573                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2574                        &self.amountComm,
2575                    ),
2576                )
2577            }
2578            #[inline]
2579            fn stv_abi_encoded_size(&self) -> usize {
2580                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2581                    return size;
2582                }
2583                let tuple = <UnderlyingRustTuple<
2584                    '_,
2585                > as ::core::convert::From<Self>>::from(self.clone());
2586                <UnderlyingSolTuple<
2587                    '_,
2588                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2589            }
2590            #[inline]
2591            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2592                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2593            }
2594            #[inline]
2595            fn stv_abi_encode_packed_to(
2596                &self,
2597                out: &mut alloy_sol_types::private::Vec<u8>,
2598            ) {
2599                let tuple = <UnderlyingRustTuple<
2600                    '_,
2601                > as ::core::convert::From<Self>>::from(self.clone());
2602                <UnderlyingSolTuple<
2603                    '_,
2604                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2605            }
2606            #[inline]
2607            fn stv_abi_packed_encoded_size(&self) -> usize {
2608                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2609                    return size;
2610                }
2611                let tuple = <UnderlyingRustTuple<
2612                    '_,
2613                > as ::core::convert::From<Self>>::from(self.clone());
2614                <UnderlyingSolTuple<
2615                    '_,
2616                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2617            }
2618        }
2619        #[automatically_derived]
2620        impl alloy_sol_types::SolType for StakeTableState {
2621            type RustType = Self;
2622            type Token<'a> = <UnderlyingSolTuple<
2623                'a,
2624            > as alloy_sol_types::SolType>::Token<'a>;
2625            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2626            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2627                '_,
2628            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2629            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2630                '_,
2631            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2632            #[inline]
2633            fn valid_token(token: &Self::Token<'_>) -> bool {
2634                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2635            }
2636            #[inline]
2637            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2638                let tuple = <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::detokenize(token);
2641                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolStruct for StakeTableState {
2646            const NAME: &'static str = "StakeTableState";
2647            #[inline]
2648            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2649                alloy_sol_types::private::Cow::Borrowed(
2650                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2651                )
2652            }
2653            #[inline]
2654            fn eip712_components() -> alloy_sol_types::private::Vec<
2655                alloy_sol_types::private::Cow<'static, str>,
2656            > {
2657                alloy_sol_types::private::Vec::new()
2658            }
2659            #[inline]
2660            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2661                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2662            }
2663            #[inline]
2664            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2665                [
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2669                        .0,
2670                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2671                            &self.blsKeyComm,
2672                        )
2673                        .0,
2674                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2675                            &self.schnorrKeyComm,
2676                        )
2677                        .0,
2678                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2679                            &self.amountComm,
2680                        )
2681                        .0,
2682                ]
2683                    .concat()
2684            }
2685        }
2686        #[automatically_derived]
2687        impl alloy_sol_types::EventTopic for StakeTableState {
2688            #[inline]
2689            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2690                0usize
2691                    + <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2694                        &rust.threshold,
2695                    )
2696                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2697                        &rust.blsKeyComm,
2698                    )
2699                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2700                        &rust.schnorrKeyComm,
2701                    )
2702                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2703                        &rust.amountComm,
2704                    )
2705            }
2706            #[inline]
2707            fn encode_topic_preimage(
2708                rust: &Self::RustType,
2709                out: &mut alloy_sol_types::private::Vec<u8>,
2710            ) {
2711                out.reserve(
2712                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2713                );
2714                <alloy::sol_types::sol_data::Uint<
2715                    256,
2716                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2717                    &rust.threshold,
2718                    out,
2719                );
2720                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2721                    &rust.blsKeyComm,
2722                    out,
2723                );
2724                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2725                    &rust.schnorrKeyComm,
2726                    out,
2727                );
2728                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2729                    &rust.amountComm,
2730                    out,
2731                );
2732            }
2733            #[inline]
2734            fn encode_topic(
2735                rust: &Self::RustType,
2736            ) -> alloy_sol_types::abi::token::WordToken {
2737                let mut out = alloy_sol_types::private::Vec::new();
2738                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    rust,
2740                    &mut out,
2741                );
2742                alloy_sol_types::abi::token::WordToken(
2743                    alloy_sol_types::private::keccak256(out),
2744                )
2745            }
2746        }
2747    };
2748    use alloy::contract as alloy_contract;
2749    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2750
2751See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2752    #[inline]
2753    pub const fn new<
2754        T: alloy_contract::private::Transport + ::core::clone::Clone,
2755        P: alloy_contract::private::Provider<T, N>,
2756        N: alloy_contract::private::Network,
2757    >(
2758        address: alloy_sol_types::private::Address,
2759        provider: P,
2760    ) -> LightClientInstance<T, P, N> {
2761        LightClientInstance::<T, P, N>::new(address, provider)
2762    }
2763    /**A [`LightClient`](self) instance.
2764
2765Contains type-safe methods for interacting with an on-chain instance of the
2766[`LightClient`](self) contract located at a given `address`, using a given
2767provider `P`.
2768
2769If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2770documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2771be used to deploy a new instance of the contract.
2772
2773See the [module-level documentation](self) for all the available methods.*/
2774    #[derive(Clone)]
2775    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2776        address: alloy_sol_types::private::Address,
2777        provider: P,
2778        _network_transport: ::core::marker::PhantomData<(N, T)>,
2779    }
2780    #[automatically_derived]
2781    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2782        #[inline]
2783        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2784            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2785        }
2786    }
2787    /// Instantiation and getters/setters.
2788    #[automatically_derived]
2789    impl<
2790        T: alloy_contract::private::Transport + ::core::clone::Clone,
2791        P: alloy_contract::private::Provider<T, N>,
2792        N: alloy_contract::private::Network,
2793    > LightClientInstance<T, P, N> {
2794        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2795
2796See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2797        #[inline]
2798        pub const fn new(
2799            address: alloy_sol_types::private::Address,
2800            provider: P,
2801        ) -> Self {
2802            Self {
2803                address,
2804                provider,
2805                _network_transport: ::core::marker::PhantomData,
2806            }
2807        }
2808        /// Returns a reference to the address.
2809        #[inline]
2810        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2811            &self.address
2812        }
2813        /// Sets the address.
2814        #[inline]
2815        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2816            self.address = address;
2817        }
2818        /// Sets the address and returns `self`.
2819        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2820            self.set_address(address);
2821            self
2822        }
2823        /// Returns a reference to the provider.
2824        #[inline]
2825        pub const fn provider(&self) -> &P {
2826            &self.provider
2827        }
2828    }
2829    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2830        /// Clones the provider and returns a new instance with the cloned provider.
2831        #[inline]
2832        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2833            LightClientInstance {
2834                address: self.address,
2835                provider: ::core::clone::Clone::clone(&self.provider),
2836                _network_transport: ::core::marker::PhantomData,
2837            }
2838        }
2839    }
2840    /// Function calls.
2841    #[automatically_derived]
2842    impl<
2843        T: alloy_contract::private::Transport + ::core::clone::Clone,
2844        P: alloy_contract::private::Provider<T, N>,
2845        N: alloy_contract::private::Network,
2846    > LightClientInstance<T, P, N> {
2847        /// Creates a new call builder using this contract instance's provider and address.
2848        ///
2849        /// Note that the call can be any function call, not just those defined in this
2850        /// contract. Prefer using the other methods for building type-safe contract calls.
2851        pub fn call_builder<C: alloy_sol_types::SolCall>(
2852            &self,
2853            call: &C,
2854        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2855            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2856        }
2857    }
2858    /// Event filters.
2859    #[automatically_derived]
2860    impl<
2861        T: alloy_contract::private::Transport + ::core::clone::Clone,
2862        P: alloy_contract::private::Provider<T, N>,
2863        N: alloy_contract::private::Network,
2864    > LightClientInstance<T, P, N> {
2865        /// Creates a new event filter using this contract instance's provider and address.
2866        ///
2867        /// Note that the type can be any event, not just those defined in this contract.
2868        /// Prefer using the other methods for building type-safe event filters.
2869        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2870            &self,
2871        ) -> alloy_contract::Event<T, &P, E, N> {
2872            alloy_contract::Event::new_sol(&self.provider, &self.address)
2873        }
2874    }
2875}
2876/**
2877
2878Generated by the following Solidity interface...
2879```solidity
2880library BN254 {
2881    type BaseField is uint256;
2882    type ScalarField is uint256;
2883    struct G1Point {
2884        BaseField x;
2885        BaseField y;
2886    }
2887}
2888
2889library IPlonkVerifier {
2890    struct PlonkProof {
2891        BN254.G1Point wire0;
2892        BN254.G1Point wire1;
2893        BN254.G1Point wire2;
2894        BN254.G1Point wire3;
2895        BN254.G1Point wire4;
2896        BN254.G1Point prodPerm;
2897        BN254.G1Point split0;
2898        BN254.G1Point split1;
2899        BN254.G1Point split2;
2900        BN254.G1Point split3;
2901        BN254.G1Point split4;
2902        BN254.G1Point zeta;
2903        BN254.G1Point zetaOmega;
2904        BN254.ScalarField wireEval0;
2905        BN254.ScalarField wireEval1;
2906        BN254.ScalarField wireEval2;
2907        BN254.ScalarField wireEval3;
2908        BN254.ScalarField wireEval4;
2909        BN254.ScalarField sigmaEval0;
2910        BN254.ScalarField sigmaEval1;
2911        BN254.ScalarField sigmaEval2;
2912        BN254.ScalarField sigmaEval3;
2913        BN254.ScalarField prodPermZetaOmegaEval;
2914    }
2915    struct VerifyingKey {
2916        uint256 domainSize;
2917        uint256 numInputs;
2918        BN254.G1Point sigma0;
2919        BN254.G1Point sigma1;
2920        BN254.G1Point sigma2;
2921        BN254.G1Point sigma3;
2922        BN254.G1Point sigma4;
2923        BN254.G1Point q1;
2924        BN254.G1Point q2;
2925        BN254.G1Point q3;
2926        BN254.G1Point q4;
2927        BN254.G1Point qM12;
2928        BN254.G1Point qM34;
2929        BN254.G1Point qO;
2930        BN254.G1Point qC;
2931        BN254.G1Point qH1;
2932        BN254.G1Point qH2;
2933        BN254.G1Point qH3;
2934        BN254.G1Point qH4;
2935        BN254.G1Point qEcc;
2936        bytes32 g2LSB;
2937        bytes32 g2MSB;
2938    }
2939}
2940
2941library LightClient {
2942    struct LightClientState {
2943        uint64 viewNum;
2944        uint64 blockHeight;
2945        BN254.ScalarField blockCommRoot;
2946    }
2947    struct StakeTableState {
2948        uint256 threshold;
2949        BN254.ScalarField blsKeyComm;
2950        BN254.ScalarField schnorrKeyComm;
2951        BN254.ScalarField amountComm;
2952    }
2953}
2954
2955interface LightClientArbitrum {
2956    error AddressEmptyCode(address target);
2957    error ERC1967InvalidImplementation(address implementation);
2958    error ERC1967NonPayable();
2959    error FailedInnerCall();
2960    error InsufficientSnapshotHistory();
2961    error InvalidAddress();
2962    error InvalidArgs();
2963    error InvalidHotShotBlockForCommitmentCheck();
2964    error InvalidInitialization();
2965    error InvalidMaxStateHistory();
2966    error InvalidProof();
2967    error NoChangeRequired();
2968    error NotInitializing();
2969    error OutdatedState();
2970    error OwnableInvalidOwner(address owner);
2971    error OwnableUnauthorizedAccount(address account);
2972    error ProverNotPermissioned();
2973    error UUPSUnauthorizedCallContext();
2974    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2975    error WrongStakeTableUsed();
2976
2977    event Initialized(uint64 version);
2978    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2979    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2980    event PermissionedProverNotRequired();
2981    event PermissionedProverRequired(address permissionedProver);
2982    event Upgrade(address implementation);
2983    event Upgraded(address indexed implementation);
2984
2985    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2986    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2987    function currentBlockNumber() external view returns (uint256);
2988    function disablePermissionedProverMode() external;
2989    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2990    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2991    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2992    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2993    function getStateHistoryCount() external view returns (uint256);
2994    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2995    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2996    function isPermissionedProverEnabled() external view returns (bool);
2997    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2998    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2999    function owner() external view returns (address);
3000    function permissionedProver() external view returns (address);
3001    function proxiableUUID() external view returns (bytes32);
3002    function renounceOwnership() external;
3003    function setPermissionedProver(address prover) external;
3004    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3005    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3006    function stateHistoryFirstIndex() external view returns (uint64);
3007    function stateHistoryRetentionPeriod() external view returns (uint32);
3008    function transferOwnership(address newOwner) external;
3009    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3010}
3011```
3012
3013...which was generated by the following JSON ABI:
3014```json
3015[
3016  {
3017    "type": "function",
3018    "name": "UPGRADE_INTERFACE_VERSION",
3019    "inputs": [],
3020    "outputs": [
3021      {
3022        "name": "",
3023        "type": "string",
3024        "internalType": "string"
3025      }
3026    ],
3027    "stateMutability": "view"
3028  },
3029  {
3030    "type": "function",
3031    "name": "_getVk",
3032    "inputs": [],
3033    "outputs": [
3034      {
3035        "name": "vk",
3036        "type": "tuple",
3037        "internalType": "struct IPlonkVerifier.VerifyingKey",
3038        "components": [
3039          {
3040            "name": "domainSize",
3041            "type": "uint256",
3042            "internalType": "uint256"
3043          },
3044          {
3045            "name": "numInputs",
3046            "type": "uint256",
3047            "internalType": "uint256"
3048          },
3049          {
3050            "name": "sigma0",
3051            "type": "tuple",
3052            "internalType": "struct BN254.G1Point",
3053            "components": [
3054              {
3055                "name": "x",
3056                "type": "uint256",
3057                "internalType": "BN254.BaseField"
3058              },
3059              {
3060                "name": "y",
3061                "type": "uint256",
3062                "internalType": "BN254.BaseField"
3063              }
3064            ]
3065          },
3066          {
3067            "name": "sigma1",
3068            "type": "tuple",
3069            "internalType": "struct BN254.G1Point",
3070            "components": [
3071              {
3072                "name": "x",
3073                "type": "uint256",
3074                "internalType": "BN254.BaseField"
3075              },
3076              {
3077                "name": "y",
3078                "type": "uint256",
3079                "internalType": "BN254.BaseField"
3080              }
3081            ]
3082          },
3083          {
3084            "name": "sigma2",
3085            "type": "tuple",
3086            "internalType": "struct BN254.G1Point",
3087            "components": [
3088              {
3089                "name": "x",
3090                "type": "uint256",
3091                "internalType": "BN254.BaseField"
3092              },
3093              {
3094                "name": "y",
3095                "type": "uint256",
3096                "internalType": "BN254.BaseField"
3097              }
3098            ]
3099          },
3100          {
3101            "name": "sigma3",
3102            "type": "tuple",
3103            "internalType": "struct BN254.G1Point",
3104            "components": [
3105              {
3106                "name": "x",
3107                "type": "uint256",
3108                "internalType": "BN254.BaseField"
3109              },
3110              {
3111                "name": "y",
3112                "type": "uint256",
3113                "internalType": "BN254.BaseField"
3114              }
3115            ]
3116          },
3117          {
3118            "name": "sigma4",
3119            "type": "tuple",
3120            "internalType": "struct BN254.G1Point",
3121            "components": [
3122              {
3123                "name": "x",
3124                "type": "uint256",
3125                "internalType": "BN254.BaseField"
3126              },
3127              {
3128                "name": "y",
3129                "type": "uint256",
3130                "internalType": "BN254.BaseField"
3131              }
3132            ]
3133          },
3134          {
3135            "name": "q1",
3136            "type": "tuple",
3137            "internalType": "struct BN254.G1Point",
3138            "components": [
3139              {
3140                "name": "x",
3141                "type": "uint256",
3142                "internalType": "BN254.BaseField"
3143              },
3144              {
3145                "name": "y",
3146                "type": "uint256",
3147                "internalType": "BN254.BaseField"
3148              }
3149            ]
3150          },
3151          {
3152            "name": "q2",
3153            "type": "tuple",
3154            "internalType": "struct BN254.G1Point",
3155            "components": [
3156              {
3157                "name": "x",
3158                "type": "uint256",
3159                "internalType": "BN254.BaseField"
3160              },
3161              {
3162                "name": "y",
3163                "type": "uint256",
3164                "internalType": "BN254.BaseField"
3165              }
3166            ]
3167          },
3168          {
3169            "name": "q3",
3170            "type": "tuple",
3171            "internalType": "struct BN254.G1Point",
3172            "components": [
3173              {
3174                "name": "x",
3175                "type": "uint256",
3176                "internalType": "BN254.BaseField"
3177              },
3178              {
3179                "name": "y",
3180                "type": "uint256",
3181                "internalType": "BN254.BaseField"
3182              }
3183            ]
3184          },
3185          {
3186            "name": "q4",
3187            "type": "tuple",
3188            "internalType": "struct BN254.G1Point",
3189            "components": [
3190              {
3191                "name": "x",
3192                "type": "uint256",
3193                "internalType": "BN254.BaseField"
3194              },
3195              {
3196                "name": "y",
3197                "type": "uint256",
3198                "internalType": "BN254.BaseField"
3199              }
3200            ]
3201          },
3202          {
3203            "name": "qM12",
3204            "type": "tuple",
3205            "internalType": "struct BN254.G1Point",
3206            "components": [
3207              {
3208                "name": "x",
3209                "type": "uint256",
3210                "internalType": "BN254.BaseField"
3211              },
3212              {
3213                "name": "y",
3214                "type": "uint256",
3215                "internalType": "BN254.BaseField"
3216              }
3217            ]
3218          },
3219          {
3220            "name": "qM34",
3221            "type": "tuple",
3222            "internalType": "struct BN254.G1Point",
3223            "components": [
3224              {
3225                "name": "x",
3226                "type": "uint256",
3227                "internalType": "BN254.BaseField"
3228              },
3229              {
3230                "name": "y",
3231                "type": "uint256",
3232                "internalType": "BN254.BaseField"
3233              }
3234            ]
3235          },
3236          {
3237            "name": "qO",
3238            "type": "tuple",
3239            "internalType": "struct BN254.G1Point",
3240            "components": [
3241              {
3242                "name": "x",
3243                "type": "uint256",
3244                "internalType": "BN254.BaseField"
3245              },
3246              {
3247                "name": "y",
3248                "type": "uint256",
3249                "internalType": "BN254.BaseField"
3250              }
3251            ]
3252          },
3253          {
3254            "name": "qC",
3255            "type": "tuple",
3256            "internalType": "struct BN254.G1Point",
3257            "components": [
3258              {
3259                "name": "x",
3260                "type": "uint256",
3261                "internalType": "BN254.BaseField"
3262              },
3263              {
3264                "name": "y",
3265                "type": "uint256",
3266                "internalType": "BN254.BaseField"
3267              }
3268            ]
3269          },
3270          {
3271            "name": "qH1",
3272            "type": "tuple",
3273            "internalType": "struct BN254.G1Point",
3274            "components": [
3275              {
3276                "name": "x",
3277                "type": "uint256",
3278                "internalType": "BN254.BaseField"
3279              },
3280              {
3281                "name": "y",
3282                "type": "uint256",
3283                "internalType": "BN254.BaseField"
3284              }
3285            ]
3286          },
3287          {
3288            "name": "qH2",
3289            "type": "tuple",
3290            "internalType": "struct BN254.G1Point",
3291            "components": [
3292              {
3293                "name": "x",
3294                "type": "uint256",
3295                "internalType": "BN254.BaseField"
3296              },
3297              {
3298                "name": "y",
3299                "type": "uint256",
3300                "internalType": "BN254.BaseField"
3301              }
3302            ]
3303          },
3304          {
3305            "name": "qH3",
3306            "type": "tuple",
3307            "internalType": "struct BN254.G1Point",
3308            "components": [
3309              {
3310                "name": "x",
3311                "type": "uint256",
3312                "internalType": "BN254.BaseField"
3313              },
3314              {
3315                "name": "y",
3316                "type": "uint256",
3317                "internalType": "BN254.BaseField"
3318              }
3319            ]
3320          },
3321          {
3322            "name": "qH4",
3323            "type": "tuple",
3324            "internalType": "struct BN254.G1Point",
3325            "components": [
3326              {
3327                "name": "x",
3328                "type": "uint256",
3329                "internalType": "BN254.BaseField"
3330              },
3331              {
3332                "name": "y",
3333                "type": "uint256",
3334                "internalType": "BN254.BaseField"
3335              }
3336            ]
3337          },
3338          {
3339            "name": "qEcc",
3340            "type": "tuple",
3341            "internalType": "struct BN254.G1Point",
3342            "components": [
3343              {
3344                "name": "x",
3345                "type": "uint256",
3346                "internalType": "BN254.BaseField"
3347              },
3348              {
3349                "name": "y",
3350                "type": "uint256",
3351                "internalType": "BN254.BaseField"
3352              }
3353            ]
3354          },
3355          {
3356            "name": "g2LSB",
3357            "type": "bytes32",
3358            "internalType": "bytes32"
3359          },
3360          {
3361            "name": "g2MSB",
3362            "type": "bytes32",
3363            "internalType": "bytes32"
3364          }
3365        ]
3366      }
3367    ],
3368    "stateMutability": "pure"
3369  },
3370  {
3371    "type": "function",
3372    "name": "currentBlockNumber",
3373    "inputs": [],
3374    "outputs": [
3375      {
3376        "name": "",
3377        "type": "uint256",
3378        "internalType": "uint256"
3379      }
3380    ],
3381    "stateMutability": "view"
3382  },
3383  {
3384    "type": "function",
3385    "name": "disablePermissionedProverMode",
3386    "inputs": [],
3387    "outputs": [],
3388    "stateMutability": "nonpayable"
3389  },
3390  {
3391    "type": "function",
3392    "name": "finalizedState",
3393    "inputs": [],
3394    "outputs": [
3395      {
3396        "name": "viewNum",
3397        "type": "uint64",
3398        "internalType": "uint64"
3399      },
3400      {
3401        "name": "blockHeight",
3402        "type": "uint64",
3403        "internalType": "uint64"
3404      },
3405      {
3406        "name": "blockCommRoot",
3407        "type": "uint256",
3408        "internalType": "BN254.ScalarField"
3409      }
3410    ],
3411    "stateMutability": "view"
3412  },
3413  {
3414    "type": "function",
3415    "name": "genesisStakeTableState",
3416    "inputs": [],
3417    "outputs": [
3418      {
3419        "name": "threshold",
3420        "type": "uint256",
3421        "internalType": "uint256"
3422      },
3423      {
3424        "name": "blsKeyComm",
3425        "type": "uint256",
3426        "internalType": "BN254.ScalarField"
3427      },
3428      {
3429        "name": "schnorrKeyComm",
3430        "type": "uint256",
3431        "internalType": "BN254.ScalarField"
3432      },
3433      {
3434        "name": "amountComm",
3435        "type": "uint256",
3436        "internalType": "BN254.ScalarField"
3437      }
3438    ],
3439    "stateMutability": "view"
3440  },
3441  {
3442    "type": "function",
3443    "name": "genesisState",
3444    "inputs": [],
3445    "outputs": [
3446      {
3447        "name": "viewNum",
3448        "type": "uint64",
3449        "internalType": "uint64"
3450      },
3451      {
3452        "name": "blockHeight",
3453        "type": "uint64",
3454        "internalType": "uint64"
3455      },
3456      {
3457        "name": "blockCommRoot",
3458        "type": "uint256",
3459        "internalType": "BN254.ScalarField"
3460      }
3461    ],
3462    "stateMutability": "view"
3463  },
3464  {
3465    "type": "function",
3466    "name": "getHotShotCommitment",
3467    "inputs": [
3468      {
3469        "name": "hotShotBlockHeight",
3470        "type": "uint256",
3471        "internalType": "uint256"
3472      }
3473    ],
3474    "outputs": [
3475      {
3476        "name": "hotShotBlockCommRoot",
3477        "type": "uint256",
3478        "internalType": "BN254.ScalarField"
3479      },
3480      {
3481        "name": "hotshotBlockHeight",
3482        "type": "uint64",
3483        "internalType": "uint64"
3484      }
3485    ],
3486    "stateMutability": "view"
3487  },
3488  {
3489    "type": "function",
3490    "name": "getStateHistoryCount",
3491    "inputs": [],
3492    "outputs": [
3493      {
3494        "name": "",
3495        "type": "uint256",
3496        "internalType": "uint256"
3497      }
3498    ],
3499    "stateMutability": "view"
3500  },
3501  {
3502    "type": "function",
3503    "name": "getVersion",
3504    "inputs": [],
3505    "outputs": [
3506      {
3507        "name": "majorVersion",
3508        "type": "uint8",
3509        "internalType": "uint8"
3510      },
3511      {
3512        "name": "minorVersion",
3513        "type": "uint8",
3514        "internalType": "uint8"
3515      },
3516      {
3517        "name": "patchVersion",
3518        "type": "uint8",
3519        "internalType": "uint8"
3520      }
3521    ],
3522    "stateMutability": "pure"
3523  },
3524  {
3525    "type": "function",
3526    "name": "initialize",
3527    "inputs": [
3528      {
3529        "name": "_genesis",
3530        "type": "tuple",
3531        "internalType": "struct LightClient.LightClientState",
3532        "components": [
3533          {
3534            "name": "viewNum",
3535            "type": "uint64",
3536            "internalType": "uint64"
3537          },
3538          {
3539            "name": "blockHeight",
3540            "type": "uint64",
3541            "internalType": "uint64"
3542          },
3543          {
3544            "name": "blockCommRoot",
3545            "type": "uint256",
3546            "internalType": "BN254.ScalarField"
3547          }
3548        ]
3549      },
3550      {
3551        "name": "_genesisStakeTableState",
3552        "type": "tuple",
3553        "internalType": "struct LightClient.StakeTableState",
3554        "components": [
3555          {
3556            "name": "threshold",
3557            "type": "uint256",
3558            "internalType": "uint256"
3559          },
3560          {
3561            "name": "blsKeyComm",
3562            "type": "uint256",
3563            "internalType": "BN254.ScalarField"
3564          },
3565          {
3566            "name": "schnorrKeyComm",
3567            "type": "uint256",
3568            "internalType": "BN254.ScalarField"
3569          },
3570          {
3571            "name": "amountComm",
3572            "type": "uint256",
3573            "internalType": "BN254.ScalarField"
3574          }
3575        ]
3576      },
3577      {
3578        "name": "_stateHistoryRetentionPeriod",
3579        "type": "uint32",
3580        "internalType": "uint32"
3581      },
3582      {
3583        "name": "owner",
3584        "type": "address",
3585        "internalType": "address"
3586      }
3587    ],
3588    "outputs": [],
3589    "stateMutability": "nonpayable"
3590  },
3591  {
3592    "type": "function",
3593    "name": "isPermissionedProverEnabled",
3594    "inputs": [],
3595    "outputs": [
3596      {
3597        "name": "",
3598        "type": "bool",
3599        "internalType": "bool"
3600      }
3601    ],
3602    "stateMutability": "view"
3603  },
3604  {
3605    "type": "function",
3606    "name": "lagOverEscapeHatchThreshold",
3607    "inputs": [
3608      {
3609        "name": "blockNumber",
3610        "type": "uint256",
3611        "internalType": "uint256"
3612      },
3613      {
3614        "name": "blockThreshold",
3615        "type": "uint256",
3616        "internalType": "uint256"
3617      }
3618    ],
3619    "outputs": [
3620      {
3621        "name": "",
3622        "type": "bool",
3623        "internalType": "bool"
3624      }
3625    ],
3626    "stateMutability": "view"
3627  },
3628  {
3629    "type": "function",
3630    "name": "newFinalizedState",
3631    "inputs": [
3632      {
3633        "name": "newState",
3634        "type": "tuple",
3635        "internalType": "struct LightClient.LightClientState",
3636        "components": [
3637          {
3638            "name": "viewNum",
3639            "type": "uint64",
3640            "internalType": "uint64"
3641          },
3642          {
3643            "name": "blockHeight",
3644            "type": "uint64",
3645            "internalType": "uint64"
3646          },
3647          {
3648            "name": "blockCommRoot",
3649            "type": "uint256",
3650            "internalType": "BN254.ScalarField"
3651          }
3652        ]
3653      },
3654      {
3655        "name": "proof",
3656        "type": "tuple",
3657        "internalType": "struct IPlonkVerifier.PlonkProof",
3658        "components": [
3659          {
3660            "name": "wire0",
3661            "type": "tuple",
3662            "internalType": "struct BN254.G1Point",
3663            "components": [
3664              {
3665                "name": "x",
3666                "type": "uint256",
3667                "internalType": "BN254.BaseField"
3668              },
3669              {
3670                "name": "y",
3671                "type": "uint256",
3672                "internalType": "BN254.BaseField"
3673              }
3674            ]
3675          },
3676          {
3677            "name": "wire1",
3678            "type": "tuple",
3679            "internalType": "struct BN254.G1Point",
3680            "components": [
3681              {
3682                "name": "x",
3683                "type": "uint256",
3684                "internalType": "BN254.BaseField"
3685              },
3686              {
3687                "name": "y",
3688                "type": "uint256",
3689                "internalType": "BN254.BaseField"
3690              }
3691            ]
3692          },
3693          {
3694            "name": "wire2",
3695            "type": "tuple",
3696            "internalType": "struct BN254.G1Point",
3697            "components": [
3698              {
3699                "name": "x",
3700                "type": "uint256",
3701                "internalType": "BN254.BaseField"
3702              },
3703              {
3704                "name": "y",
3705                "type": "uint256",
3706                "internalType": "BN254.BaseField"
3707              }
3708            ]
3709          },
3710          {
3711            "name": "wire3",
3712            "type": "tuple",
3713            "internalType": "struct BN254.G1Point",
3714            "components": [
3715              {
3716                "name": "x",
3717                "type": "uint256",
3718                "internalType": "BN254.BaseField"
3719              },
3720              {
3721                "name": "y",
3722                "type": "uint256",
3723                "internalType": "BN254.BaseField"
3724              }
3725            ]
3726          },
3727          {
3728            "name": "wire4",
3729            "type": "tuple",
3730            "internalType": "struct BN254.G1Point",
3731            "components": [
3732              {
3733                "name": "x",
3734                "type": "uint256",
3735                "internalType": "BN254.BaseField"
3736              },
3737              {
3738                "name": "y",
3739                "type": "uint256",
3740                "internalType": "BN254.BaseField"
3741              }
3742            ]
3743          },
3744          {
3745            "name": "prodPerm",
3746            "type": "tuple",
3747            "internalType": "struct BN254.G1Point",
3748            "components": [
3749              {
3750                "name": "x",
3751                "type": "uint256",
3752                "internalType": "BN254.BaseField"
3753              },
3754              {
3755                "name": "y",
3756                "type": "uint256",
3757                "internalType": "BN254.BaseField"
3758              }
3759            ]
3760          },
3761          {
3762            "name": "split0",
3763            "type": "tuple",
3764            "internalType": "struct BN254.G1Point",
3765            "components": [
3766              {
3767                "name": "x",
3768                "type": "uint256",
3769                "internalType": "BN254.BaseField"
3770              },
3771              {
3772                "name": "y",
3773                "type": "uint256",
3774                "internalType": "BN254.BaseField"
3775              }
3776            ]
3777          },
3778          {
3779            "name": "split1",
3780            "type": "tuple",
3781            "internalType": "struct BN254.G1Point",
3782            "components": [
3783              {
3784                "name": "x",
3785                "type": "uint256",
3786                "internalType": "BN254.BaseField"
3787              },
3788              {
3789                "name": "y",
3790                "type": "uint256",
3791                "internalType": "BN254.BaseField"
3792              }
3793            ]
3794          },
3795          {
3796            "name": "split2",
3797            "type": "tuple",
3798            "internalType": "struct BN254.G1Point",
3799            "components": [
3800              {
3801                "name": "x",
3802                "type": "uint256",
3803                "internalType": "BN254.BaseField"
3804              },
3805              {
3806                "name": "y",
3807                "type": "uint256",
3808                "internalType": "BN254.BaseField"
3809              }
3810            ]
3811          },
3812          {
3813            "name": "split3",
3814            "type": "tuple",
3815            "internalType": "struct BN254.G1Point",
3816            "components": [
3817              {
3818                "name": "x",
3819                "type": "uint256",
3820                "internalType": "BN254.BaseField"
3821              },
3822              {
3823                "name": "y",
3824                "type": "uint256",
3825                "internalType": "BN254.BaseField"
3826              }
3827            ]
3828          },
3829          {
3830            "name": "split4",
3831            "type": "tuple",
3832            "internalType": "struct BN254.G1Point",
3833            "components": [
3834              {
3835                "name": "x",
3836                "type": "uint256",
3837                "internalType": "BN254.BaseField"
3838              },
3839              {
3840                "name": "y",
3841                "type": "uint256",
3842                "internalType": "BN254.BaseField"
3843              }
3844            ]
3845          },
3846          {
3847            "name": "zeta",
3848            "type": "tuple",
3849            "internalType": "struct BN254.G1Point",
3850            "components": [
3851              {
3852                "name": "x",
3853                "type": "uint256",
3854                "internalType": "BN254.BaseField"
3855              },
3856              {
3857                "name": "y",
3858                "type": "uint256",
3859                "internalType": "BN254.BaseField"
3860              }
3861            ]
3862          },
3863          {
3864            "name": "zetaOmega",
3865            "type": "tuple",
3866            "internalType": "struct BN254.G1Point",
3867            "components": [
3868              {
3869                "name": "x",
3870                "type": "uint256",
3871                "internalType": "BN254.BaseField"
3872              },
3873              {
3874                "name": "y",
3875                "type": "uint256",
3876                "internalType": "BN254.BaseField"
3877              }
3878            ]
3879          },
3880          {
3881            "name": "wireEval0",
3882            "type": "uint256",
3883            "internalType": "BN254.ScalarField"
3884          },
3885          {
3886            "name": "wireEval1",
3887            "type": "uint256",
3888            "internalType": "BN254.ScalarField"
3889          },
3890          {
3891            "name": "wireEval2",
3892            "type": "uint256",
3893            "internalType": "BN254.ScalarField"
3894          },
3895          {
3896            "name": "wireEval3",
3897            "type": "uint256",
3898            "internalType": "BN254.ScalarField"
3899          },
3900          {
3901            "name": "wireEval4",
3902            "type": "uint256",
3903            "internalType": "BN254.ScalarField"
3904          },
3905          {
3906            "name": "sigmaEval0",
3907            "type": "uint256",
3908            "internalType": "BN254.ScalarField"
3909          },
3910          {
3911            "name": "sigmaEval1",
3912            "type": "uint256",
3913            "internalType": "BN254.ScalarField"
3914          },
3915          {
3916            "name": "sigmaEval2",
3917            "type": "uint256",
3918            "internalType": "BN254.ScalarField"
3919          },
3920          {
3921            "name": "sigmaEval3",
3922            "type": "uint256",
3923            "internalType": "BN254.ScalarField"
3924          },
3925          {
3926            "name": "prodPermZetaOmegaEval",
3927            "type": "uint256",
3928            "internalType": "BN254.ScalarField"
3929          }
3930        ]
3931      }
3932    ],
3933    "outputs": [],
3934    "stateMutability": "nonpayable"
3935  },
3936  {
3937    "type": "function",
3938    "name": "owner",
3939    "inputs": [],
3940    "outputs": [
3941      {
3942        "name": "",
3943        "type": "address",
3944        "internalType": "address"
3945      }
3946    ],
3947    "stateMutability": "view"
3948  },
3949  {
3950    "type": "function",
3951    "name": "permissionedProver",
3952    "inputs": [],
3953    "outputs": [
3954      {
3955        "name": "",
3956        "type": "address",
3957        "internalType": "address"
3958      }
3959    ],
3960    "stateMutability": "view"
3961  },
3962  {
3963    "type": "function",
3964    "name": "proxiableUUID",
3965    "inputs": [],
3966    "outputs": [
3967      {
3968        "name": "",
3969        "type": "bytes32",
3970        "internalType": "bytes32"
3971      }
3972    ],
3973    "stateMutability": "view"
3974  },
3975  {
3976    "type": "function",
3977    "name": "renounceOwnership",
3978    "inputs": [],
3979    "outputs": [],
3980    "stateMutability": "nonpayable"
3981  },
3982  {
3983    "type": "function",
3984    "name": "setPermissionedProver",
3985    "inputs": [
3986      {
3987        "name": "prover",
3988        "type": "address",
3989        "internalType": "address"
3990      }
3991    ],
3992    "outputs": [],
3993    "stateMutability": "nonpayable"
3994  },
3995  {
3996    "type": "function",
3997    "name": "setstateHistoryRetentionPeriod",
3998    "inputs": [
3999      {
4000        "name": "historySeconds",
4001        "type": "uint32",
4002        "internalType": "uint32"
4003      }
4004    ],
4005    "outputs": [],
4006    "stateMutability": "nonpayable"
4007  },
4008  {
4009    "type": "function",
4010    "name": "stateHistoryCommitments",
4011    "inputs": [
4012      {
4013        "name": "",
4014        "type": "uint256",
4015        "internalType": "uint256"
4016      }
4017    ],
4018    "outputs": [
4019      {
4020        "name": "l1BlockHeight",
4021        "type": "uint64",
4022        "internalType": "uint64"
4023      },
4024      {
4025        "name": "l1BlockTimestamp",
4026        "type": "uint64",
4027        "internalType": "uint64"
4028      },
4029      {
4030        "name": "hotShotBlockHeight",
4031        "type": "uint64",
4032        "internalType": "uint64"
4033      },
4034      {
4035        "name": "hotShotBlockCommRoot",
4036        "type": "uint256",
4037        "internalType": "BN254.ScalarField"
4038      }
4039    ],
4040    "stateMutability": "view"
4041  },
4042  {
4043    "type": "function",
4044    "name": "stateHistoryFirstIndex",
4045    "inputs": [],
4046    "outputs": [
4047      {
4048        "name": "",
4049        "type": "uint64",
4050        "internalType": "uint64"
4051      }
4052    ],
4053    "stateMutability": "view"
4054  },
4055  {
4056    "type": "function",
4057    "name": "stateHistoryRetentionPeriod",
4058    "inputs": [],
4059    "outputs": [
4060      {
4061        "name": "",
4062        "type": "uint32",
4063        "internalType": "uint32"
4064      }
4065    ],
4066    "stateMutability": "view"
4067  },
4068  {
4069    "type": "function",
4070    "name": "transferOwnership",
4071    "inputs": [
4072      {
4073        "name": "newOwner",
4074        "type": "address",
4075        "internalType": "address"
4076      }
4077    ],
4078    "outputs": [],
4079    "stateMutability": "nonpayable"
4080  },
4081  {
4082    "type": "function",
4083    "name": "upgradeToAndCall",
4084    "inputs": [
4085      {
4086        "name": "newImplementation",
4087        "type": "address",
4088        "internalType": "address"
4089      },
4090      {
4091        "name": "data",
4092        "type": "bytes",
4093        "internalType": "bytes"
4094      }
4095    ],
4096    "outputs": [],
4097    "stateMutability": "payable"
4098  },
4099  {
4100    "type": "event",
4101    "name": "Initialized",
4102    "inputs": [
4103      {
4104        "name": "version",
4105        "type": "uint64",
4106        "indexed": false,
4107        "internalType": "uint64"
4108      }
4109    ],
4110    "anonymous": false
4111  },
4112  {
4113    "type": "event",
4114    "name": "NewState",
4115    "inputs": [
4116      {
4117        "name": "viewNum",
4118        "type": "uint64",
4119        "indexed": true,
4120        "internalType": "uint64"
4121      },
4122      {
4123        "name": "blockHeight",
4124        "type": "uint64",
4125        "indexed": true,
4126        "internalType": "uint64"
4127      },
4128      {
4129        "name": "blockCommRoot",
4130        "type": "uint256",
4131        "indexed": false,
4132        "internalType": "BN254.ScalarField"
4133      }
4134    ],
4135    "anonymous": false
4136  },
4137  {
4138    "type": "event",
4139    "name": "OwnershipTransferred",
4140    "inputs": [
4141      {
4142        "name": "previousOwner",
4143        "type": "address",
4144        "indexed": true,
4145        "internalType": "address"
4146      },
4147      {
4148        "name": "newOwner",
4149        "type": "address",
4150        "indexed": true,
4151        "internalType": "address"
4152      }
4153    ],
4154    "anonymous": false
4155  },
4156  {
4157    "type": "event",
4158    "name": "PermissionedProverNotRequired",
4159    "inputs": [],
4160    "anonymous": false
4161  },
4162  {
4163    "type": "event",
4164    "name": "PermissionedProverRequired",
4165    "inputs": [
4166      {
4167        "name": "permissionedProver",
4168        "type": "address",
4169        "indexed": false,
4170        "internalType": "address"
4171      }
4172    ],
4173    "anonymous": false
4174  },
4175  {
4176    "type": "event",
4177    "name": "Upgrade",
4178    "inputs": [
4179      {
4180        "name": "implementation",
4181        "type": "address",
4182        "indexed": false,
4183        "internalType": "address"
4184      }
4185    ],
4186    "anonymous": false
4187  },
4188  {
4189    "type": "event",
4190    "name": "Upgraded",
4191    "inputs": [
4192      {
4193        "name": "implementation",
4194        "type": "address",
4195        "indexed": true,
4196        "internalType": "address"
4197      }
4198    ],
4199    "anonymous": false
4200  },
4201  {
4202    "type": "error",
4203    "name": "AddressEmptyCode",
4204    "inputs": [
4205      {
4206        "name": "target",
4207        "type": "address",
4208        "internalType": "address"
4209      }
4210    ]
4211  },
4212  {
4213    "type": "error",
4214    "name": "ERC1967InvalidImplementation",
4215    "inputs": [
4216      {
4217        "name": "implementation",
4218        "type": "address",
4219        "internalType": "address"
4220      }
4221    ]
4222  },
4223  {
4224    "type": "error",
4225    "name": "ERC1967NonPayable",
4226    "inputs": []
4227  },
4228  {
4229    "type": "error",
4230    "name": "FailedInnerCall",
4231    "inputs": []
4232  },
4233  {
4234    "type": "error",
4235    "name": "InsufficientSnapshotHistory",
4236    "inputs": []
4237  },
4238  {
4239    "type": "error",
4240    "name": "InvalidAddress",
4241    "inputs": []
4242  },
4243  {
4244    "type": "error",
4245    "name": "InvalidArgs",
4246    "inputs": []
4247  },
4248  {
4249    "type": "error",
4250    "name": "InvalidHotShotBlockForCommitmentCheck",
4251    "inputs": []
4252  },
4253  {
4254    "type": "error",
4255    "name": "InvalidInitialization",
4256    "inputs": []
4257  },
4258  {
4259    "type": "error",
4260    "name": "InvalidMaxStateHistory",
4261    "inputs": []
4262  },
4263  {
4264    "type": "error",
4265    "name": "InvalidProof",
4266    "inputs": []
4267  },
4268  {
4269    "type": "error",
4270    "name": "NoChangeRequired",
4271    "inputs": []
4272  },
4273  {
4274    "type": "error",
4275    "name": "NotInitializing",
4276    "inputs": []
4277  },
4278  {
4279    "type": "error",
4280    "name": "OutdatedState",
4281    "inputs": []
4282  },
4283  {
4284    "type": "error",
4285    "name": "OwnableInvalidOwner",
4286    "inputs": [
4287      {
4288        "name": "owner",
4289        "type": "address",
4290        "internalType": "address"
4291      }
4292    ]
4293  },
4294  {
4295    "type": "error",
4296    "name": "OwnableUnauthorizedAccount",
4297    "inputs": [
4298      {
4299        "name": "account",
4300        "type": "address",
4301        "internalType": "address"
4302      }
4303    ]
4304  },
4305  {
4306    "type": "error",
4307    "name": "ProverNotPermissioned",
4308    "inputs": []
4309  },
4310  {
4311    "type": "error",
4312    "name": "UUPSUnauthorizedCallContext",
4313    "inputs": []
4314  },
4315  {
4316    "type": "error",
4317    "name": "UUPSUnsupportedProxiableUUID",
4318    "inputs": [
4319      {
4320        "name": "slot",
4321        "type": "bytes32",
4322        "internalType": "bytes32"
4323      }
4324    ]
4325  },
4326  {
4327    "type": "error",
4328    "name": "WrongStakeTableUsed",
4329    "inputs": []
4330  }
4331]
4332```*/
4333#[allow(
4334    non_camel_case_types,
4335    non_snake_case,
4336    clippy::pub_underscore_fields,
4337    clippy::style,
4338    clippy::empty_structs_with_brackets
4339)]
4340pub mod LightClientArbitrum {
4341    use super::*;
4342    use alloy::sol_types as alloy_sol_types;
4343    /// The creation / init bytecode of the contract.
4344    ///
4345    /// ```text
4346    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612bcc6100f95f395f8181611783015281816117ac01526119290152612bcc5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fdc565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611ff5565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da919061200c565b34801561023a575f5ffd5b50610184610249366004612341565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124f1565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611ff5565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b506101846104323660046125a7565b610a53565b348015610442575f5ffd5b506101846104513660046125c0565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da9190612669565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461269e565b610bfe565b348015610579575f5ffd5b50610184610588366004611fdc565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d3e565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261149b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b428461158f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad91906126be565b610877611778565b6108808261181c565b61088a828261185d565b5050565b5f61089761191e565b505f516020612ba05f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611967565b600980545f9182919061093c6001836126e9565b8154811061094c5761094c6126fc565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126fc565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126fc565b905f5260205f2090600202016001015460098281548110610a1757610a176126fc565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119d7565b610ba26119e8565b610bad8989896119f0565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126fc565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126e9565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126fc565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126fc565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d2081612710565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126e9565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611967565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d3e565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d8c565b5f6114a461069d565b90506114ae611fa3565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152d90859085908890600401612901565b602060405180830381865af4158015611548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612b21565b611589576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611604575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cf576115cf6126fc565b5f9182526020909120600290910201546115f990600160401b90046001600160401b031684612b40565b6001600160401b0316115b1561169757600854600980549091600160c01b90046001600160401b0316908110611631576116316126fc565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167183612b5f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f25f516020612ba05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611824610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b7575060408051601f3d908101601f191682019092526118b4918101906126be565b60015b6118df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612ba05f395f51905f52811461190f57604051632a87526960e21b815260048101829052602401610d8c565b6119198383611b1c565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119df611b71565b610d9e81611bba565b610915611b71565b82516001600160401b0316151580611a14575060208301516001600160401b031615155b80611a2157506020820151155b80611a2e57506040820151155b80611a3b57506060820151155b80611a4557508151155b80611a575750610e108163ffffffff16105b80611a6b57506301e133808163ffffffff16115b15611a89576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611b2582611bc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b69576119198282611c25565b61088a611c97565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b71565b806001600160a01b03163b5f03611bf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612ba05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c419190612b89565b5f60405180830381855af49150503d805f8114611c79576040519150601f19603f3d011682016040523d82523d5f602084013e611c7e565b606091505b5091509150611c8e858383611cb6565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611ccb57611cc682611d15565b611d0e565b8151158015611ce257506001600160a01b0384163b155b15611d0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611d255780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d7160405180604001604052805f81526020015f81525090565b8152602001611d9160405180604001604052805f81526020015f81525090565b8152602001611db160405180604001604052805f81526020015f81525090565b8152602001611dd160405180604001604052805f81526020015f81525090565b8152602001611df160405180604001604052805f81526020015f81525090565b8152602001611e1160405180604001604052805f81526020015f81525090565b8152602001611e3160405180604001604052805f81526020015f81525090565b8152602001611e5160405180604001604052805f81526020015f81525090565b8152602001611e7160405180604001604052805f81526020015f81525090565b8152602001611e9160405180604001604052805f81526020015f81525090565b8152602001611eb160405180604001604052805f81526020015f81525090565b8152602001611ed160405180604001604052805f81526020015f81525090565b8152602001611ef160405180604001604052805f81526020015f81525090565b8152602001611f1160405180604001604052805f81526020015f81525090565b8152602001611f3160405180604001604052805f81526020015f81525090565b8152602001611f5160405180604001604052805f81526020015f81525090565b8152602001611f7160405180604001604052805f81526020015f81525090565b8152602001611f9160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fd7575f5ffd5b919050565b5f60208284031215611fec575f5ffd5b611d0e82611fc1565b5f60208284031215612005575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161203e604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156122445761224461220d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122725761227261220d565b604052919050565b80356001600160401b0381168114611fd7575f5ffd5b5f606082840312156122a0575f5ffd5b604051606081016001600160401b03811182821017156122c2576122c261220d565b6040529050806122d18361227a565b81526122df6020840161227a565b6020820152604092830135920191909152919050565b5f60408284031215612305575f5ffd5b604080519081016001600160401b03811182821017156123275761232761220d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612354575f5ffd5b61235e8585612290565b9250610480605f1982011215612372575f5ffd5b5061237b612221565b61238885606086016122f5565b81526123978560a086016122f5565b60208201526123a98560e086016122f5565b60408201526123bc8561012086016122f5565b60608201526123cf8561016086016122f5565b60808201526123e2856101a086016122f5565b60a08201526123f5856101e086016122f5565b60c08201526124088561022086016122f5565b60e082015261241b8561026086016122f5565b61010082015261242f856102a086016122f5565b610120820152612443856102e086016122f5565b6101408201526124578561032086016122f5565b61016082015261246b8561036086016122f5565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612502575f5ffd5b61250b83611fc1565b915060208301356001600160401b03811115612525575f5ffd5b8301601f81018513612535575f5ffd5b80356001600160401b0381111561254e5761254e61220d565b612561601f8201601f191660200161224a565b818152866020838501011115612575575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fd7575f5ffd5b5f602082840312156125b7575f5ffd5b611d0e82612594565b5f5f5f5f8486036101208112156125d5575f5ffd5b6125df8787612290565b94506080605f19820112156125f2575f5ffd5b50604051608081016001600160401b03811182821017156126155761261561220d565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061264f60e08601612594565b915061265e6101008601611fc1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156126af575f5ffd5b50508035926020909101359150565b5f602082840312156126ce575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126d5565b634e487b7160e01b5f52603260045260245ffd5b5f8161271e5761271e6126d5565b505f190190565b805f5b6007811015611589578151845260209384019390910190600101612728565b61275c82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612933604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612b0b610500830185612725565b612b196105e0830184612747565b949350505050565b5f60208284031215612b31575f5ffd5b81518015158114611d0e575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126d5565b5f6001600160401b0382166001600160401b038103612b8057612b806126d5565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4347    /// ```
4348    #[rustfmt::skip]
4349    #[allow(clippy::all)]
4350    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4351        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+\xCCa\0\xF9_9_\x81\x81a\x17\x83\x01R\x81\x81a\x17\xAC\x01Ra\x19)\x01Ra+\xCC_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xDCV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xF5V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a \x0CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#AV[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xF1V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xF5V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\xA7V[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xC0V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&iV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x9EV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xDCV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D>V[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14\x9BV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15\x8FV[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\xBEV[a\x08wa\x17xV[a\x08\x80\x82a\x18\x1CV[a\x08\x8A\x82\x82a\x18]V[PPV[_a\x08\x97a\x19\x1EV[P_Q` a+\xA0_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xA1V[a\t\x15_a\x19gV[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xE9V[\x81T\x81\x10a\tLWa\tLa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xFCV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xFCV[\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\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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 WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@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\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xD7V[a\x0B\xA2a\x19\xE8V[a\x0B\xAD\x89\x89\x89a\x19\xF0V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xE9V[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a'\x10V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xE9V[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x19gV[PV[3a\r\xD3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D>V[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@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\x8CV[_a\x14\xA4a\x06\x9DV[\x90Pa\x14\xAEa\x1F\xA3V[\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\x15-\x90\x85\x90\x85\x90\x88\x90`\x04\x01a)\x01V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a+!V[a\x15\x89W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x04WP`\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\xCFWa\x15\xCFa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+@V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x97W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x161Wa\x161a&\xFCV[_\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\x16q\x83a+_V[\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\x17\xFEWP\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\x17\xF2_Q` a+\xA0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18$a\r\xA1V[`@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\x06IV[\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\xB7WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB4\x91\x81\x01\x90a&\xBEV[`\x01[a\x18\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_9_Q\x90_R\x81\x14a\x19\x0FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x19\x19\x83\x83a\x1B\x1CV[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\x15W`@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\x19\xDFa\x1BqV[a\r\x9E\x81a\x1B\xBAV[a\t\x15a\x1BqV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x14WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A!WP` \x82\x01Q\x15[\x80a\x1A.WP`@\x82\x01Q\x15[\x80a\x1A;WP``\x82\x01Q\x15[\x80a\x1AEWP\x81Q\x15[\x80a\x1AWWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AkWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x89W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1B%\x82a\x1B\xC2V[`@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\x1BiWa\x19\x19\x82\x82a\x1C%V[a\x08\x8Aa\x1C\x97V[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BqV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xF7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_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\x1CA\x91\x90a+\x89V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CyW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C~V[``\x91P[P\x91P\x91Pa\x1C\x8E\x85\x83\x83a\x1C\xB6V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xCBWa\x1C\xC6\x82a\x1D\x15V[a\x1D\x0EV[\x81Q\x15\x80\x15a\x1C\xE2WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1D\x0BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D%W\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\x1Dq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xECW__\xFD[a\x1D\x0E\x82a\x1F\xC1V[_` \x82\x84\x03\x12\x15a \x05W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa >`@\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\"DWa\"Da\"\rV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"rWa\"ra\"\rV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[_``\x82\x84\x03\x12\x15a\"\xA0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xC2Wa\"\xC2a\"\rV[`@R\x90P\x80a\"\xD1\x83a\"zV[\x81Ra\"\xDF` \x84\x01a\"zV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\x05W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#'Wa#'a\"\rV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#TW__\xFD[a#^\x85\x85a\"\x90V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#rW__\xFD[Pa#{a\"!V[a#\x88\x85``\x86\x01a\"\xF5V[\x81Ra#\x97\x85`\xA0\x86\x01a\"\xF5V[` \x82\x01Ra#\xA9\x85`\xE0\x86\x01a\"\xF5V[`@\x82\x01Ra#\xBC\x85a\x01 \x86\x01a\"\xF5V[``\x82\x01Ra#\xCF\x85a\x01`\x86\x01a\"\xF5V[`\x80\x82\x01Ra#\xE2\x85a\x01\xA0\x86\x01a\"\xF5V[`\xA0\x82\x01Ra#\xF5\x85a\x01\xE0\x86\x01a\"\xF5V[`\xC0\x82\x01Ra$\x08\x85a\x02 \x86\x01a\"\xF5V[`\xE0\x82\x01Ra$\x1B\x85a\x02`\x86\x01a\"\xF5V[a\x01\0\x82\x01Ra$/\x85a\x02\xA0\x86\x01a\"\xF5V[a\x01 \x82\x01Ra$C\x85a\x02\xE0\x86\x01a\"\xF5V[a\x01@\x82\x01Ra$W\x85a\x03 \x86\x01a\"\xF5V[a\x01`\x82\x01Ra$k\x85a\x03`\x86\x01a\"\xF5V[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%\x02W__\xFD[a%\x0B\x83a\x1F\xC1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%%W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%NWa%Na\"\rV[a%a`\x1F\x82\x01`\x1F\x19\x16` \x01a\"JV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%uW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xD7W__\xFD[_` \x82\x84\x03\x12\x15a%\xB7W__\xFD[a\x1D\x0E\x82a%\x94V[____\x84\x86\x03a\x01 \x81\x12\x15a%\xD5W__\xFD[a%\xDF\x87\x87a\"\x90V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xF2W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x15Wa&\x15a\"\rV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&O`\xE0\x86\x01a%\x94V[\x91Pa&^a\x01\0\x86\x01a\x1F\xC1V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\xAFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xCEW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a'\x1EWa'\x1Ea&\xD5V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x89W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'(V[a'\\\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)3`@\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+\x0Ba\x05\0\x83\x01\x85a'%V[a+\x19a\x05\xE0\x83\x01\x84a'GV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1D\x0EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xD5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+\x80Wa+\x80a&\xD5V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4352    );
4353    /// The runtime bytecode of the contract, as deployed on the network.
4354    ///
4355    /// ```text
4356    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fdc565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611ff5565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da919061200c565b34801561023a575f5ffd5b50610184610249366004612341565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124f1565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611ff5565b610928565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b506101846104323660046125a7565b610a53565b348015610442575f5ffd5b506101846104513660046125c0565b610adc565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da9190612669565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461269e565b610bfe565b348015610579575f5ffd5b50610184610588366004611fdc565b610d5f565b348015610598575f5ffd5b506009546102d7565b6105a9610da1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d3e565b6106ad610dfc565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161142b565b610763828261149b565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b428461158f565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad91906126be565b610877611778565b6108808261181c565b61088a828261185d565b5050565b5f61089761191e565b505f516020612ba05f395f51905f5290565b6108b1610da1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610da1565b6109155f611967565b600980545f9182919061093c6001836126e9565b8154811061094c5761094c6126fc565b5f918252602090912060029091020154600160801b90046001600160401b0316841061098b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a4c5784600982815481106109bb576109bb6126fc565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a4457600981815481106109f4576109f46126fc565b905f5260205f2090600202016001015460098281548110610a1757610a176126fc565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b60010161099f565b5050915091565b610a5b610da1565b610e108163ffffffff161080610a7a57506301e133808163ffffffff16115b80610a98575060085463ffffffff600160a01b909104811690821611155b15610ab6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b205750825b90505f826001600160401b03166001148015610b3b5750303b155b905081158015610b49575080155b15610b675760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9157845460ff60401b1916600160401b1785555b610b9a866119d7565b610ba26119e8565b610bad8989896119f0565b8315610bf357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c0b61080d565b841180610c16575080155b80610c605750600854600980549091600160c01b90046001600160401b0316908110610c4457610c446126fc565b5f9182526020909120600290910201546001600160401b031684105b15610c7e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c8c6001856126e9565b90505b81610d2857600854600160c01b90046001600160401b03168110610d28578660098281548110610cc157610cc16126fc565b5f9182526020909120600290910201546001600160401b031611610d16576001915060098181548110610cf657610cf66126fc565b5f9182526020909120600290910201546001600160401b03169250610d28565b80610d2081612710565b915050610c8f565b81610d465760405163b0b4387760e01b815260040160405180910390fd5b85610d5184896126e9565b119450505050505b92915050565b610d67610da1565b6001600160a01b038116610d9557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d9e81611967565b50565b33610dd37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d8c565b610e04611d3e565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c6400000000006044820152606401610d8c565b5f6114a461069d565b90506114ae611fa3565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061152d90859085908890600401612901565b602060405180830381865af4158015611548573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156c9190612b21565b611589576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611604575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115cf576115cf6126fc565b5f9182526020909120600290910201546115f990600160401b90046001600160401b031684612b40565b6001600160401b0316115b1561169757600854600980549091600160c01b90046001600160401b0316908110611631576116316126fc565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167183612b5f565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117fe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117f25f516020612ba05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611824610da1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b7575060408051601f3d908101601f191682019092526118b4918101906126be565b60015b6118df57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d8c565b5f516020612ba05f395f51905f52811461190f57604051632a87526960e21b815260048101829052602401610d8c565b6119198383611b1c565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6119df611b71565b610d9e81611bba565b610915611b71565b82516001600160401b0316151580611a14575060208301516001600160401b031615155b80611a2157506020820151155b80611a2e57506040820151155b80611a3b57506060820151155b80611a4557508151155b80611a575750610e108163ffffffff16105b80611a6b57506301e133808163ffffffff16115b15611a89576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b611b2582611bc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b69576119198282611c25565b61088a611c97565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d67611b71565b806001600160a01b03163b5f03611bf757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d8c565b5f516020612ba05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c419190612b89565b5f60405180830381855af49150503d805f8114611c79576040519150601f19603f3d011682016040523d82523d5f602084013e611c7e565b606091505b5091509150611c8e858383611cb6565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611ccb57611cc682611d15565b611d0e565b8151158015611ce257506001600160a01b0384163b155b15611d0b57604051639996b31560e01b81526001600160a01b0385166004820152602401610d8c565b50805b9392505050565b805115611d255780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d7160405180604001604052805f81526020015f81525090565b8152602001611d9160405180604001604052805f81526020015f81525090565b8152602001611db160405180604001604052805f81526020015f81525090565b8152602001611dd160405180604001604052805f81526020015f81525090565b8152602001611df160405180604001604052805f81526020015f81525090565b8152602001611e1160405180604001604052805f81526020015f81525090565b8152602001611e3160405180604001604052805f81526020015f81525090565b8152602001611e5160405180604001604052805f81526020015f81525090565b8152602001611e7160405180604001604052805f81526020015f81525090565b8152602001611e9160405180604001604052805f81526020015f81525090565b8152602001611eb160405180604001604052805f81526020015f81525090565b8152602001611ed160405180604001604052805f81526020015f81525090565b8152602001611ef160405180604001604052805f81526020015f81525090565b8152602001611f1160405180604001604052805f81526020015f81525090565b8152602001611f3160405180604001604052805f81526020015f81525090565b8152602001611f5160405180604001604052805f81526020015f81525090565b8152602001611f7160405180604001604052805f81526020015f81525090565b8152602001611f9160405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fd7575f5ffd5b919050565b5f60208284031215611fec575f5ffd5b611d0e82611fc1565b5f60208284031215612005575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161203e604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156122445761224461220d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156122725761227261220d565b604052919050565b80356001600160401b0381168114611fd7575f5ffd5b5f606082840312156122a0575f5ffd5b604051606081016001600160401b03811182821017156122c2576122c261220d565b6040529050806122d18361227a565b81526122df6020840161227a565b6020820152604092830135920191909152919050565b5f60408284031215612305575f5ffd5b604080519081016001600160401b03811182821017156123275761232761220d565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612354575f5ffd5b61235e8585612290565b9250610480605f1982011215612372575f5ffd5b5061237b612221565b61238885606086016122f5565b81526123978560a086016122f5565b60208201526123a98560e086016122f5565b60408201526123bc8561012086016122f5565b60608201526123cf8561016086016122f5565b60808201526123e2856101a086016122f5565b60a08201526123f5856101e086016122f5565b60c08201526124088561022086016122f5565b60e082015261241b8561026086016122f5565b61010082015261242f856102a086016122f5565b610120820152612443856102e086016122f5565b6101408201526124578561032086016122f5565b61016082015261246b8561036086016122f5565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612502575f5ffd5b61250b83611fc1565b915060208301356001600160401b03811115612525575f5ffd5b8301601f81018513612535575f5ffd5b80356001600160401b0381111561254e5761254e61220d565b612561601f8201601f191660200161224a565b818152866020838501011115612575575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fd7575f5ffd5b5f602082840312156125b7575f5ffd5b611d0e82612594565b5f5f5f5f8486036101208112156125d5575f5ffd5b6125df8787612290565b94506080605f19820112156125f2575f5ffd5b50604051608081016001600160401b03811182821017156126155761261561220d565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061264f60e08601612594565b915061265e6101008601611fc1565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156126af575f5ffd5b50508035926020909101359150565b5f602082840312156126ce575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d5957610d596126d5565b634e487b7160e01b5f52603260045260245ffd5b5f8161271e5761271e6126d5565b505f190190565b805f5b6007811015611589578151845260209384019390910190600101612728565b61275c82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612933604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612b0b610500830185612725565b612b196105e0830184612747565b949350505050565b5f60208284031215612b31575f5ffd5b81518015158114611d0e575f5ffd5b6001600160401b038281168282160390811115610d5957610d596126d5565b5f6001600160401b0382166001600160401b038103612b8057612b806126d5565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4357    /// ```
4358    #[rustfmt::skip]
4359    #[allow(clippy::all)]
4360    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4361        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xDCV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xF5V[a\x06TV[`@Qa\x01\xDA\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a \x0CV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#AV[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xF1V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xF5V[a\t(V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\xA7V[a\nSV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xC0V[a\n\xDCV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&iV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x9EV[a\x0B\xFEV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xDCV[a\r_V[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x05\xFFW`@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\x06cW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\xA5a\x1D>V[a\x06\xADa\r\xFCV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14+V[a\x07c\x82\x82a\x14\x9BV[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15\x8FV[\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\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\xBEV[a\x08wa\x17xV[a\x08\x80\x82a\x18\x1CV[a\x08\x8A\x82\x82a\x18]V[PPV[_a\x08\x97a\x19\x1EV[P_Q` a+\xA0_9_Q\x90_R\x90V[a\x08\xB1a\r\xA1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\x1Fa\r\xA1V[a\t\x15_a\x19gV[`\t\x80T_\x91\x82\x91\x90a\t<`\x01\x83a&\xE9V[\x81T\x81\x10a\tLWa\tLa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x8BW`@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\nLW\x84`\t\x82\x81T\x81\x10a\t\xBBWa\t\xBBa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nDW`\t\x81\x81T\x81\x10a\t\xF4Wa\t\xF4a&\xFCV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\x17Wa\n\x17a&\xFCV[\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\t\x9FV[PP\x91P\x91V[a\n[a\r\xA1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\nzWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\x98WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xB6W`@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 WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B;WP0;\x15[\x90P\x81\x15\x80\x15a\x0BIWP\x80\x15[\x15a\x0BgW`@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\x0B\x91W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\x9A\x86a\x19\xD7V[a\x0B\xA2a\x19\xE8V[a\x0B\xAD\x89\x89\x89a\x19\xF0V[\x83\x15a\x0B\xF3W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[`\tT_\x90a\x0C\x0Ba\x08\rV[\x84\x11\x80a\x0C\x16WP\x80\x15[\x80a\x0C`WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CDWa\x0CDa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C~W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x8C`\x01\x85a&\xE9V[\x90P[\x81a\r(W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r(W\x86`\t\x82\x81T\x81\x10a\x0C\xC1Wa\x0C\xC1a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r\x16W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\xF6Wa\x0C\xF6a&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r(V[\x80a\r \x81a'\x10V[\x91PPa\x0C\x8FV[\x81a\rFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\rQ\x84\x89a&\xE9V[\x11\x94PPPPP[\x92\x91PPV[a\rga\r\xA1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\x95W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\x9E\x81a\x19gV[PV[3a\r\xD3\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\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x8CV[a\x0E\x04a\x1D>V[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@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\x8CV[_a\x14\xA4a\x06\x9DV[\x90Pa\x14\xAEa\x1F\xA3V[\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\x15-\x90\x85\x90\x85\x90\x88\x90`\x04\x01a)\x01V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15HW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15l\x91\x90a+!V[a\x15\x89W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x04WP`\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\xCFWa\x15\xCFa&\xFCV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xF9\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+@V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x97W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x161Wa\x161a&\xFCV[_\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\x16q\x83a+_V[\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\x17\xFEWP\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\x17\xF2_Q` a+\xA0_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18$a\r\xA1V[`@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\x06IV[\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\xB7WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xB4\x91\x81\x01\x90a&\xBEV[`\x01[a\x18\xDFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_9_Q\x90_R\x81\x14a\x19\x0FW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x8CV[a\x19\x19\x83\x83a\x1B\x1CV[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\x15W`@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\x19\xDFa\x1BqV[a\r\x9E\x81a\x1B\xBAV[a\t\x15a\x1BqV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1A\x14WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1A!WP` \x82\x01Q\x15[\x80a\x1A.WP`@\x82\x01Q\x15[\x80a\x1A;WP``\x82\x01Q\x15[\x80a\x1AEWP\x81Q\x15[\x80a\x1AWWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1AkWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A\x89W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\x1B%\x82a\x1B\xC2V[`@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\x1BiWa\x19\x19\x82\x82a\x1C%V[a\x08\x8Aa\x1C\x97V[\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\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rga\x1BqV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xF7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x8CV[_Q` a+\xA0_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\x1CA\x91\x90a+\x89V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CyW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C~V[``\x91P[P\x91P\x91Pa\x1C\x8E\x85\x83\x83a\x1C\xB6V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xCBWa\x1C\xC6\x82a\x1D\x15V[a\x1D\x0EV[\x81Q\x15\x80\x15a\x1C\xE2WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1D\x0BW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x8CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D%W\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\x1Dq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x11`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FQ`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fq`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x91`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xECW__\xFD[a\x1D\x0E\x82a\x1F\xC1V[_` \x82\x84\x03\x12\x15a \x05W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa >`@\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\"DWa\"Da\"\rV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"rWa\"ra\"\rV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xD7W__\xFD[_``\x82\x84\x03\x12\x15a\"\xA0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xC2Wa\"\xC2a\"\rV[`@R\x90P\x80a\"\xD1\x83a\"zV[\x81Ra\"\xDF` \x84\x01a\"zV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a#\x05W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#'Wa#'a\"\rV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#TW__\xFD[a#^\x85\x85a\"\x90V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#rW__\xFD[Pa#{a\"!V[a#\x88\x85``\x86\x01a\"\xF5V[\x81Ra#\x97\x85`\xA0\x86\x01a\"\xF5V[` \x82\x01Ra#\xA9\x85`\xE0\x86\x01a\"\xF5V[`@\x82\x01Ra#\xBC\x85a\x01 \x86\x01a\"\xF5V[``\x82\x01Ra#\xCF\x85a\x01`\x86\x01a\"\xF5V[`\x80\x82\x01Ra#\xE2\x85a\x01\xA0\x86\x01a\"\xF5V[`\xA0\x82\x01Ra#\xF5\x85a\x01\xE0\x86\x01a\"\xF5V[`\xC0\x82\x01Ra$\x08\x85a\x02 \x86\x01a\"\xF5V[`\xE0\x82\x01Ra$\x1B\x85a\x02`\x86\x01a\"\xF5V[a\x01\0\x82\x01Ra$/\x85a\x02\xA0\x86\x01a\"\xF5V[a\x01 \x82\x01Ra$C\x85a\x02\xE0\x86\x01a\"\xF5V[a\x01@\x82\x01Ra$W\x85a\x03 \x86\x01a\"\xF5V[a\x01`\x82\x01Ra$k\x85a\x03`\x86\x01a\"\xF5V[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%\x02W__\xFD[a%\x0B\x83a\x1F\xC1V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%%W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%5W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%NWa%Na\"\rV[a%a`\x1F\x82\x01`\x1F\x19\x16` \x01a\"JV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%uW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xD7W__\xFD[_` \x82\x84\x03\x12\x15a%\xB7W__\xFD[a\x1D\x0E\x82a%\x94V[____\x84\x86\x03a\x01 \x81\x12\x15a%\xD5W__\xFD[a%\xDF\x87\x87a\"\x90V[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xF2W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x15Wa&\x15a\"\rV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&O`\xE0\x86\x01a%\x94V[\x91Pa&^a\x01\0\x86\x01a\x1F\xC1V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\xAFW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xCEW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\rYWa\rYa&\xD5V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a'\x1EWa'\x1Ea&\xD5V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15\x89W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'(V[a'\\\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)3`@\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+\x0Ba\x05\0\x83\x01\x85a'%V[a+\x19a\x05\xE0\x83\x01\x84a'GV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+1W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1D\x0EW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\rYWa\rYa&\xD5V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+\x80Wa+\x80a&\xD5V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4362    );
4363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4364    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4365```solidity
4366error AddressEmptyCode(address target);
4367```*/
4368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4369    #[derive(Clone)]
4370    pub struct AddressEmptyCode {
4371        #[allow(missing_docs)]
4372        pub target: alloy::sol_types::private::Address,
4373    }
4374    #[allow(
4375        non_camel_case_types,
4376        non_snake_case,
4377        clippy::pub_underscore_fields,
4378        clippy::style
4379    )]
4380    const _: () = {
4381        use alloy::sol_types as alloy_sol_types;
4382        #[doc(hidden)]
4383        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4384        #[doc(hidden)]
4385        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4386        #[cfg(test)]
4387        #[allow(dead_code, unreachable_patterns)]
4388        fn _type_assertion(
4389            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4390        ) {
4391            match _t {
4392                alloy_sol_types::private::AssertTypeEq::<
4393                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4394                >(_) => {}
4395            }
4396        }
4397        #[automatically_derived]
4398        #[doc(hidden)]
4399        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4400            fn from(value: AddressEmptyCode) -> Self {
4401                (value.target,)
4402            }
4403        }
4404        #[automatically_derived]
4405        #[doc(hidden)]
4406        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4407            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4408                Self { target: tuple.0 }
4409            }
4410        }
4411        #[automatically_derived]
4412        impl alloy_sol_types::SolError for AddressEmptyCode {
4413            type Parameters<'a> = UnderlyingSolTuple<'a>;
4414            type Token<'a> = <Self::Parameters<
4415                'a,
4416            > as alloy_sol_types::SolType>::Token<'a>;
4417            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4418            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4419            #[inline]
4420            fn new<'a>(
4421                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4422            ) -> Self {
4423                tuple.into()
4424            }
4425            #[inline]
4426            fn tokenize(&self) -> Self::Token<'_> {
4427                (
4428                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4429                        &self.target,
4430                    ),
4431                )
4432            }
4433        }
4434    };
4435    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4436    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4437```solidity
4438error ERC1967InvalidImplementation(address implementation);
4439```*/
4440    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4441    #[derive(Clone)]
4442    pub struct ERC1967InvalidImplementation {
4443        #[allow(missing_docs)]
4444        pub implementation: alloy::sol_types::private::Address,
4445    }
4446    #[allow(
4447        non_camel_case_types,
4448        non_snake_case,
4449        clippy::pub_underscore_fields,
4450        clippy::style
4451    )]
4452    const _: () = {
4453        use alloy::sol_types as alloy_sol_types;
4454        #[doc(hidden)]
4455        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4456        #[doc(hidden)]
4457        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4458        #[cfg(test)]
4459        #[allow(dead_code, unreachable_patterns)]
4460        fn _type_assertion(
4461            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4462        ) {
4463            match _t {
4464                alloy_sol_types::private::AssertTypeEq::<
4465                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4466                >(_) => {}
4467            }
4468        }
4469        #[automatically_derived]
4470        #[doc(hidden)]
4471        impl ::core::convert::From<ERC1967InvalidImplementation>
4472        for UnderlyingRustTuple<'_> {
4473            fn from(value: ERC1967InvalidImplementation) -> Self {
4474                (value.implementation,)
4475            }
4476        }
4477        #[automatically_derived]
4478        #[doc(hidden)]
4479        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4480        for ERC1967InvalidImplementation {
4481            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4482                Self { implementation: tuple.0 }
4483            }
4484        }
4485        #[automatically_derived]
4486        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4487            type Parameters<'a> = UnderlyingSolTuple<'a>;
4488            type Token<'a> = <Self::Parameters<
4489                'a,
4490            > as alloy_sol_types::SolType>::Token<'a>;
4491            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4492            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4493            #[inline]
4494            fn new<'a>(
4495                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4496            ) -> Self {
4497                tuple.into()
4498            }
4499            #[inline]
4500            fn tokenize(&self) -> Self::Token<'_> {
4501                (
4502                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4503                        &self.implementation,
4504                    ),
4505                )
4506            }
4507        }
4508    };
4509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4510    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4511```solidity
4512error ERC1967NonPayable();
4513```*/
4514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4515    #[derive(Clone)]
4516    pub struct ERC1967NonPayable {}
4517    #[allow(
4518        non_camel_case_types,
4519        non_snake_case,
4520        clippy::pub_underscore_fields,
4521        clippy::style
4522    )]
4523    const _: () = {
4524        use alloy::sol_types as alloy_sol_types;
4525        #[doc(hidden)]
4526        type UnderlyingSolTuple<'a> = ();
4527        #[doc(hidden)]
4528        type UnderlyingRustTuple<'a> = ();
4529        #[cfg(test)]
4530        #[allow(dead_code, unreachable_patterns)]
4531        fn _type_assertion(
4532            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4533        ) {
4534            match _t {
4535                alloy_sol_types::private::AssertTypeEq::<
4536                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4537                >(_) => {}
4538            }
4539        }
4540        #[automatically_derived]
4541        #[doc(hidden)]
4542        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4543            fn from(value: ERC1967NonPayable) -> Self {
4544                ()
4545            }
4546        }
4547        #[automatically_derived]
4548        #[doc(hidden)]
4549        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4550            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4551                Self {}
4552            }
4553        }
4554        #[automatically_derived]
4555        impl alloy_sol_types::SolError for ERC1967NonPayable {
4556            type Parameters<'a> = UnderlyingSolTuple<'a>;
4557            type Token<'a> = <Self::Parameters<
4558                'a,
4559            > as alloy_sol_types::SolType>::Token<'a>;
4560            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4561            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4562            #[inline]
4563            fn new<'a>(
4564                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4565            ) -> Self {
4566                tuple.into()
4567            }
4568            #[inline]
4569            fn tokenize(&self) -> Self::Token<'_> {
4570                ()
4571            }
4572        }
4573    };
4574    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4575    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4576```solidity
4577error FailedInnerCall();
4578```*/
4579    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4580    #[derive(Clone)]
4581    pub struct FailedInnerCall {}
4582    #[allow(
4583        non_camel_case_types,
4584        non_snake_case,
4585        clippy::pub_underscore_fields,
4586        clippy::style
4587    )]
4588    const _: () = {
4589        use alloy::sol_types as alloy_sol_types;
4590        #[doc(hidden)]
4591        type UnderlyingSolTuple<'a> = ();
4592        #[doc(hidden)]
4593        type UnderlyingRustTuple<'a> = ();
4594        #[cfg(test)]
4595        #[allow(dead_code, unreachable_patterns)]
4596        fn _type_assertion(
4597            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4598        ) {
4599            match _t {
4600                alloy_sol_types::private::AssertTypeEq::<
4601                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4602                >(_) => {}
4603            }
4604        }
4605        #[automatically_derived]
4606        #[doc(hidden)]
4607        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4608            fn from(value: FailedInnerCall) -> Self {
4609                ()
4610            }
4611        }
4612        #[automatically_derived]
4613        #[doc(hidden)]
4614        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4615            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4616                Self {}
4617            }
4618        }
4619        #[automatically_derived]
4620        impl alloy_sol_types::SolError for FailedInnerCall {
4621            type Parameters<'a> = UnderlyingSolTuple<'a>;
4622            type Token<'a> = <Self::Parameters<
4623                'a,
4624            > as alloy_sol_types::SolType>::Token<'a>;
4625            const SIGNATURE: &'static str = "FailedInnerCall()";
4626            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4627            #[inline]
4628            fn new<'a>(
4629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4630            ) -> Self {
4631                tuple.into()
4632            }
4633            #[inline]
4634            fn tokenize(&self) -> Self::Token<'_> {
4635                ()
4636            }
4637        }
4638    };
4639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4640    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4641```solidity
4642error InsufficientSnapshotHistory();
4643```*/
4644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4645    #[derive(Clone)]
4646    pub struct InsufficientSnapshotHistory {}
4647    #[allow(
4648        non_camel_case_types,
4649        non_snake_case,
4650        clippy::pub_underscore_fields,
4651        clippy::style
4652    )]
4653    const _: () = {
4654        use alloy::sol_types as alloy_sol_types;
4655        #[doc(hidden)]
4656        type UnderlyingSolTuple<'a> = ();
4657        #[doc(hidden)]
4658        type UnderlyingRustTuple<'a> = ();
4659        #[cfg(test)]
4660        #[allow(dead_code, unreachable_patterns)]
4661        fn _type_assertion(
4662            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4663        ) {
4664            match _t {
4665                alloy_sol_types::private::AssertTypeEq::<
4666                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4667                >(_) => {}
4668            }
4669        }
4670        #[automatically_derived]
4671        #[doc(hidden)]
4672        impl ::core::convert::From<InsufficientSnapshotHistory>
4673        for UnderlyingRustTuple<'_> {
4674            fn from(value: InsufficientSnapshotHistory) -> Self {
4675                ()
4676            }
4677        }
4678        #[automatically_derived]
4679        #[doc(hidden)]
4680        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4681        for InsufficientSnapshotHistory {
4682            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4683                Self {}
4684            }
4685        }
4686        #[automatically_derived]
4687        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4688            type Parameters<'a> = UnderlyingSolTuple<'a>;
4689            type Token<'a> = <Self::Parameters<
4690                'a,
4691            > as alloy_sol_types::SolType>::Token<'a>;
4692            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4693            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4694            #[inline]
4695            fn new<'a>(
4696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4697            ) -> Self {
4698                tuple.into()
4699            }
4700            #[inline]
4701            fn tokenize(&self) -> Self::Token<'_> {
4702                ()
4703            }
4704        }
4705    };
4706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4707    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4708```solidity
4709error InvalidAddress();
4710```*/
4711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4712    #[derive(Clone)]
4713    pub struct InvalidAddress {}
4714    #[allow(
4715        non_camel_case_types,
4716        non_snake_case,
4717        clippy::pub_underscore_fields,
4718        clippy::style
4719    )]
4720    const _: () = {
4721        use alloy::sol_types as alloy_sol_types;
4722        #[doc(hidden)]
4723        type UnderlyingSolTuple<'a> = ();
4724        #[doc(hidden)]
4725        type UnderlyingRustTuple<'a> = ();
4726        #[cfg(test)]
4727        #[allow(dead_code, unreachable_patterns)]
4728        fn _type_assertion(
4729            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4730        ) {
4731            match _t {
4732                alloy_sol_types::private::AssertTypeEq::<
4733                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4734                >(_) => {}
4735            }
4736        }
4737        #[automatically_derived]
4738        #[doc(hidden)]
4739        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4740            fn from(value: InvalidAddress) -> Self {
4741                ()
4742            }
4743        }
4744        #[automatically_derived]
4745        #[doc(hidden)]
4746        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4747            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4748                Self {}
4749            }
4750        }
4751        #[automatically_derived]
4752        impl alloy_sol_types::SolError for InvalidAddress {
4753            type Parameters<'a> = UnderlyingSolTuple<'a>;
4754            type Token<'a> = <Self::Parameters<
4755                'a,
4756            > as alloy_sol_types::SolType>::Token<'a>;
4757            const SIGNATURE: &'static str = "InvalidAddress()";
4758            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
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 `InvalidArgs()` and selector `0xa1ba07ee`.
4773```solidity
4774error InvalidArgs();
4775```*/
4776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4777    #[derive(Clone)]
4778    pub struct InvalidArgs {}
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(
4794            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4795        ) {
4796            match _t {
4797                alloy_sol_types::private::AssertTypeEq::<
4798                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4799                >(_) => {}
4800            }
4801        }
4802        #[automatically_derived]
4803        #[doc(hidden)]
4804        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4805            fn from(value: InvalidArgs) -> Self {
4806                ()
4807            }
4808        }
4809        #[automatically_derived]
4810        #[doc(hidden)]
4811        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4812            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4813                Self {}
4814            }
4815        }
4816        #[automatically_derived]
4817        impl alloy_sol_types::SolError for InvalidArgs {
4818            type Parameters<'a> = UnderlyingSolTuple<'a>;
4819            type Token<'a> = <Self::Parameters<
4820                'a,
4821            > as alloy_sol_types::SolType>::Token<'a>;
4822            const SIGNATURE: &'static str = "InvalidArgs()";
4823            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4824            #[inline]
4825            fn new<'a>(
4826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4827            ) -> Self {
4828                tuple.into()
4829            }
4830            #[inline]
4831            fn tokenize(&self) -> Self::Token<'_> {
4832                ()
4833            }
4834        }
4835    };
4836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4837    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4838```solidity
4839error InvalidHotShotBlockForCommitmentCheck();
4840```*/
4841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4842    #[derive(Clone)]
4843    pub struct InvalidHotShotBlockForCommitmentCheck {}
4844    #[allow(
4845        non_camel_case_types,
4846        non_snake_case,
4847        clippy::pub_underscore_fields,
4848        clippy::style
4849    )]
4850    const _: () = {
4851        use alloy::sol_types as alloy_sol_types;
4852        #[doc(hidden)]
4853        type UnderlyingSolTuple<'a> = ();
4854        #[doc(hidden)]
4855        type UnderlyingRustTuple<'a> = ();
4856        #[cfg(test)]
4857        #[allow(dead_code, unreachable_patterns)]
4858        fn _type_assertion(
4859            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4860        ) {
4861            match _t {
4862                alloy_sol_types::private::AssertTypeEq::<
4863                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4864                >(_) => {}
4865            }
4866        }
4867        #[automatically_derived]
4868        #[doc(hidden)]
4869        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4870        for UnderlyingRustTuple<'_> {
4871            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4872                ()
4873            }
4874        }
4875        #[automatically_derived]
4876        #[doc(hidden)]
4877        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4878        for InvalidHotShotBlockForCommitmentCheck {
4879            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4880                Self {}
4881            }
4882        }
4883        #[automatically_derived]
4884        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4885            type Parameters<'a> = UnderlyingSolTuple<'a>;
4886            type Token<'a> = <Self::Parameters<
4887                'a,
4888            > as alloy_sol_types::SolType>::Token<'a>;
4889            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4890            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4891            #[inline]
4892            fn new<'a>(
4893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4894            ) -> Self {
4895                tuple.into()
4896            }
4897            #[inline]
4898            fn tokenize(&self) -> Self::Token<'_> {
4899                ()
4900            }
4901        }
4902    };
4903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4904    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4905```solidity
4906error InvalidInitialization();
4907```*/
4908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4909    #[derive(Clone)]
4910    pub struct InvalidInitialization {}
4911    #[allow(
4912        non_camel_case_types,
4913        non_snake_case,
4914        clippy::pub_underscore_fields,
4915        clippy::style
4916    )]
4917    const _: () = {
4918        use alloy::sol_types as alloy_sol_types;
4919        #[doc(hidden)]
4920        type UnderlyingSolTuple<'a> = ();
4921        #[doc(hidden)]
4922        type UnderlyingRustTuple<'a> = ();
4923        #[cfg(test)]
4924        #[allow(dead_code, unreachable_patterns)]
4925        fn _type_assertion(
4926            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4927        ) {
4928            match _t {
4929                alloy_sol_types::private::AssertTypeEq::<
4930                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4931                >(_) => {}
4932            }
4933        }
4934        #[automatically_derived]
4935        #[doc(hidden)]
4936        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4937            fn from(value: InvalidInitialization) -> Self {
4938                ()
4939            }
4940        }
4941        #[automatically_derived]
4942        #[doc(hidden)]
4943        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4944            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4945                Self {}
4946            }
4947        }
4948        #[automatically_derived]
4949        impl alloy_sol_types::SolError for InvalidInitialization {
4950            type Parameters<'a> = UnderlyingSolTuple<'a>;
4951            type Token<'a> = <Self::Parameters<
4952                'a,
4953            > as alloy_sol_types::SolType>::Token<'a>;
4954            const SIGNATURE: &'static str = "InvalidInitialization()";
4955            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4956            #[inline]
4957            fn new<'a>(
4958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4959            ) -> Self {
4960                tuple.into()
4961            }
4962            #[inline]
4963            fn tokenize(&self) -> Self::Token<'_> {
4964                ()
4965            }
4966        }
4967    };
4968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4969    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4970```solidity
4971error InvalidMaxStateHistory();
4972```*/
4973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4974    #[derive(Clone)]
4975    pub struct InvalidMaxStateHistory {}
4976    #[allow(
4977        non_camel_case_types,
4978        non_snake_case,
4979        clippy::pub_underscore_fields,
4980        clippy::style
4981    )]
4982    const _: () = {
4983        use alloy::sol_types as alloy_sol_types;
4984        #[doc(hidden)]
4985        type UnderlyingSolTuple<'a> = ();
4986        #[doc(hidden)]
4987        type UnderlyingRustTuple<'a> = ();
4988        #[cfg(test)]
4989        #[allow(dead_code, unreachable_patterns)]
4990        fn _type_assertion(
4991            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4992        ) {
4993            match _t {
4994                alloy_sol_types::private::AssertTypeEq::<
4995                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4996                >(_) => {}
4997            }
4998        }
4999        #[automatically_derived]
5000        #[doc(hidden)]
5001        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5002            fn from(value: InvalidMaxStateHistory) -> Self {
5003                ()
5004            }
5005        }
5006        #[automatically_derived]
5007        #[doc(hidden)]
5008        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5009            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5010                Self {}
5011            }
5012        }
5013        #[automatically_derived]
5014        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5015            type Parameters<'a> = UnderlyingSolTuple<'a>;
5016            type Token<'a> = <Self::Parameters<
5017                'a,
5018            > as alloy_sol_types::SolType>::Token<'a>;
5019            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5020            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5021            #[inline]
5022            fn new<'a>(
5023                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5024            ) -> Self {
5025                tuple.into()
5026            }
5027            #[inline]
5028            fn tokenize(&self) -> Self::Token<'_> {
5029                ()
5030            }
5031        }
5032    };
5033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5034    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5035```solidity
5036error InvalidProof();
5037```*/
5038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5039    #[derive(Clone)]
5040    pub struct InvalidProof {}
5041    #[allow(
5042        non_camel_case_types,
5043        non_snake_case,
5044        clippy::pub_underscore_fields,
5045        clippy::style
5046    )]
5047    const _: () = {
5048        use alloy::sol_types as alloy_sol_types;
5049        #[doc(hidden)]
5050        type UnderlyingSolTuple<'a> = ();
5051        #[doc(hidden)]
5052        type UnderlyingRustTuple<'a> = ();
5053        #[cfg(test)]
5054        #[allow(dead_code, unreachable_patterns)]
5055        fn _type_assertion(
5056            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5057        ) {
5058            match _t {
5059                alloy_sol_types::private::AssertTypeEq::<
5060                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5061                >(_) => {}
5062            }
5063        }
5064        #[automatically_derived]
5065        #[doc(hidden)]
5066        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5067            fn from(value: InvalidProof) -> Self {
5068                ()
5069            }
5070        }
5071        #[automatically_derived]
5072        #[doc(hidden)]
5073        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5074            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5075                Self {}
5076            }
5077        }
5078        #[automatically_derived]
5079        impl alloy_sol_types::SolError for InvalidProof {
5080            type Parameters<'a> = UnderlyingSolTuple<'a>;
5081            type Token<'a> = <Self::Parameters<
5082                'a,
5083            > as alloy_sol_types::SolType>::Token<'a>;
5084            const SIGNATURE: &'static str = "InvalidProof()";
5085            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5086            #[inline]
5087            fn new<'a>(
5088                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5089            ) -> Self {
5090                tuple.into()
5091            }
5092            #[inline]
5093            fn tokenize(&self) -> Self::Token<'_> {
5094                ()
5095            }
5096        }
5097    };
5098    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5099    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5100```solidity
5101error NoChangeRequired();
5102```*/
5103    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5104    #[derive(Clone)]
5105    pub struct NoChangeRequired {}
5106    #[allow(
5107        non_camel_case_types,
5108        non_snake_case,
5109        clippy::pub_underscore_fields,
5110        clippy::style
5111    )]
5112    const _: () = {
5113        use alloy::sol_types as alloy_sol_types;
5114        #[doc(hidden)]
5115        type UnderlyingSolTuple<'a> = ();
5116        #[doc(hidden)]
5117        type UnderlyingRustTuple<'a> = ();
5118        #[cfg(test)]
5119        #[allow(dead_code, unreachable_patterns)]
5120        fn _type_assertion(
5121            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5122        ) {
5123            match _t {
5124                alloy_sol_types::private::AssertTypeEq::<
5125                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5126                >(_) => {}
5127            }
5128        }
5129        #[automatically_derived]
5130        #[doc(hidden)]
5131        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5132            fn from(value: NoChangeRequired) -> Self {
5133                ()
5134            }
5135        }
5136        #[automatically_derived]
5137        #[doc(hidden)]
5138        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5139            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5140                Self {}
5141            }
5142        }
5143        #[automatically_derived]
5144        impl alloy_sol_types::SolError for NoChangeRequired {
5145            type Parameters<'a> = UnderlyingSolTuple<'a>;
5146            type Token<'a> = <Self::Parameters<
5147                'a,
5148            > as alloy_sol_types::SolType>::Token<'a>;
5149            const SIGNATURE: &'static str = "NoChangeRequired()";
5150            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5151            #[inline]
5152            fn new<'a>(
5153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5154            ) -> Self {
5155                tuple.into()
5156            }
5157            #[inline]
5158            fn tokenize(&self) -> Self::Token<'_> {
5159                ()
5160            }
5161        }
5162    };
5163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5164    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5165```solidity
5166error NotInitializing();
5167```*/
5168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5169    #[derive(Clone)]
5170    pub struct NotInitializing {}
5171    #[allow(
5172        non_camel_case_types,
5173        non_snake_case,
5174        clippy::pub_underscore_fields,
5175        clippy::style
5176    )]
5177    const _: () = {
5178        use alloy::sol_types as alloy_sol_types;
5179        #[doc(hidden)]
5180        type UnderlyingSolTuple<'a> = ();
5181        #[doc(hidden)]
5182        type UnderlyingRustTuple<'a> = ();
5183        #[cfg(test)]
5184        #[allow(dead_code, unreachable_patterns)]
5185        fn _type_assertion(
5186            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5187        ) {
5188            match _t {
5189                alloy_sol_types::private::AssertTypeEq::<
5190                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5191                >(_) => {}
5192            }
5193        }
5194        #[automatically_derived]
5195        #[doc(hidden)]
5196        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5197            fn from(value: NotInitializing) -> Self {
5198                ()
5199            }
5200        }
5201        #[automatically_derived]
5202        #[doc(hidden)]
5203        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5204            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5205                Self {}
5206            }
5207        }
5208        #[automatically_derived]
5209        impl alloy_sol_types::SolError for NotInitializing {
5210            type Parameters<'a> = UnderlyingSolTuple<'a>;
5211            type Token<'a> = <Self::Parameters<
5212                'a,
5213            > as alloy_sol_types::SolType>::Token<'a>;
5214            const SIGNATURE: &'static str = "NotInitializing()";
5215            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5216            #[inline]
5217            fn new<'a>(
5218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5219            ) -> Self {
5220                tuple.into()
5221            }
5222            #[inline]
5223            fn tokenize(&self) -> Self::Token<'_> {
5224                ()
5225            }
5226        }
5227    };
5228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5229    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5230```solidity
5231error OutdatedState();
5232```*/
5233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5234    #[derive(Clone)]
5235    pub struct OutdatedState {}
5236    #[allow(
5237        non_camel_case_types,
5238        non_snake_case,
5239        clippy::pub_underscore_fields,
5240        clippy::style
5241    )]
5242    const _: () = {
5243        use alloy::sol_types as alloy_sol_types;
5244        #[doc(hidden)]
5245        type UnderlyingSolTuple<'a> = ();
5246        #[doc(hidden)]
5247        type UnderlyingRustTuple<'a> = ();
5248        #[cfg(test)]
5249        #[allow(dead_code, unreachable_patterns)]
5250        fn _type_assertion(
5251            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5252        ) {
5253            match _t {
5254                alloy_sol_types::private::AssertTypeEq::<
5255                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5256                >(_) => {}
5257            }
5258        }
5259        #[automatically_derived]
5260        #[doc(hidden)]
5261        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5262            fn from(value: OutdatedState) -> Self {
5263                ()
5264            }
5265        }
5266        #[automatically_derived]
5267        #[doc(hidden)]
5268        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5269            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5270                Self {}
5271            }
5272        }
5273        #[automatically_derived]
5274        impl alloy_sol_types::SolError for OutdatedState {
5275            type Parameters<'a> = UnderlyingSolTuple<'a>;
5276            type Token<'a> = <Self::Parameters<
5277                'a,
5278            > as alloy_sol_types::SolType>::Token<'a>;
5279            const SIGNATURE: &'static str = "OutdatedState()";
5280            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5281            #[inline]
5282            fn new<'a>(
5283                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5284            ) -> Self {
5285                tuple.into()
5286            }
5287            #[inline]
5288            fn tokenize(&self) -> Self::Token<'_> {
5289                ()
5290            }
5291        }
5292    };
5293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5294    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5295```solidity
5296error OwnableInvalidOwner(address owner);
5297```*/
5298    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5299    #[derive(Clone)]
5300    pub struct OwnableInvalidOwner {
5301        #[allow(missing_docs)]
5302        pub owner: alloy::sol_types::private::Address,
5303    }
5304    #[allow(
5305        non_camel_case_types,
5306        non_snake_case,
5307        clippy::pub_underscore_fields,
5308        clippy::style
5309    )]
5310    const _: () = {
5311        use alloy::sol_types as alloy_sol_types;
5312        #[doc(hidden)]
5313        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5314        #[doc(hidden)]
5315        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5316        #[cfg(test)]
5317        #[allow(dead_code, unreachable_patterns)]
5318        fn _type_assertion(
5319            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5320        ) {
5321            match _t {
5322                alloy_sol_types::private::AssertTypeEq::<
5323                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5324                >(_) => {}
5325            }
5326        }
5327        #[automatically_derived]
5328        #[doc(hidden)]
5329        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5330            fn from(value: OwnableInvalidOwner) -> Self {
5331                (value.owner,)
5332            }
5333        }
5334        #[automatically_derived]
5335        #[doc(hidden)]
5336        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5337            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5338                Self { owner: tuple.0 }
5339            }
5340        }
5341        #[automatically_derived]
5342        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5343            type Parameters<'a> = UnderlyingSolTuple<'a>;
5344            type Token<'a> = <Self::Parameters<
5345                'a,
5346            > as alloy_sol_types::SolType>::Token<'a>;
5347            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5348            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5349            #[inline]
5350            fn new<'a>(
5351                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5352            ) -> Self {
5353                tuple.into()
5354            }
5355            #[inline]
5356            fn tokenize(&self) -> Self::Token<'_> {
5357                (
5358                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5359                        &self.owner,
5360                    ),
5361                )
5362            }
5363        }
5364    };
5365    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5366    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5367```solidity
5368error OwnableUnauthorizedAccount(address account);
5369```*/
5370    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5371    #[derive(Clone)]
5372    pub struct OwnableUnauthorizedAccount {
5373        #[allow(missing_docs)]
5374        pub account: alloy::sol_types::private::Address,
5375    }
5376    #[allow(
5377        non_camel_case_types,
5378        non_snake_case,
5379        clippy::pub_underscore_fields,
5380        clippy::style
5381    )]
5382    const _: () = {
5383        use alloy::sol_types as alloy_sol_types;
5384        #[doc(hidden)]
5385        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5386        #[doc(hidden)]
5387        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5388        #[cfg(test)]
5389        #[allow(dead_code, unreachable_patterns)]
5390        fn _type_assertion(
5391            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5392        ) {
5393            match _t {
5394                alloy_sol_types::private::AssertTypeEq::<
5395                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5396                >(_) => {}
5397            }
5398        }
5399        #[automatically_derived]
5400        #[doc(hidden)]
5401        impl ::core::convert::From<OwnableUnauthorizedAccount>
5402        for UnderlyingRustTuple<'_> {
5403            fn from(value: OwnableUnauthorizedAccount) -> Self {
5404                (value.account,)
5405            }
5406        }
5407        #[automatically_derived]
5408        #[doc(hidden)]
5409        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5410        for OwnableUnauthorizedAccount {
5411            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5412                Self { account: tuple.0 }
5413            }
5414        }
5415        #[automatically_derived]
5416        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5417            type Parameters<'a> = UnderlyingSolTuple<'a>;
5418            type Token<'a> = <Self::Parameters<
5419                'a,
5420            > as alloy_sol_types::SolType>::Token<'a>;
5421            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5422            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5423            #[inline]
5424            fn new<'a>(
5425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5426            ) -> Self {
5427                tuple.into()
5428            }
5429            #[inline]
5430            fn tokenize(&self) -> Self::Token<'_> {
5431                (
5432                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5433                        &self.account,
5434                    ),
5435                )
5436            }
5437        }
5438    };
5439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5440    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5441```solidity
5442error ProverNotPermissioned();
5443```*/
5444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5445    #[derive(Clone)]
5446    pub struct ProverNotPermissioned {}
5447    #[allow(
5448        non_camel_case_types,
5449        non_snake_case,
5450        clippy::pub_underscore_fields,
5451        clippy::style
5452    )]
5453    const _: () = {
5454        use alloy::sol_types as alloy_sol_types;
5455        #[doc(hidden)]
5456        type UnderlyingSolTuple<'a> = ();
5457        #[doc(hidden)]
5458        type UnderlyingRustTuple<'a> = ();
5459        #[cfg(test)]
5460        #[allow(dead_code, unreachable_patterns)]
5461        fn _type_assertion(
5462            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5463        ) {
5464            match _t {
5465                alloy_sol_types::private::AssertTypeEq::<
5466                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5467                >(_) => {}
5468            }
5469        }
5470        #[automatically_derived]
5471        #[doc(hidden)]
5472        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5473            fn from(value: ProverNotPermissioned) -> Self {
5474                ()
5475            }
5476        }
5477        #[automatically_derived]
5478        #[doc(hidden)]
5479        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5480            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5481                Self {}
5482            }
5483        }
5484        #[automatically_derived]
5485        impl alloy_sol_types::SolError for ProverNotPermissioned {
5486            type Parameters<'a> = UnderlyingSolTuple<'a>;
5487            type Token<'a> = <Self::Parameters<
5488                'a,
5489            > as alloy_sol_types::SolType>::Token<'a>;
5490            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5491            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5492            #[inline]
5493            fn new<'a>(
5494                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5495            ) -> Self {
5496                tuple.into()
5497            }
5498            #[inline]
5499            fn tokenize(&self) -> Self::Token<'_> {
5500                ()
5501            }
5502        }
5503    };
5504    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5505    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5506```solidity
5507error UUPSUnauthorizedCallContext();
5508```*/
5509    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5510    #[derive(Clone)]
5511    pub struct UUPSUnauthorizedCallContext {}
5512    #[allow(
5513        non_camel_case_types,
5514        non_snake_case,
5515        clippy::pub_underscore_fields,
5516        clippy::style
5517    )]
5518    const _: () = {
5519        use alloy::sol_types as alloy_sol_types;
5520        #[doc(hidden)]
5521        type UnderlyingSolTuple<'a> = ();
5522        #[doc(hidden)]
5523        type UnderlyingRustTuple<'a> = ();
5524        #[cfg(test)]
5525        #[allow(dead_code, unreachable_patterns)]
5526        fn _type_assertion(
5527            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5528        ) {
5529            match _t {
5530                alloy_sol_types::private::AssertTypeEq::<
5531                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5532                >(_) => {}
5533            }
5534        }
5535        #[automatically_derived]
5536        #[doc(hidden)]
5537        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5538        for UnderlyingRustTuple<'_> {
5539            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5540                ()
5541            }
5542        }
5543        #[automatically_derived]
5544        #[doc(hidden)]
5545        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5546        for UUPSUnauthorizedCallContext {
5547            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5548                Self {}
5549            }
5550        }
5551        #[automatically_derived]
5552        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5553            type Parameters<'a> = UnderlyingSolTuple<'a>;
5554            type Token<'a> = <Self::Parameters<
5555                'a,
5556            > as alloy_sol_types::SolType>::Token<'a>;
5557            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5558            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5559            #[inline]
5560            fn new<'a>(
5561                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5562            ) -> Self {
5563                tuple.into()
5564            }
5565            #[inline]
5566            fn tokenize(&self) -> Self::Token<'_> {
5567                ()
5568            }
5569        }
5570    };
5571    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5572    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5573```solidity
5574error UUPSUnsupportedProxiableUUID(bytes32 slot);
5575```*/
5576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5577    #[derive(Clone)]
5578    pub struct UUPSUnsupportedProxiableUUID {
5579        #[allow(missing_docs)]
5580        pub slot: alloy::sol_types::private::FixedBytes<32>,
5581    }
5582    #[allow(
5583        non_camel_case_types,
5584        non_snake_case,
5585        clippy::pub_underscore_fields,
5586        clippy::style
5587    )]
5588    const _: () = {
5589        use alloy::sol_types as alloy_sol_types;
5590        #[doc(hidden)]
5591        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5592        #[doc(hidden)]
5593        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5594        #[cfg(test)]
5595        #[allow(dead_code, unreachable_patterns)]
5596        fn _type_assertion(
5597            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5598        ) {
5599            match _t {
5600                alloy_sol_types::private::AssertTypeEq::<
5601                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5602                >(_) => {}
5603            }
5604        }
5605        #[automatically_derived]
5606        #[doc(hidden)]
5607        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5608        for UnderlyingRustTuple<'_> {
5609            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5610                (value.slot,)
5611            }
5612        }
5613        #[automatically_derived]
5614        #[doc(hidden)]
5615        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5616        for UUPSUnsupportedProxiableUUID {
5617            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5618                Self { slot: tuple.0 }
5619            }
5620        }
5621        #[automatically_derived]
5622        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5623            type Parameters<'a> = UnderlyingSolTuple<'a>;
5624            type Token<'a> = <Self::Parameters<
5625                'a,
5626            > as alloy_sol_types::SolType>::Token<'a>;
5627            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5628            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5629            #[inline]
5630            fn new<'a>(
5631                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5632            ) -> Self {
5633                tuple.into()
5634            }
5635            #[inline]
5636            fn tokenize(&self) -> Self::Token<'_> {
5637                (
5638                    <alloy::sol_types::sol_data::FixedBytes<
5639                        32,
5640                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5641                )
5642            }
5643        }
5644    };
5645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5646    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5647```solidity
5648error WrongStakeTableUsed();
5649```*/
5650    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5651    #[derive(Clone)]
5652    pub struct WrongStakeTableUsed {}
5653    #[allow(
5654        non_camel_case_types,
5655        non_snake_case,
5656        clippy::pub_underscore_fields,
5657        clippy::style
5658    )]
5659    const _: () = {
5660        use alloy::sol_types as alloy_sol_types;
5661        #[doc(hidden)]
5662        type UnderlyingSolTuple<'a> = ();
5663        #[doc(hidden)]
5664        type UnderlyingRustTuple<'a> = ();
5665        #[cfg(test)]
5666        #[allow(dead_code, unreachable_patterns)]
5667        fn _type_assertion(
5668            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5669        ) {
5670            match _t {
5671                alloy_sol_types::private::AssertTypeEq::<
5672                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5673                >(_) => {}
5674            }
5675        }
5676        #[automatically_derived]
5677        #[doc(hidden)]
5678        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5679            fn from(value: WrongStakeTableUsed) -> Self {
5680                ()
5681            }
5682        }
5683        #[automatically_derived]
5684        #[doc(hidden)]
5685        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5686            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5687                Self {}
5688            }
5689        }
5690        #[automatically_derived]
5691        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5692            type Parameters<'a> = UnderlyingSolTuple<'a>;
5693            type Token<'a> = <Self::Parameters<
5694                'a,
5695            > as alloy_sol_types::SolType>::Token<'a>;
5696            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5697            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5698            #[inline]
5699            fn new<'a>(
5700                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5701            ) -> Self {
5702                tuple.into()
5703            }
5704            #[inline]
5705            fn tokenize(&self) -> Self::Token<'_> {
5706                ()
5707            }
5708        }
5709    };
5710    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5711    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5712```solidity
5713event Initialized(uint64 version);
5714```*/
5715    #[allow(
5716        non_camel_case_types,
5717        non_snake_case,
5718        clippy::pub_underscore_fields,
5719        clippy::style
5720    )]
5721    #[derive(Clone)]
5722    pub struct Initialized {
5723        #[allow(missing_docs)]
5724        pub version: u64,
5725    }
5726    #[allow(
5727        non_camel_case_types,
5728        non_snake_case,
5729        clippy::pub_underscore_fields,
5730        clippy::style
5731    )]
5732    const _: () = {
5733        use alloy::sol_types as alloy_sol_types;
5734        #[automatically_derived]
5735        impl alloy_sol_types::SolEvent for Initialized {
5736            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5737            type DataToken<'a> = <Self::DataTuple<
5738                'a,
5739            > as alloy_sol_types::SolType>::Token<'a>;
5740            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5741            const SIGNATURE: &'static str = "Initialized(uint64)";
5742            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5743                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5744                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5745                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5746            ]);
5747            const ANONYMOUS: bool = false;
5748            #[allow(unused_variables)]
5749            #[inline]
5750            fn new(
5751                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5752                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5753            ) -> Self {
5754                Self { version: data.0 }
5755            }
5756            #[inline]
5757            fn check_signature(
5758                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5759            ) -> alloy_sol_types::Result<()> {
5760                if topics.0 != Self::SIGNATURE_HASH {
5761                    return Err(
5762                        alloy_sol_types::Error::invalid_event_signature_hash(
5763                            Self::SIGNATURE,
5764                            topics.0,
5765                            Self::SIGNATURE_HASH,
5766                        ),
5767                    );
5768                }
5769                Ok(())
5770            }
5771            #[inline]
5772            fn tokenize_body(&self) -> Self::DataToken<'_> {
5773                (
5774                    <alloy::sol_types::sol_data::Uint<
5775                        64,
5776                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5777                )
5778            }
5779            #[inline]
5780            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5781                (Self::SIGNATURE_HASH.into(),)
5782            }
5783            #[inline]
5784            fn encode_topics_raw(
5785                &self,
5786                out: &mut [alloy_sol_types::abi::token::WordToken],
5787            ) -> alloy_sol_types::Result<()> {
5788                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5789                    return Err(alloy_sol_types::Error::Overrun);
5790                }
5791                out[0usize] = alloy_sol_types::abi::token::WordToken(
5792                    Self::SIGNATURE_HASH,
5793                );
5794                Ok(())
5795            }
5796        }
5797        #[automatically_derived]
5798        impl alloy_sol_types::private::IntoLogData for Initialized {
5799            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5800                From::from(self)
5801            }
5802            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5803                From::from(&self)
5804            }
5805        }
5806        #[automatically_derived]
5807        impl From<&Initialized> for alloy_sol_types::private::LogData {
5808            #[inline]
5809            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5810                alloy_sol_types::SolEvent::encode_log_data(this)
5811            }
5812        }
5813    };
5814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5815    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
5816```solidity
5817event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
5818```*/
5819    #[allow(
5820        non_camel_case_types,
5821        non_snake_case,
5822        clippy::pub_underscore_fields,
5823        clippy::style
5824    )]
5825    #[derive(Clone)]
5826    pub struct NewState {
5827        #[allow(missing_docs)]
5828        pub viewNum: u64,
5829        #[allow(missing_docs)]
5830        pub blockHeight: u64,
5831        #[allow(missing_docs)]
5832        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
5833    }
5834    #[allow(
5835        non_camel_case_types,
5836        non_snake_case,
5837        clippy::pub_underscore_fields,
5838        clippy::style
5839    )]
5840    const _: () = {
5841        use alloy::sol_types as alloy_sol_types;
5842        #[automatically_derived]
5843        impl alloy_sol_types::SolEvent for NewState {
5844            type DataTuple<'a> = (BN254::ScalarField,);
5845            type DataToken<'a> = <Self::DataTuple<
5846                'a,
5847            > as alloy_sol_types::SolType>::Token<'a>;
5848            type TopicList = (
5849                alloy_sol_types::sol_data::FixedBytes<32>,
5850                alloy::sol_types::sol_data::Uint<64>,
5851                alloy::sol_types::sol_data::Uint<64>,
5852            );
5853            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
5854            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5855                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
5856                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
5857                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
5858            ]);
5859            const ANONYMOUS: bool = false;
5860            #[allow(unused_variables)]
5861            #[inline]
5862            fn new(
5863                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5864                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5865            ) -> Self {
5866                Self {
5867                    viewNum: topics.1,
5868                    blockHeight: topics.2,
5869                    blockCommRoot: data.0,
5870                }
5871            }
5872            #[inline]
5873            fn check_signature(
5874                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5875            ) -> alloy_sol_types::Result<()> {
5876                if topics.0 != Self::SIGNATURE_HASH {
5877                    return Err(
5878                        alloy_sol_types::Error::invalid_event_signature_hash(
5879                            Self::SIGNATURE,
5880                            topics.0,
5881                            Self::SIGNATURE_HASH,
5882                        ),
5883                    );
5884                }
5885                Ok(())
5886            }
5887            #[inline]
5888            fn tokenize_body(&self) -> Self::DataToken<'_> {
5889                (
5890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
5891                        &self.blockCommRoot,
5892                    ),
5893                )
5894            }
5895            #[inline]
5896            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5897                (
5898                    Self::SIGNATURE_HASH.into(),
5899                    self.viewNum.clone(),
5900                    self.blockHeight.clone(),
5901                )
5902            }
5903            #[inline]
5904            fn encode_topics_raw(
5905                &self,
5906                out: &mut [alloy_sol_types::abi::token::WordToken],
5907            ) -> alloy_sol_types::Result<()> {
5908                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5909                    return Err(alloy_sol_types::Error::Overrun);
5910                }
5911                out[0usize] = alloy_sol_types::abi::token::WordToken(
5912                    Self::SIGNATURE_HASH,
5913                );
5914                out[1usize] = <alloy::sol_types::sol_data::Uint<
5915                    64,
5916                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
5917                out[2usize] = <alloy::sol_types::sol_data::Uint<
5918                    64,
5919                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
5920                Ok(())
5921            }
5922        }
5923        #[automatically_derived]
5924        impl alloy_sol_types::private::IntoLogData for NewState {
5925            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5926                From::from(self)
5927            }
5928            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5929                From::from(&self)
5930            }
5931        }
5932        #[automatically_derived]
5933        impl From<&NewState> for alloy_sol_types::private::LogData {
5934            #[inline]
5935            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
5936                alloy_sol_types::SolEvent::encode_log_data(this)
5937            }
5938        }
5939    };
5940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5941    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
5942```solidity
5943event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
5944```*/
5945    #[allow(
5946        non_camel_case_types,
5947        non_snake_case,
5948        clippy::pub_underscore_fields,
5949        clippy::style
5950    )]
5951    #[derive(Clone)]
5952    pub struct OwnershipTransferred {
5953        #[allow(missing_docs)]
5954        pub previousOwner: alloy::sol_types::private::Address,
5955        #[allow(missing_docs)]
5956        pub newOwner: alloy::sol_types::private::Address,
5957    }
5958    #[allow(
5959        non_camel_case_types,
5960        non_snake_case,
5961        clippy::pub_underscore_fields,
5962        clippy::style
5963    )]
5964    const _: () = {
5965        use alloy::sol_types as alloy_sol_types;
5966        #[automatically_derived]
5967        impl alloy_sol_types::SolEvent for OwnershipTransferred {
5968            type DataTuple<'a> = ();
5969            type DataToken<'a> = <Self::DataTuple<
5970                'a,
5971            > as alloy_sol_types::SolType>::Token<'a>;
5972            type TopicList = (
5973                alloy_sol_types::sol_data::FixedBytes<32>,
5974                alloy::sol_types::sol_data::Address,
5975                alloy::sol_types::sol_data::Address,
5976            );
5977            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
5978            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5979                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
5980                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
5981                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
5982            ]);
5983            const ANONYMOUS: bool = false;
5984            #[allow(unused_variables)]
5985            #[inline]
5986            fn new(
5987                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5988                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5989            ) -> Self {
5990                Self {
5991                    previousOwner: topics.1,
5992                    newOwner: topics.2,
5993                }
5994            }
5995            #[inline]
5996            fn check_signature(
5997                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5998            ) -> alloy_sol_types::Result<()> {
5999                if topics.0 != Self::SIGNATURE_HASH {
6000                    return Err(
6001                        alloy_sol_types::Error::invalid_event_signature_hash(
6002                            Self::SIGNATURE,
6003                            topics.0,
6004                            Self::SIGNATURE_HASH,
6005                        ),
6006                    );
6007                }
6008                Ok(())
6009            }
6010            #[inline]
6011            fn tokenize_body(&self) -> Self::DataToken<'_> {
6012                ()
6013            }
6014            #[inline]
6015            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6016                (
6017                    Self::SIGNATURE_HASH.into(),
6018                    self.previousOwner.clone(),
6019                    self.newOwner.clone(),
6020                )
6021            }
6022            #[inline]
6023            fn encode_topics_raw(
6024                &self,
6025                out: &mut [alloy_sol_types::abi::token::WordToken],
6026            ) -> alloy_sol_types::Result<()> {
6027                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6028                    return Err(alloy_sol_types::Error::Overrun);
6029                }
6030                out[0usize] = alloy_sol_types::abi::token::WordToken(
6031                    Self::SIGNATURE_HASH,
6032                );
6033                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6034                    &self.previousOwner,
6035                );
6036                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6037                    &self.newOwner,
6038                );
6039                Ok(())
6040            }
6041        }
6042        #[automatically_derived]
6043        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6044            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6045                From::from(self)
6046            }
6047            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6048                From::from(&self)
6049            }
6050        }
6051        #[automatically_derived]
6052        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6053            #[inline]
6054            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6055                alloy_sol_types::SolEvent::encode_log_data(this)
6056            }
6057        }
6058    };
6059    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6060    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6061```solidity
6062event PermissionedProverNotRequired();
6063```*/
6064    #[allow(
6065        non_camel_case_types,
6066        non_snake_case,
6067        clippy::pub_underscore_fields,
6068        clippy::style
6069    )]
6070    #[derive(Clone)]
6071    pub struct PermissionedProverNotRequired {}
6072    #[allow(
6073        non_camel_case_types,
6074        non_snake_case,
6075        clippy::pub_underscore_fields,
6076        clippy::style
6077    )]
6078    const _: () = {
6079        use alloy::sol_types as alloy_sol_types;
6080        #[automatically_derived]
6081        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6082            type DataTuple<'a> = ();
6083            type DataToken<'a> = <Self::DataTuple<
6084                'a,
6085            > as alloy_sol_types::SolType>::Token<'a>;
6086            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6087            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6088            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6089                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6090                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6091                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6092            ]);
6093            const ANONYMOUS: bool = false;
6094            #[allow(unused_variables)]
6095            #[inline]
6096            fn new(
6097                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6098                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6099            ) -> Self {
6100                Self {}
6101            }
6102            #[inline]
6103            fn check_signature(
6104                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6105            ) -> alloy_sol_types::Result<()> {
6106                if topics.0 != Self::SIGNATURE_HASH {
6107                    return Err(
6108                        alloy_sol_types::Error::invalid_event_signature_hash(
6109                            Self::SIGNATURE,
6110                            topics.0,
6111                            Self::SIGNATURE_HASH,
6112                        ),
6113                    );
6114                }
6115                Ok(())
6116            }
6117            #[inline]
6118            fn tokenize_body(&self) -> Self::DataToken<'_> {
6119                ()
6120            }
6121            #[inline]
6122            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6123                (Self::SIGNATURE_HASH.into(),)
6124            }
6125            #[inline]
6126            fn encode_topics_raw(
6127                &self,
6128                out: &mut [alloy_sol_types::abi::token::WordToken],
6129            ) -> alloy_sol_types::Result<()> {
6130                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6131                    return Err(alloy_sol_types::Error::Overrun);
6132                }
6133                out[0usize] = alloy_sol_types::abi::token::WordToken(
6134                    Self::SIGNATURE_HASH,
6135                );
6136                Ok(())
6137            }
6138        }
6139        #[automatically_derived]
6140        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6141            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6142                From::from(self)
6143            }
6144            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6145                From::from(&self)
6146            }
6147        }
6148        #[automatically_derived]
6149        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6150            #[inline]
6151            fn from(
6152                this: &PermissionedProverNotRequired,
6153            ) -> alloy_sol_types::private::LogData {
6154                alloy_sol_types::SolEvent::encode_log_data(this)
6155            }
6156        }
6157    };
6158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6159    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6160```solidity
6161event PermissionedProverRequired(address permissionedProver);
6162```*/
6163    #[allow(
6164        non_camel_case_types,
6165        non_snake_case,
6166        clippy::pub_underscore_fields,
6167        clippy::style
6168    )]
6169    #[derive(Clone)]
6170    pub struct PermissionedProverRequired {
6171        #[allow(missing_docs)]
6172        pub permissionedProver: alloy::sol_types::private::Address,
6173    }
6174    #[allow(
6175        non_camel_case_types,
6176        non_snake_case,
6177        clippy::pub_underscore_fields,
6178        clippy::style
6179    )]
6180    const _: () = {
6181        use alloy::sol_types as alloy_sol_types;
6182        #[automatically_derived]
6183        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6184            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6185            type DataToken<'a> = <Self::DataTuple<
6186                'a,
6187            > as alloy_sol_types::SolType>::Token<'a>;
6188            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6189            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6190            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6191                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6192                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6193                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6194            ]);
6195            const ANONYMOUS: bool = false;
6196            #[allow(unused_variables)]
6197            #[inline]
6198            fn new(
6199                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6200                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6201            ) -> Self {
6202                Self { permissionedProver: data.0 }
6203            }
6204            #[inline]
6205            fn check_signature(
6206                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6207            ) -> alloy_sol_types::Result<()> {
6208                if topics.0 != Self::SIGNATURE_HASH {
6209                    return Err(
6210                        alloy_sol_types::Error::invalid_event_signature_hash(
6211                            Self::SIGNATURE,
6212                            topics.0,
6213                            Self::SIGNATURE_HASH,
6214                        ),
6215                    );
6216                }
6217                Ok(())
6218            }
6219            #[inline]
6220            fn tokenize_body(&self) -> Self::DataToken<'_> {
6221                (
6222                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6223                        &self.permissionedProver,
6224                    ),
6225                )
6226            }
6227            #[inline]
6228            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6229                (Self::SIGNATURE_HASH.into(),)
6230            }
6231            #[inline]
6232            fn encode_topics_raw(
6233                &self,
6234                out: &mut [alloy_sol_types::abi::token::WordToken],
6235            ) -> alloy_sol_types::Result<()> {
6236                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6237                    return Err(alloy_sol_types::Error::Overrun);
6238                }
6239                out[0usize] = alloy_sol_types::abi::token::WordToken(
6240                    Self::SIGNATURE_HASH,
6241                );
6242                Ok(())
6243            }
6244        }
6245        #[automatically_derived]
6246        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6247            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6248                From::from(self)
6249            }
6250            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6251                From::from(&self)
6252            }
6253        }
6254        #[automatically_derived]
6255        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6256            #[inline]
6257            fn from(
6258                this: &PermissionedProverRequired,
6259            ) -> alloy_sol_types::private::LogData {
6260                alloy_sol_types::SolEvent::encode_log_data(this)
6261            }
6262        }
6263    };
6264    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6265    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6266```solidity
6267event Upgrade(address implementation);
6268```*/
6269    #[allow(
6270        non_camel_case_types,
6271        non_snake_case,
6272        clippy::pub_underscore_fields,
6273        clippy::style
6274    )]
6275    #[derive(Clone)]
6276    pub struct Upgrade {
6277        #[allow(missing_docs)]
6278        pub implementation: alloy::sol_types::private::Address,
6279    }
6280    #[allow(
6281        non_camel_case_types,
6282        non_snake_case,
6283        clippy::pub_underscore_fields,
6284        clippy::style
6285    )]
6286    const _: () = {
6287        use alloy::sol_types as alloy_sol_types;
6288        #[automatically_derived]
6289        impl alloy_sol_types::SolEvent for Upgrade {
6290            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6291            type DataToken<'a> = <Self::DataTuple<
6292                'a,
6293            > as alloy_sol_types::SolType>::Token<'a>;
6294            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6295            const SIGNATURE: &'static str = "Upgrade(address)";
6296            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6297                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6298                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6299                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6300            ]);
6301            const ANONYMOUS: bool = false;
6302            #[allow(unused_variables)]
6303            #[inline]
6304            fn new(
6305                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6306                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6307            ) -> Self {
6308                Self { implementation: data.0 }
6309            }
6310            #[inline]
6311            fn check_signature(
6312                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6313            ) -> alloy_sol_types::Result<()> {
6314                if topics.0 != Self::SIGNATURE_HASH {
6315                    return Err(
6316                        alloy_sol_types::Error::invalid_event_signature_hash(
6317                            Self::SIGNATURE,
6318                            topics.0,
6319                            Self::SIGNATURE_HASH,
6320                        ),
6321                    );
6322                }
6323                Ok(())
6324            }
6325            #[inline]
6326            fn tokenize_body(&self) -> Self::DataToken<'_> {
6327                (
6328                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6329                        &self.implementation,
6330                    ),
6331                )
6332            }
6333            #[inline]
6334            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6335                (Self::SIGNATURE_HASH.into(),)
6336            }
6337            #[inline]
6338            fn encode_topics_raw(
6339                &self,
6340                out: &mut [alloy_sol_types::abi::token::WordToken],
6341            ) -> alloy_sol_types::Result<()> {
6342                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6343                    return Err(alloy_sol_types::Error::Overrun);
6344                }
6345                out[0usize] = alloy_sol_types::abi::token::WordToken(
6346                    Self::SIGNATURE_HASH,
6347                );
6348                Ok(())
6349            }
6350        }
6351        #[automatically_derived]
6352        impl alloy_sol_types::private::IntoLogData for Upgrade {
6353            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6354                From::from(self)
6355            }
6356            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6357                From::from(&self)
6358            }
6359        }
6360        #[automatically_derived]
6361        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6362            #[inline]
6363            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6364                alloy_sol_types::SolEvent::encode_log_data(this)
6365            }
6366        }
6367    };
6368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6369    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6370```solidity
6371event Upgraded(address indexed implementation);
6372```*/
6373    #[allow(
6374        non_camel_case_types,
6375        non_snake_case,
6376        clippy::pub_underscore_fields,
6377        clippy::style
6378    )]
6379    #[derive(Clone)]
6380    pub struct Upgraded {
6381        #[allow(missing_docs)]
6382        pub implementation: alloy::sol_types::private::Address,
6383    }
6384    #[allow(
6385        non_camel_case_types,
6386        non_snake_case,
6387        clippy::pub_underscore_fields,
6388        clippy::style
6389    )]
6390    const _: () = {
6391        use alloy::sol_types as alloy_sol_types;
6392        #[automatically_derived]
6393        impl alloy_sol_types::SolEvent for Upgraded {
6394            type DataTuple<'a> = ();
6395            type DataToken<'a> = <Self::DataTuple<
6396                'a,
6397            > as alloy_sol_types::SolType>::Token<'a>;
6398            type TopicList = (
6399                alloy_sol_types::sol_data::FixedBytes<32>,
6400                alloy::sol_types::sol_data::Address,
6401            );
6402            const SIGNATURE: &'static str = "Upgraded(address)";
6403            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6404                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6405                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6406                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6407            ]);
6408            const ANONYMOUS: bool = false;
6409            #[allow(unused_variables)]
6410            #[inline]
6411            fn new(
6412                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6413                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6414            ) -> Self {
6415                Self { implementation: topics.1 }
6416            }
6417            #[inline]
6418            fn check_signature(
6419                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6420            ) -> alloy_sol_types::Result<()> {
6421                if topics.0 != Self::SIGNATURE_HASH {
6422                    return Err(
6423                        alloy_sol_types::Error::invalid_event_signature_hash(
6424                            Self::SIGNATURE,
6425                            topics.0,
6426                            Self::SIGNATURE_HASH,
6427                        ),
6428                    );
6429                }
6430                Ok(())
6431            }
6432            #[inline]
6433            fn tokenize_body(&self) -> Self::DataToken<'_> {
6434                ()
6435            }
6436            #[inline]
6437            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6438                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6439            }
6440            #[inline]
6441            fn encode_topics_raw(
6442                &self,
6443                out: &mut [alloy_sol_types::abi::token::WordToken],
6444            ) -> alloy_sol_types::Result<()> {
6445                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6446                    return Err(alloy_sol_types::Error::Overrun);
6447                }
6448                out[0usize] = alloy_sol_types::abi::token::WordToken(
6449                    Self::SIGNATURE_HASH,
6450                );
6451                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6452                    &self.implementation,
6453                );
6454                Ok(())
6455            }
6456        }
6457        #[automatically_derived]
6458        impl alloy_sol_types::private::IntoLogData for Upgraded {
6459            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6460                From::from(self)
6461            }
6462            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6463                From::from(&self)
6464            }
6465        }
6466        #[automatically_derived]
6467        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6468            #[inline]
6469            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6470                alloy_sol_types::SolEvent::encode_log_data(this)
6471            }
6472        }
6473    };
6474    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6475    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6476```solidity
6477function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6478```*/
6479    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6480    #[derive(Clone)]
6481    pub struct UPGRADE_INTERFACE_VERSIONCall {}
6482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6483    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6485    #[derive(Clone)]
6486    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6487        #[allow(missing_docs)]
6488        pub _0: alloy::sol_types::private::String,
6489    }
6490    #[allow(
6491        non_camel_case_types,
6492        non_snake_case,
6493        clippy::pub_underscore_fields,
6494        clippy::style
6495    )]
6496    const _: () = {
6497        use alloy::sol_types as alloy_sol_types;
6498        {
6499            #[doc(hidden)]
6500            type UnderlyingSolTuple<'a> = ();
6501            #[doc(hidden)]
6502            type UnderlyingRustTuple<'a> = ();
6503            #[cfg(test)]
6504            #[allow(dead_code, unreachable_patterns)]
6505            fn _type_assertion(
6506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6507            ) {
6508                match _t {
6509                    alloy_sol_types::private::AssertTypeEq::<
6510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6511                    >(_) => {}
6512                }
6513            }
6514            #[automatically_derived]
6515            #[doc(hidden)]
6516            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6517            for UnderlyingRustTuple<'_> {
6518                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6519                    ()
6520                }
6521            }
6522            #[automatically_derived]
6523            #[doc(hidden)]
6524            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6525            for UPGRADE_INTERFACE_VERSIONCall {
6526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6527                    Self {}
6528                }
6529            }
6530        }
6531        {
6532            #[doc(hidden)]
6533            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6534            #[doc(hidden)]
6535            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6536            #[cfg(test)]
6537            #[allow(dead_code, unreachable_patterns)]
6538            fn _type_assertion(
6539                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6540            ) {
6541                match _t {
6542                    alloy_sol_types::private::AssertTypeEq::<
6543                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6544                    >(_) => {}
6545                }
6546            }
6547            #[automatically_derived]
6548            #[doc(hidden)]
6549            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6550            for UnderlyingRustTuple<'_> {
6551                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6552                    (value._0,)
6553                }
6554            }
6555            #[automatically_derived]
6556            #[doc(hidden)]
6557            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6558            for UPGRADE_INTERFACE_VERSIONReturn {
6559                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6560                    Self { _0: tuple.0 }
6561                }
6562            }
6563        }
6564        #[automatically_derived]
6565        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6566            type Parameters<'a> = ();
6567            type Token<'a> = <Self::Parameters<
6568                'a,
6569            > as alloy_sol_types::SolType>::Token<'a>;
6570            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6571            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6572            type ReturnToken<'a> = <Self::ReturnTuple<
6573                'a,
6574            > as alloy_sol_types::SolType>::Token<'a>;
6575            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6576            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6577            #[inline]
6578            fn new<'a>(
6579                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6580            ) -> Self {
6581                tuple.into()
6582            }
6583            #[inline]
6584            fn tokenize(&self) -> Self::Token<'_> {
6585                ()
6586            }
6587            #[inline]
6588            fn abi_decode_returns(
6589                data: &[u8],
6590                validate: bool,
6591            ) -> alloy_sol_types::Result<Self::Return> {
6592                <Self::ReturnTuple<
6593                    '_,
6594                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6595                    .map(Into::into)
6596            }
6597        }
6598    };
6599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6600    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6601```solidity
6602function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6603```*/
6604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6605    #[derive(Clone)]
6606    pub struct _getVkCall {}
6607    #[derive()]
6608    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6610    #[derive(Clone)]
6611    pub struct _getVkReturn {
6612        #[allow(missing_docs)]
6613        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6614    }
6615    #[allow(
6616        non_camel_case_types,
6617        non_snake_case,
6618        clippy::pub_underscore_fields,
6619        clippy::style
6620    )]
6621    const _: () = {
6622        use alloy::sol_types as alloy_sol_types;
6623        {
6624            #[doc(hidden)]
6625            type UnderlyingSolTuple<'a> = ();
6626            #[doc(hidden)]
6627            type UnderlyingRustTuple<'a> = ();
6628            #[cfg(test)]
6629            #[allow(dead_code, unreachable_patterns)]
6630            fn _type_assertion(
6631                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6632            ) {
6633                match _t {
6634                    alloy_sol_types::private::AssertTypeEq::<
6635                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6636                    >(_) => {}
6637                }
6638            }
6639            #[automatically_derived]
6640            #[doc(hidden)]
6641            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6642                fn from(value: _getVkCall) -> Self {
6643                    ()
6644                }
6645            }
6646            #[automatically_derived]
6647            #[doc(hidden)]
6648            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6649                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6650                    Self {}
6651                }
6652            }
6653        }
6654        {
6655            #[doc(hidden)]
6656            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6657            #[doc(hidden)]
6658            type UnderlyingRustTuple<'a> = (
6659                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6660            );
6661            #[cfg(test)]
6662            #[allow(dead_code, unreachable_patterns)]
6663            fn _type_assertion(
6664                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6665            ) {
6666                match _t {
6667                    alloy_sol_types::private::AssertTypeEq::<
6668                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6669                    >(_) => {}
6670                }
6671            }
6672            #[automatically_derived]
6673            #[doc(hidden)]
6674            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6675                fn from(value: _getVkReturn) -> Self {
6676                    (value.vk,)
6677                }
6678            }
6679            #[automatically_derived]
6680            #[doc(hidden)]
6681            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6683                    Self { vk: tuple.0 }
6684                }
6685            }
6686        }
6687        #[automatically_derived]
6688        impl alloy_sol_types::SolCall for _getVkCall {
6689            type Parameters<'a> = ();
6690            type Token<'a> = <Self::Parameters<
6691                'a,
6692            > as alloy_sol_types::SolType>::Token<'a>;
6693            type Return = _getVkReturn;
6694            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6695            type ReturnToken<'a> = <Self::ReturnTuple<
6696                'a,
6697            > as alloy_sol_types::SolType>::Token<'a>;
6698            const SIGNATURE: &'static str = "_getVk()";
6699            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6700            #[inline]
6701            fn new<'a>(
6702                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6703            ) -> Self {
6704                tuple.into()
6705            }
6706            #[inline]
6707            fn tokenize(&self) -> Self::Token<'_> {
6708                ()
6709            }
6710            #[inline]
6711            fn abi_decode_returns(
6712                data: &[u8],
6713                validate: bool,
6714            ) -> alloy_sol_types::Result<Self::Return> {
6715                <Self::ReturnTuple<
6716                    '_,
6717                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6718                    .map(Into::into)
6719            }
6720        }
6721    };
6722    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6723    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
6724```solidity
6725function currentBlockNumber() external view returns (uint256);
6726```*/
6727    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6728    #[derive(Clone)]
6729    pub struct currentBlockNumberCall {}
6730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6731    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
6732    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6733    #[derive(Clone)]
6734    pub struct currentBlockNumberReturn {
6735        #[allow(missing_docs)]
6736        pub _0: alloy::sol_types::private::primitives::aliases::U256,
6737    }
6738    #[allow(
6739        non_camel_case_types,
6740        non_snake_case,
6741        clippy::pub_underscore_fields,
6742        clippy::style
6743    )]
6744    const _: () = {
6745        use alloy::sol_types as alloy_sol_types;
6746        {
6747            #[doc(hidden)]
6748            type UnderlyingSolTuple<'a> = ();
6749            #[doc(hidden)]
6750            type UnderlyingRustTuple<'a> = ();
6751            #[cfg(test)]
6752            #[allow(dead_code, unreachable_patterns)]
6753            fn _type_assertion(
6754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6755            ) {
6756                match _t {
6757                    alloy_sol_types::private::AssertTypeEq::<
6758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6759                    >(_) => {}
6760                }
6761            }
6762            #[automatically_derived]
6763            #[doc(hidden)]
6764            impl ::core::convert::From<currentBlockNumberCall>
6765            for UnderlyingRustTuple<'_> {
6766                fn from(value: currentBlockNumberCall) -> Self {
6767                    ()
6768                }
6769            }
6770            #[automatically_derived]
6771            #[doc(hidden)]
6772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6773            for currentBlockNumberCall {
6774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6775                    Self {}
6776                }
6777            }
6778        }
6779        {
6780            #[doc(hidden)]
6781            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6782            #[doc(hidden)]
6783            type UnderlyingRustTuple<'a> = (
6784                alloy::sol_types::private::primitives::aliases::U256,
6785            );
6786            #[cfg(test)]
6787            #[allow(dead_code, unreachable_patterns)]
6788            fn _type_assertion(
6789                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6790            ) {
6791                match _t {
6792                    alloy_sol_types::private::AssertTypeEq::<
6793                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6794                    >(_) => {}
6795                }
6796            }
6797            #[automatically_derived]
6798            #[doc(hidden)]
6799            impl ::core::convert::From<currentBlockNumberReturn>
6800            for UnderlyingRustTuple<'_> {
6801                fn from(value: currentBlockNumberReturn) -> Self {
6802                    (value._0,)
6803                }
6804            }
6805            #[automatically_derived]
6806            #[doc(hidden)]
6807            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6808            for currentBlockNumberReturn {
6809                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6810                    Self { _0: tuple.0 }
6811                }
6812            }
6813        }
6814        #[automatically_derived]
6815        impl alloy_sol_types::SolCall for currentBlockNumberCall {
6816            type Parameters<'a> = ();
6817            type Token<'a> = <Self::Parameters<
6818                'a,
6819            > as alloy_sol_types::SolType>::Token<'a>;
6820            type Return = currentBlockNumberReturn;
6821            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6822            type ReturnToken<'a> = <Self::ReturnTuple<
6823                'a,
6824            > as alloy_sol_types::SolType>::Token<'a>;
6825            const SIGNATURE: &'static str = "currentBlockNumber()";
6826            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
6827            #[inline]
6828            fn new<'a>(
6829                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6830            ) -> Self {
6831                tuple.into()
6832            }
6833            #[inline]
6834            fn tokenize(&self) -> Self::Token<'_> {
6835                ()
6836            }
6837            #[inline]
6838            fn abi_decode_returns(
6839                data: &[u8],
6840                validate: bool,
6841            ) -> alloy_sol_types::Result<Self::Return> {
6842                <Self::ReturnTuple<
6843                    '_,
6844                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6845                    .map(Into::into)
6846            }
6847        }
6848    };
6849    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6850    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
6851```solidity
6852function disablePermissionedProverMode() external;
6853```*/
6854    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6855    #[derive(Clone)]
6856    pub struct disablePermissionedProverModeCall {}
6857    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
6858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6859    #[derive(Clone)]
6860    pub struct disablePermissionedProverModeReturn {}
6861    #[allow(
6862        non_camel_case_types,
6863        non_snake_case,
6864        clippy::pub_underscore_fields,
6865        clippy::style
6866    )]
6867    const _: () = {
6868        use alloy::sol_types as alloy_sol_types;
6869        {
6870            #[doc(hidden)]
6871            type UnderlyingSolTuple<'a> = ();
6872            #[doc(hidden)]
6873            type UnderlyingRustTuple<'a> = ();
6874            #[cfg(test)]
6875            #[allow(dead_code, unreachable_patterns)]
6876            fn _type_assertion(
6877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6878            ) {
6879                match _t {
6880                    alloy_sol_types::private::AssertTypeEq::<
6881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6882                    >(_) => {}
6883                }
6884            }
6885            #[automatically_derived]
6886            #[doc(hidden)]
6887            impl ::core::convert::From<disablePermissionedProverModeCall>
6888            for UnderlyingRustTuple<'_> {
6889                fn from(value: disablePermissionedProverModeCall) -> Self {
6890                    ()
6891                }
6892            }
6893            #[automatically_derived]
6894            #[doc(hidden)]
6895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6896            for disablePermissionedProverModeCall {
6897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6898                    Self {}
6899                }
6900            }
6901        }
6902        {
6903            #[doc(hidden)]
6904            type UnderlyingSolTuple<'a> = ();
6905            #[doc(hidden)]
6906            type UnderlyingRustTuple<'a> = ();
6907            #[cfg(test)]
6908            #[allow(dead_code, unreachable_patterns)]
6909            fn _type_assertion(
6910                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6911            ) {
6912                match _t {
6913                    alloy_sol_types::private::AssertTypeEq::<
6914                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6915                    >(_) => {}
6916                }
6917            }
6918            #[automatically_derived]
6919            #[doc(hidden)]
6920            impl ::core::convert::From<disablePermissionedProverModeReturn>
6921            for UnderlyingRustTuple<'_> {
6922                fn from(value: disablePermissionedProverModeReturn) -> Self {
6923                    ()
6924                }
6925            }
6926            #[automatically_derived]
6927            #[doc(hidden)]
6928            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6929            for disablePermissionedProverModeReturn {
6930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6931                    Self {}
6932                }
6933            }
6934        }
6935        #[automatically_derived]
6936        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
6937            type Parameters<'a> = ();
6938            type Token<'a> = <Self::Parameters<
6939                'a,
6940            > as alloy_sol_types::SolType>::Token<'a>;
6941            type Return = disablePermissionedProverModeReturn;
6942            type ReturnTuple<'a> = ();
6943            type ReturnToken<'a> = <Self::ReturnTuple<
6944                'a,
6945            > as alloy_sol_types::SolType>::Token<'a>;
6946            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
6947            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
6948            #[inline]
6949            fn new<'a>(
6950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6951            ) -> Self {
6952                tuple.into()
6953            }
6954            #[inline]
6955            fn tokenize(&self) -> Self::Token<'_> {
6956                ()
6957            }
6958            #[inline]
6959            fn abi_decode_returns(
6960                data: &[u8],
6961                validate: bool,
6962            ) -> alloy_sol_types::Result<Self::Return> {
6963                <Self::ReturnTuple<
6964                    '_,
6965                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
6966                    .map(Into::into)
6967            }
6968        }
6969    };
6970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6971    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
6972```solidity
6973function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
6974```*/
6975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6976    #[derive(Clone)]
6977    pub struct finalizedStateCall {}
6978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6979    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
6980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6981    #[derive(Clone)]
6982    pub struct finalizedStateReturn {
6983        #[allow(missing_docs)]
6984        pub viewNum: u64,
6985        #[allow(missing_docs)]
6986        pub blockHeight: u64,
6987        #[allow(missing_docs)]
6988        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6989    }
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    const _: () = {
6997        use alloy::sol_types as alloy_sol_types;
6998        {
6999            #[doc(hidden)]
7000            type UnderlyingSolTuple<'a> = ();
7001            #[doc(hidden)]
7002            type UnderlyingRustTuple<'a> = ();
7003            #[cfg(test)]
7004            #[allow(dead_code, unreachable_patterns)]
7005            fn _type_assertion(
7006                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7007            ) {
7008                match _t {
7009                    alloy_sol_types::private::AssertTypeEq::<
7010                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7011                    >(_) => {}
7012                }
7013            }
7014            #[automatically_derived]
7015            #[doc(hidden)]
7016            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7017                fn from(value: finalizedStateCall) -> Self {
7018                    ()
7019                }
7020            }
7021            #[automatically_derived]
7022            #[doc(hidden)]
7023            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7025                    Self {}
7026                }
7027            }
7028        }
7029        {
7030            #[doc(hidden)]
7031            type UnderlyingSolTuple<'a> = (
7032                alloy::sol_types::sol_data::Uint<64>,
7033                alloy::sol_types::sol_data::Uint<64>,
7034                BN254::ScalarField,
7035            );
7036            #[doc(hidden)]
7037            type UnderlyingRustTuple<'a> = (
7038                u64,
7039                u64,
7040                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7041            );
7042            #[cfg(test)]
7043            #[allow(dead_code, unreachable_patterns)]
7044            fn _type_assertion(
7045                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7046            ) {
7047                match _t {
7048                    alloy_sol_types::private::AssertTypeEq::<
7049                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7050                    >(_) => {}
7051                }
7052            }
7053            #[automatically_derived]
7054            #[doc(hidden)]
7055            impl ::core::convert::From<finalizedStateReturn>
7056            for UnderlyingRustTuple<'_> {
7057                fn from(value: finalizedStateReturn) -> Self {
7058                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7059                }
7060            }
7061            #[automatically_derived]
7062            #[doc(hidden)]
7063            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7064            for finalizedStateReturn {
7065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7066                    Self {
7067                        viewNum: tuple.0,
7068                        blockHeight: tuple.1,
7069                        blockCommRoot: tuple.2,
7070                    }
7071                }
7072            }
7073        }
7074        #[automatically_derived]
7075        impl alloy_sol_types::SolCall for finalizedStateCall {
7076            type Parameters<'a> = ();
7077            type Token<'a> = <Self::Parameters<
7078                'a,
7079            > as alloy_sol_types::SolType>::Token<'a>;
7080            type Return = finalizedStateReturn;
7081            type ReturnTuple<'a> = (
7082                alloy::sol_types::sol_data::Uint<64>,
7083                alloy::sol_types::sol_data::Uint<64>,
7084                BN254::ScalarField,
7085            );
7086            type ReturnToken<'a> = <Self::ReturnTuple<
7087                'a,
7088            > as alloy_sol_types::SolType>::Token<'a>;
7089            const SIGNATURE: &'static str = "finalizedState()";
7090            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7091            #[inline]
7092            fn new<'a>(
7093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7094            ) -> Self {
7095                tuple.into()
7096            }
7097            #[inline]
7098            fn tokenize(&self) -> Self::Token<'_> {
7099                ()
7100            }
7101            #[inline]
7102            fn abi_decode_returns(
7103                data: &[u8],
7104                validate: bool,
7105            ) -> alloy_sol_types::Result<Self::Return> {
7106                <Self::ReturnTuple<
7107                    '_,
7108                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7109                    .map(Into::into)
7110            }
7111        }
7112    };
7113    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7114    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7115```solidity
7116function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7117```*/
7118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7119    #[derive(Clone)]
7120    pub struct genesisStakeTableStateCall {}
7121    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7122    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7124    #[derive(Clone)]
7125    pub struct genesisStakeTableStateReturn {
7126        #[allow(missing_docs)]
7127        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7128        #[allow(missing_docs)]
7129        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7130        #[allow(missing_docs)]
7131        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7132        #[allow(missing_docs)]
7133        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7134    }
7135    #[allow(
7136        non_camel_case_types,
7137        non_snake_case,
7138        clippy::pub_underscore_fields,
7139        clippy::style
7140    )]
7141    const _: () = {
7142        use alloy::sol_types as alloy_sol_types;
7143        {
7144            #[doc(hidden)]
7145            type UnderlyingSolTuple<'a> = ();
7146            #[doc(hidden)]
7147            type UnderlyingRustTuple<'a> = ();
7148            #[cfg(test)]
7149            #[allow(dead_code, unreachable_patterns)]
7150            fn _type_assertion(
7151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7152            ) {
7153                match _t {
7154                    alloy_sol_types::private::AssertTypeEq::<
7155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7156                    >(_) => {}
7157                }
7158            }
7159            #[automatically_derived]
7160            #[doc(hidden)]
7161            impl ::core::convert::From<genesisStakeTableStateCall>
7162            for UnderlyingRustTuple<'_> {
7163                fn from(value: genesisStakeTableStateCall) -> Self {
7164                    ()
7165                }
7166            }
7167            #[automatically_derived]
7168            #[doc(hidden)]
7169            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7170            for genesisStakeTableStateCall {
7171                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7172                    Self {}
7173                }
7174            }
7175        }
7176        {
7177            #[doc(hidden)]
7178            type UnderlyingSolTuple<'a> = (
7179                alloy::sol_types::sol_data::Uint<256>,
7180                BN254::ScalarField,
7181                BN254::ScalarField,
7182                BN254::ScalarField,
7183            );
7184            #[doc(hidden)]
7185            type UnderlyingRustTuple<'a> = (
7186                alloy::sol_types::private::primitives::aliases::U256,
7187                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7188                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7189                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7190            );
7191            #[cfg(test)]
7192            #[allow(dead_code, unreachable_patterns)]
7193            fn _type_assertion(
7194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7195            ) {
7196                match _t {
7197                    alloy_sol_types::private::AssertTypeEq::<
7198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7199                    >(_) => {}
7200                }
7201            }
7202            #[automatically_derived]
7203            #[doc(hidden)]
7204            impl ::core::convert::From<genesisStakeTableStateReturn>
7205            for UnderlyingRustTuple<'_> {
7206                fn from(value: genesisStakeTableStateReturn) -> Self {
7207                    (
7208                        value.threshold,
7209                        value.blsKeyComm,
7210                        value.schnorrKeyComm,
7211                        value.amountComm,
7212                    )
7213                }
7214            }
7215            #[automatically_derived]
7216            #[doc(hidden)]
7217            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7218            for genesisStakeTableStateReturn {
7219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7220                    Self {
7221                        threshold: tuple.0,
7222                        blsKeyComm: tuple.1,
7223                        schnorrKeyComm: tuple.2,
7224                        amountComm: tuple.3,
7225                    }
7226                }
7227            }
7228        }
7229        #[automatically_derived]
7230        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7231            type Parameters<'a> = ();
7232            type Token<'a> = <Self::Parameters<
7233                'a,
7234            > as alloy_sol_types::SolType>::Token<'a>;
7235            type Return = genesisStakeTableStateReturn;
7236            type ReturnTuple<'a> = (
7237                alloy::sol_types::sol_data::Uint<256>,
7238                BN254::ScalarField,
7239                BN254::ScalarField,
7240                BN254::ScalarField,
7241            );
7242            type ReturnToken<'a> = <Self::ReturnTuple<
7243                'a,
7244            > as alloy_sol_types::SolType>::Token<'a>;
7245            const SIGNATURE: &'static str = "genesisStakeTableState()";
7246            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7247            #[inline]
7248            fn new<'a>(
7249                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7250            ) -> Self {
7251                tuple.into()
7252            }
7253            #[inline]
7254            fn tokenize(&self) -> Self::Token<'_> {
7255                ()
7256            }
7257            #[inline]
7258            fn abi_decode_returns(
7259                data: &[u8],
7260                validate: bool,
7261            ) -> alloy_sol_types::Result<Self::Return> {
7262                <Self::ReturnTuple<
7263                    '_,
7264                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7265                    .map(Into::into)
7266            }
7267        }
7268    };
7269    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7270    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7271```solidity
7272function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7273```*/
7274    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7275    #[derive(Clone)]
7276    pub struct genesisStateCall {}
7277    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7278    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7280    #[derive(Clone)]
7281    pub struct genesisStateReturn {
7282        #[allow(missing_docs)]
7283        pub viewNum: u64,
7284        #[allow(missing_docs)]
7285        pub blockHeight: u64,
7286        #[allow(missing_docs)]
7287        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7288    }
7289    #[allow(
7290        non_camel_case_types,
7291        non_snake_case,
7292        clippy::pub_underscore_fields,
7293        clippy::style
7294    )]
7295    const _: () = {
7296        use alloy::sol_types as alloy_sol_types;
7297        {
7298            #[doc(hidden)]
7299            type UnderlyingSolTuple<'a> = ();
7300            #[doc(hidden)]
7301            type UnderlyingRustTuple<'a> = ();
7302            #[cfg(test)]
7303            #[allow(dead_code, unreachable_patterns)]
7304            fn _type_assertion(
7305                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7306            ) {
7307                match _t {
7308                    alloy_sol_types::private::AssertTypeEq::<
7309                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7310                    >(_) => {}
7311                }
7312            }
7313            #[automatically_derived]
7314            #[doc(hidden)]
7315            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7316                fn from(value: genesisStateCall) -> Self {
7317                    ()
7318                }
7319            }
7320            #[automatically_derived]
7321            #[doc(hidden)]
7322            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7324                    Self {}
7325                }
7326            }
7327        }
7328        {
7329            #[doc(hidden)]
7330            type UnderlyingSolTuple<'a> = (
7331                alloy::sol_types::sol_data::Uint<64>,
7332                alloy::sol_types::sol_data::Uint<64>,
7333                BN254::ScalarField,
7334            );
7335            #[doc(hidden)]
7336            type UnderlyingRustTuple<'a> = (
7337                u64,
7338                u64,
7339                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7340            );
7341            #[cfg(test)]
7342            #[allow(dead_code, unreachable_patterns)]
7343            fn _type_assertion(
7344                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7345            ) {
7346                match _t {
7347                    alloy_sol_types::private::AssertTypeEq::<
7348                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7349                    >(_) => {}
7350                }
7351            }
7352            #[automatically_derived]
7353            #[doc(hidden)]
7354            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7355                fn from(value: genesisStateReturn) -> Self {
7356                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7357                }
7358            }
7359            #[automatically_derived]
7360            #[doc(hidden)]
7361            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7362                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7363                    Self {
7364                        viewNum: tuple.0,
7365                        blockHeight: tuple.1,
7366                        blockCommRoot: tuple.2,
7367                    }
7368                }
7369            }
7370        }
7371        #[automatically_derived]
7372        impl alloy_sol_types::SolCall for genesisStateCall {
7373            type Parameters<'a> = ();
7374            type Token<'a> = <Self::Parameters<
7375                'a,
7376            > as alloy_sol_types::SolType>::Token<'a>;
7377            type Return = genesisStateReturn;
7378            type ReturnTuple<'a> = (
7379                alloy::sol_types::sol_data::Uint<64>,
7380                alloy::sol_types::sol_data::Uint<64>,
7381                BN254::ScalarField,
7382            );
7383            type ReturnToken<'a> = <Self::ReturnTuple<
7384                'a,
7385            > as alloy_sol_types::SolType>::Token<'a>;
7386            const SIGNATURE: &'static str = "genesisState()";
7387            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7388            #[inline]
7389            fn new<'a>(
7390                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7391            ) -> Self {
7392                tuple.into()
7393            }
7394            #[inline]
7395            fn tokenize(&self) -> Self::Token<'_> {
7396                ()
7397            }
7398            #[inline]
7399            fn abi_decode_returns(
7400                data: &[u8],
7401                validate: bool,
7402            ) -> alloy_sol_types::Result<Self::Return> {
7403                <Self::ReturnTuple<
7404                    '_,
7405                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7406                    .map(Into::into)
7407            }
7408        }
7409    };
7410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7411    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7412```solidity
7413function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7414```*/
7415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7416    #[derive(Clone)]
7417    pub struct getHotShotCommitmentCall {
7418        #[allow(missing_docs)]
7419        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7420    }
7421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7422    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7424    #[derive(Clone)]
7425    pub struct getHotShotCommitmentReturn {
7426        #[allow(missing_docs)]
7427        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7428        #[allow(missing_docs)]
7429        pub hotshotBlockHeight: u64,
7430    }
7431    #[allow(
7432        non_camel_case_types,
7433        non_snake_case,
7434        clippy::pub_underscore_fields,
7435        clippy::style
7436    )]
7437    const _: () = {
7438        use alloy::sol_types as alloy_sol_types;
7439        {
7440            #[doc(hidden)]
7441            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7442            #[doc(hidden)]
7443            type UnderlyingRustTuple<'a> = (
7444                alloy::sol_types::private::primitives::aliases::U256,
7445            );
7446            #[cfg(test)]
7447            #[allow(dead_code, unreachable_patterns)]
7448            fn _type_assertion(
7449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7450            ) {
7451                match _t {
7452                    alloy_sol_types::private::AssertTypeEq::<
7453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7454                    >(_) => {}
7455                }
7456            }
7457            #[automatically_derived]
7458            #[doc(hidden)]
7459            impl ::core::convert::From<getHotShotCommitmentCall>
7460            for UnderlyingRustTuple<'_> {
7461                fn from(value: getHotShotCommitmentCall) -> Self {
7462                    (value.hotShotBlockHeight,)
7463                }
7464            }
7465            #[automatically_derived]
7466            #[doc(hidden)]
7467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7468            for getHotShotCommitmentCall {
7469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7470                    Self {
7471                        hotShotBlockHeight: tuple.0,
7472                    }
7473                }
7474            }
7475        }
7476        {
7477            #[doc(hidden)]
7478            type UnderlyingSolTuple<'a> = (
7479                BN254::ScalarField,
7480                alloy::sol_types::sol_data::Uint<64>,
7481            );
7482            #[doc(hidden)]
7483            type UnderlyingRustTuple<'a> = (
7484                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7485                u64,
7486            );
7487            #[cfg(test)]
7488            #[allow(dead_code, unreachable_patterns)]
7489            fn _type_assertion(
7490                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7491            ) {
7492                match _t {
7493                    alloy_sol_types::private::AssertTypeEq::<
7494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7495                    >(_) => {}
7496                }
7497            }
7498            #[automatically_derived]
7499            #[doc(hidden)]
7500            impl ::core::convert::From<getHotShotCommitmentReturn>
7501            for UnderlyingRustTuple<'_> {
7502                fn from(value: getHotShotCommitmentReturn) -> Self {
7503                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7504                }
7505            }
7506            #[automatically_derived]
7507            #[doc(hidden)]
7508            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7509            for getHotShotCommitmentReturn {
7510                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7511                    Self {
7512                        hotShotBlockCommRoot: tuple.0,
7513                        hotshotBlockHeight: tuple.1,
7514                    }
7515                }
7516            }
7517        }
7518        #[automatically_derived]
7519        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7520            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7521            type Token<'a> = <Self::Parameters<
7522                'a,
7523            > as alloy_sol_types::SolType>::Token<'a>;
7524            type Return = getHotShotCommitmentReturn;
7525            type ReturnTuple<'a> = (
7526                BN254::ScalarField,
7527                alloy::sol_types::sol_data::Uint<64>,
7528            );
7529            type ReturnToken<'a> = <Self::ReturnTuple<
7530                'a,
7531            > as alloy_sol_types::SolType>::Token<'a>;
7532            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7533            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7534            #[inline]
7535            fn new<'a>(
7536                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7537            ) -> Self {
7538                tuple.into()
7539            }
7540            #[inline]
7541            fn tokenize(&self) -> Self::Token<'_> {
7542                (
7543                    <alloy::sol_types::sol_data::Uint<
7544                        256,
7545                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
7546                )
7547            }
7548            #[inline]
7549            fn abi_decode_returns(
7550                data: &[u8],
7551                validate: bool,
7552            ) -> alloy_sol_types::Result<Self::Return> {
7553                <Self::ReturnTuple<
7554                    '_,
7555                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7556                    .map(Into::into)
7557            }
7558        }
7559    };
7560    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7561    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
7562```solidity
7563function getStateHistoryCount() external view returns (uint256);
7564```*/
7565    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7566    #[derive(Clone)]
7567    pub struct getStateHistoryCountCall {}
7568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7569    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
7570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7571    #[derive(Clone)]
7572    pub struct getStateHistoryCountReturn {
7573        #[allow(missing_docs)]
7574        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7575    }
7576    #[allow(
7577        non_camel_case_types,
7578        non_snake_case,
7579        clippy::pub_underscore_fields,
7580        clippy::style
7581    )]
7582    const _: () = {
7583        use alloy::sol_types as alloy_sol_types;
7584        {
7585            #[doc(hidden)]
7586            type UnderlyingSolTuple<'a> = ();
7587            #[doc(hidden)]
7588            type UnderlyingRustTuple<'a> = ();
7589            #[cfg(test)]
7590            #[allow(dead_code, unreachable_patterns)]
7591            fn _type_assertion(
7592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7593            ) {
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<getStateHistoryCountCall>
7603            for UnderlyingRustTuple<'_> {
7604                fn from(value: getStateHistoryCountCall) -> Self {
7605                    ()
7606                }
7607            }
7608            #[automatically_derived]
7609            #[doc(hidden)]
7610            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7611            for getStateHistoryCountCall {
7612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7613                    Self {}
7614                }
7615            }
7616        }
7617        {
7618            #[doc(hidden)]
7619            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7620            #[doc(hidden)]
7621            type UnderlyingRustTuple<'a> = (
7622                alloy::sol_types::private::primitives::aliases::U256,
7623            );
7624            #[cfg(test)]
7625            #[allow(dead_code, unreachable_patterns)]
7626            fn _type_assertion(
7627                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7628            ) {
7629                match _t {
7630                    alloy_sol_types::private::AssertTypeEq::<
7631                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7632                    >(_) => {}
7633                }
7634            }
7635            #[automatically_derived]
7636            #[doc(hidden)]
7637            impl ::core::convert::From<getStateHistoryCountReturn>
7638            for UnderlyingRustTuple<'_> {
7639                fn from(value: getStateHistoryCountReturn) -> Self {
7640                    (value._0,)
7641                }
7642            }
7643            #[automatically_derived]
7644            #[doc(hidden)]
7645            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7646            for getStateHistoryCountReturn {
7647                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7648                    Self { _0: tuple.0 }
7649                }
7650            }
7651        }
7652        #[automatically_derived]
7653        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
7654            type Parameters<'a> = ();
7655            type Token<'a> = <Self::Parameters<
7656                'a,
7657            > as alloy_sol_types::SolType>::Token<'a>;
7658            type Return = getStateHistoryCountReturn;
7659            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7660            type ReturnToken<'a> = <Self::ReturnTuple<
7661                'a,
7662            > as alloy_sol_types::SolType>::Token<'a>;
7663            const SIGNATURE: &'static str = "getStateHistoryCount()";
7664            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
7665            #[inline]
7666            fn new<'a>(
7667                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7668            ) -> Self {
7669                tuple.into()
7670            }
7671            #[inline]
7672            fn tokenize(&self) -> Self::Token<'_> {
7673                ()
7674            }
7675            #[inline]
7676            fn abi_decode_returns(
7677                data: &[u8],
7678                validate: bool,
7679            ) -> alloy_sol_types::Result<Self::Return> {
7680                <Self::ReturnTuple<
7681                    '_,
7682                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7683                    .map(Into::into)
7684            }
7685        }
7686    };
7687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7688    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
7689```solidity
7690function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
7691```*/
7692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7693    #[derive(Clone)]
7694    pub struct getVersionCall {}
7695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7696    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
7697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7698    #[derive(Clone)]
7699    pub struct getVersionReturn {
7700        #[allow(missing_docs)]
7701        pub majorVersion: u8,
7702        #[allow(missing_docs)]
7703        pub minorVersion: u8,
7704        #[allow(missing_docs)]
7705        pub patchVersion: u8,
7706    }
7707    #[allow(
7708        non_camel_case_types,
7709        non_snake_case,
7710        clippy::pub_underscore_fields,
7711        clippy::style
7712    )]
7713    const _: () = {
7714        use alloy::sol_types as alloy_sol_types;
7715        {
7716            #[doc(hidden)]
7717            type UnderlyingSolTuple<'a> = ();
7718            #[doc(hidden)]
7719            type UnderlyingRustTuple<'a> = ();
7720            #[cfg(test)]
7721            #[allow(dead_code, unreachable_patterns)]
7722            fn _type_assertion(
7723                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7724            ) {
7725                match _t {
7726                    alloy_sol_types::private::AssertTypeEq::<
7727                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7728                    >(_) => {}
7729                }
7730            }
7731            #[automatically_derived]
7732            #[doc(hidden)]
7733            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
7734                fn from(value: getVersionCall) -> Self {
7735                    ()
7736                }
7737            }
7738            #[automatically_derived]
7739            #[doc(hidden)]
7740            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
7741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7742                    Self {}
7743                }
7744            }
7745        }
7746        {
7747            #[doc(hidden)]
7748            type UnderlyingSolTuple<'a> = (
7749                alloy::sol_types::sol_data::Uint<8>,
7750                alloy::sol_types::sol_data::Uint<8>,
7751                alloy::sol_types::sol_data::Uint<8>,
7752            );
7753            #[doc(hidden)]
7754            type UnderlyingRustTuple<'a> = (u8, u8, u8);
7755            #[cfg(test)]
7756            #[allow(dead_code, unreachable_patterns)]
7757            fn _type_assertion(
7758                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7759            ) {
7760                match _t {
7761                    alloy_sol_types::private::AssertTypeEq::<
7762                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7763                    >(_) => {}
7764                }
7765            }
7766            #[automatically_derived]
7767            #[doc(hidden)]
7768            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
7769                fn from(value: getVersionReturn) -> Self {
7770                    (value.majorVersion, value.minorVersion, value.patchVersion)
7771                }
7772            }
7773            #[automatically_derived]
7774            #[doc(hidden)]
7775            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
7776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7777                    Self {
7778                        majorVersion: tuple.0,
7779                        minorVersion: tuple.1,
7780                        patchVersion: tuple.2,
7781                    }
7782                }
7783            }
7784        }
7785        #[automatically_derived]
7786        impl alloy_sol_types::SolCall for getVersionCall {
7787            type Parameters<'a> = ();
7788            type Token<'a> = <Self::Parameters<
7789                'a,
7790            > as alloy_sol_types::SolType>::Token<'a>;
7791            type Return = getVersionReturn;
7792            type ReturnTuple<'a> = (
7793                alloy::sol_types::sol_data::Uint<8>,
7794                alloy::sol_types::sol_data::Uint<8>,
7795                alloy::sol_types::sol_data::Uint<8>,
7796            );
7797            type ReturnToken<'a> = <Self::ReturnTuple<
7798                'a,
7799            > as alloy_sol_types::SolType>::Token<'a>;
7800            const SIGNATURE: &'static str = "getVersion()";
7801            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
7802            #[inline]
7803            fn new<'a>(
7804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7805            ) -> Self {
7806                tuple.into()
7807            }
7808            #[inline]
7809            fn tokenize(&self) -> Self::Token<'_> {
7810                ()
7811            }
7812            #[inline]
7813            fn abi_decode_returns(
7814                data: &[u8],
7815                validate: bool,
7816            ) -> alloy_sol_types::Result<Self::Return> {
7817                <Self::ReturnTuple<
7818                    '_,
7819                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7820                    .map(Into::into)
7821            }
7822        }
7823    };
7824    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7825    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
7826```solidity
7827function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
7828```*/
7829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7830    #[derive(Clone)]
7831    pub struct initializeCall {
7832        #[allow(missing_docs)]
7833        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7834        #[allow(missing_docs)]
7835        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7836        #[allow(missing_docs)]
7837        pub _stateHistoryRetentionPeriod: u32,
7838        #[allow(missing_docs)]
7839        pub owner: alloy::sol_types::private::Address,
7840    }
7841    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
7842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7843    #[derive(Clone)]
7844    pub struct initializeReturn {}
7845    #[allow(
7846        non_camel_case_types,
7847        non_snake_case,
7848        clippy::pub_underscore_fields,
7849        clippy::style
7850    )]
7851    const _: () = {
7852        use alloy::sol_types as alloy_sol_types;
7853        {
7854            #[doc(hidden)]
7855            type UnderlyingSolTuple<'a> = (
7856                LightClient::LightClientState,
7857                LightClient::StakeTableState,
7858                alloy::sol_types::sol_data::Uint<32>,
7859                alloy::sol_types::sol_data::Address,
7860            );
7861            #[doc(hidden)]
7862            type UnderlyingRustTuple<'a> = (
7863                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
7864                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
7865                u32,
7866                alloy::sol_types::private::Address,
7867            );
7868            #[cfg(test)]
7869            #[allow(dead_code, unreachable_patterns)]
7870            fn _type_assertion(
7871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7872            ) {
7873                match _t {
7874                    alloy_sol_types::private::AssertTypeEq::<
7875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7876                    >(_) => {}
7877                }
7878            }
7879            #[automatically_derived]
7880            #[doc(hidden)]
7881            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
7882                fn from(value: initializeCall) -> Self {
7883                    (
7884                        value._genesis,
7885                        value._genesisStakeTableState,
7886                        value._stateHistoryRetentionPeriod,
7887                        value.owner,
7888                    )
7889                }
7890            }
7891            #[automatically_derived]
7892            #[doc(hidden)]
7893            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
7894                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7895                    Self {
7896                        _genesis: tuple.0,
7897                        _genesisStakeTableState: tuple.1,
7898                        _stateHistoryRetentionPeriod: tuple.2,
7899                        owner: tuple.3,
7900                    }
7901                }
7902            }
7903        }
7904        {
7905            #[doc(hidden)]
7906            type UnderlyingSolTuple<'a> = ();
7907            #[doc(hidden)]
7908            type UnderlyingRustTuple<'a> = ();
7909            #[cfg(test)]
7910            #[allow(dead_code, unreachable_patterns)]
7911            fn _type_assertion(
7912                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7913            ) {
7914                match _t {
7915                    alloy_sol_types::private::AssertTypeEq::<
7916                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7917                    >(_) => {}
7918                }
7919            }
7920            #[automatically_derived]
7921            #[doc(hidden)]
7922            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
7923                fn from(value: initializeReturn) -> Self {
7924                    ()
7925                }
7926            }
7927            #[automatically_derived]
7928            #[doc(hidden)]
7929            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
7930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7931                    Self {}
7932                }
7933            }
7934        }
7935        #[automatically_derived]
7936        impl alloy_sol_types::SolCall for initializeCall {
7937            type Parameters<'a> = (
7938                LightClient::LightClientState,
7939                LightClient::StakeTableState,
7940                alloy::sol_types::sol_data::Uint<32>,
7941                alloy::sol_types::sol_data::Address,
7942            );
7943            type Token<'a> = <Self::Parameters<
7944                'a,
7945            > as alloy_sol_types::SolType>::Token<'a>;
7946            type Return = initializeReturn;
7947            type ReturnTuple<'a> = ();
7948            type ReturnToken<'a> = <Self::ReturnTuple<
7949                'a,
7950            > as alloy_sol_types::SolType>::Token<'a>;
7951            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
7952            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
7953            #[inline]
7954            fn new<'a>(
7955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7956            ) -> Self {
7957                tuple.into()
7958            }
7959            #[inline]
7960            fn tokenize(&self) -> Self::Token<'_> {
7961                (
7962                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
7963                        &self._genesis,
7964                    ),
7965                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
7966                        &self._genesisStakeTableState,
7967                    ),
7968                    <alloy::sol_types::sol_data::Uint<
7969                        32,
7970                    > as alloy_sol_types::SolType>::tokenize(
7971                        &self._stateHistoryRetentionPeriod,
7972                    ),
7973                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7974                        &self.owner,
7975                    ),
7976                )
7977            }
7978            #[inline]
7979            fn abi_decode_returns(
7980                data: &[u8],
7981                validate: bool,
7982            ) -> alloy_sol_types::Result<Self::Return> {
7983                <Self::ReturnTuple<
7984                    '_,
7985                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
7986                    .map(Into::into)
7987            }
7988        }
7989    };
7990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7991    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
7992```solidity
7993function isPermissionedProverEnabled() external view returns (bool);
7994```*/
7995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7996    #[derive(Clone)]
7997    pub struct isPermissionedProverEnabledCall {}
7998    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7999    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8001    #[derive(Clone)]
8002    pub struct isPermissionedProverEnabledReturn {
8003        #[allow(missing_docs)]
8004        pub _0: bool,
8005    }
8006    #[allow(
8007        non_camel_case_types,
8008        non_snake_case,
8009        clippy::pub_underscore_fields,
8010        clippy::style
8011    )]
8012    const _: () = {
8013        use alloy::sol_types as alloy_sol_types;
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(
8022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8023            ) {
8024                match _t {
8025                    alloy_sol_types::private::AssertTypeEq::<
8026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8027                    >(_) => {}
8028                }
8029            }
8030            #[automatically_derived]
8031            #[doc(hidden)]
8032            impl ::core::convert::From<isPermissionedProverEnabledCall>
8033            for UnderlyingRustTuple<'_> {
8034                fn from(value: isPermissionedProverEnabledCall) -> Self {
8035                    ()
8036                }
8037            }
8038            #[automatically_derived]
8039            #[doc(hidden)]
8040            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8041            for isPermissionedProverEnabledCall {
8042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8043                    Self {}
8044                }
8045            }
8046        }
8047        {
8048            #[doc(hidden)]
8049            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8050            #[doc(hidden)]
8051            type UnderlyingRustTuple<'a> = (bool,);
8052            #[cfg(test)]
8053            #[allow(dead_code, unreachable_patterns)]
8054            fn _type_assertion(
8055                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8056            ) {
8057                match _t {
8058                    alloy_sol_types::private::AssertTypeEq::<
8059                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8060                    >(_) => {}
8061                }
8062            }
8063            #[automatically_derived]
8064            #[doc(hidden)]
8065            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8066            for UnderlyingRustTuple<'_> {
8067                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8068                    (value._0,)
8069                }
8070            }
8071            #[automatically_derived]
8072            #[doc(hidden)]
8073            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8074            for isPermissionedProverEnabledReturn {
8075                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8076                    Self { _0: tuple.0 }
8077                }
8078            }
8079        }
8080        #[automatically_derived]
8081        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8082            type Parameters<'a> = ();
8083            type Token<'a> = <Self::Parameters<
8084                'a,
8085            > as alloy_sol_types::SolType>::Token<'a>;
8086            type Return = isPermissionedProverEnabledReturn;
8087            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8088            type ReturnToken<'a> = <Self::ReturnTuple<
8089                'a,
8090            > as alloy_sol_types::SolType>::Token<'a>;
8091            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8092            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8093            #[inline]
8094            fn new<'a>(
8095                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8096            ) -> Self {
8097                tuple.into()
8098            }
8099            #[inline]
8100            fn tokenize(&self) -> Self::Token<'_> {
8101                ()
8102            }
8103            #[inline]
8104            fn abi_decode_returns(
8105                data: &[u8],
8106                validate: bool,
8107            ) -> alloy_sol_types::Result<Self::Return> {
8108                <Self::ReturnTuple<
8109                    '_,
8110                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8111                    .map(Into::into)
8112            }
8113        }
8114    };
8115    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8116    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8117```solidity
8118function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8119```*/
8120    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8121    #[derive(Clone)]
8122    pub struct lagOverEscapeHatchThresholdCall {
8123        #[allow(missing_docs)]
8124        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8125        #[allow(missing_docs)]
8126        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8127    }
8128    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8129    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8130    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8131    #[derive(Clone)]
8132    pub struct lagOverEscapeHatchThresholdReturn {
8133        #[allow(missing_docs)]
8134        pub _0: bool,
8135    }
8136    #[allow(
8137        non_camel_case_types,
8138        non_snake_case,
8139        clippy::pub_underscore_fields,
8140        clippy::style
8141    )]
8142    const _: () = {
8143        use alloy::sol_types as alloy_sol_types;
8144        {
8145            #[doc(hidden)]
8146            type UnderlyingSolTuple<'a> = (
8147                alloy::sol_types::sol_data::Uint<256>,
8148                alloy::sol_types::sol_data::Uint<256>,
8149            );
8150            #[doc(hidden)]
8151            type UnderlyingRustTuple<'a> = (
8152                alloy::sol_types::private::primitives::aliases::U256,
8153                alloy::sol_types::private::primitives::aliases::U256,
8154            );
8155            #[cfg(test)]
8156            #[allow(dead_code, unreachable_patterns)]
8157            fn _type_assertion(
8158                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8159            ) {
8160                match _t {
8161                    alloy_sol_types::private::AssertTypeEq::<
8162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8163                    >(_) => {}
8164                }
8165            }
8166            #[automatically_derived]
8167            #[doc(hidden)]
8168            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8169            for UnderlyingRustTuple<'_> {
8170                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8171                    (value.blockNumber, value.blockThreshold)
8172                }
8173            }
8174            #[automatically_derived]
8175            #[doc(hidden)]
8176            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8177            for lagOverEscapeHatchThresholdCall {
8178                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8179                    Self {
8180                        blockNumber: tuple.0,
8181                        blockThreshold: tuple.1,
8182                    }
8183                }
8184            }
8185        }
8186        {
8187            #[doc(hidden)]
8188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8189            #[doc(hidden)]
8190            type UnderlyingRustTuple<'a> = (bool,);
8191            #[cfg(test)]
8192            #[allow(dead_code, unreachable_patterns)]
8193            fn _type_assertion(
8194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8195            ) {
8196                match _t {
8197                    alloy_sol_types::private::AssertTypeEq::<
8198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8199                    >(_) => {}
8200                }
8201            }
8202            #[automatically_derived]
8203            #[doc(hidden)]
8204            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8205            for UnderlyingRustTuple<'_> {
8206                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8207                    (value._0,)
8208                }
8209            }
8210            #[automatically_derived]
8211            #[doc(hidden)]
8212            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8213            for lagOverEscapeHatchThresholdReturn {
8214                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8215                    Self { _0: tuple.0 }
8216                }
8217            }
8218        }
8219        #[automatically_derived]
8220        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8221            type Parameters<'a> = (
8222                alloy::sol_types::sol_data::Uint<256>,
8223                alloy::sol_types::sol_data::Uint<256>,
8224            );
8225            type Token<'a> = <Self::Parameters<
8226                'a,
8227            > as alloy_sol_types::SolType>::Token<'a>;
8228            type Return = lagOverEscapeHatchThresholdReturn;
8229            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8230            type ReturnToken<'a> = <Self::ReturnTuple<
8231                'a,
8232            > as alloy_sol_types::SolType>::Token<'a>;
8233            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8234            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8235            #[inline]
8236            fn new<'a>(
8237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8238            ) -> Self {
8239                tuple.into()
8240            }
8241            #[inline]
8242            fn tokenize(&self) -> Self::Token<'_> {
8243                (
8244                    <alloy::sol_types::sol_data::Uint<
8245                        256,
8246                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8247                    <alloy::sol_types::sol_data::Uint<
8248                        256,
8249                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8250                )
8251            }
8252            #[inline]
8253            fn abi_decode_returns(
8254                data: &[u8],
8255                validate: bool,
8256            ) -> alloy_sol_types::Result<Self::Return> {
8257                <Self::ReturnTuple<
8258                    '_,
8259                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8260                    .map(Into::into)
8261            }
8262        }
8263    };
8264    #[derive()]
8265    /**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`.
8266```solidity
8267function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8268```*/
8269    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8270    #[derive(Clone)]
8271    pub struct newFinalizedStateCall {
8272        #[allow(missing_docs)]
8273        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8274        #[allow(missing_docs)]
8275        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8276    }
8277    ///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.
8278    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8279    #[derive(Clone)]
8280    pub struct newFinalizedStateReturn {}
8281    #[allow(
8282        non_camel_case_types,
8283        non_snake_case,
8284        clippy::pub_underscore_fields,
8285        clippy::style
8286    )]
8287    const _: () = {
8288        use alloy::sol_types as alloy_sol_types;
8289        {
8290            #[doc(hidden)]
8291            type UnderlyingSolTuple<'a> = (
8292                LightClient::LightClientState,
8293                IPlonkVerifier::PlonkProof,
8294            );
8295            #[doc(hidden)]
8296            type UnderlyingRustTuple<'a> = (
8297                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8298                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8299            );
8300            #[cfg(test)]
8301            #[allow(dead_code, unreachable_patterns)]
8302            fn _type_assertion(
8303                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8304            ) {
8305                match _t {
8306                    alloy_sol_types::private::AssertTypeEq::<
8307                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8308                    >(_) => {}
8309                }
8310            }
8311            #[automatically_derived]
8312            #[doc(hidden)]
8313            impl ::core::convert::From<newFinalizedStateCall>
8314            for UnderlyingRustTuple<'_> {
8315                fn from(value: newFinalizedStateCall) -> Self {
8316                    (value.newState, value.proof)
8317                }
8318            }
8319            #[automatically_derived]
8320            #[doc(hidden)]
8321            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8322            for newFinalizedStateCall {
8323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8324                    Self {
8325                        newState: tuple.0,
8326                        proof: tuple.1,
8327                    }
8328                }
8329            }
8330        }
8331        {
8332            #[doc(hidden)]
8333            type UnderlyingSolTuple<'a> = ();
8334            #[doc(hidden)]
8335            type UnderlyingRustTuple<'a> = ();
8336            #[cfg(test)]
8337            #[allow(dead_code, unreachable_patterns)]
8338            fn _type_assertion(
8339                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8340            ) {
8341                match _t {
8342                    alloy_sol_types::private::AssertTypeEq::<
8343                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8344                    >(_) => {}
8345                }
8346            }
8347            #[automatically_derived]
8348            #[doc(hidden)]
8349            impl ::core::convert::From<newFinalizedStateReturn>
8350            for UnderlyingRustTuple<'_> {
8351                fn from(value: newFinalizedStateReturn) -> Self {
8352                    ()
8353                }
8354            }
8355            #[automatically_derived]
8356            #[doc(hidden)]
8357            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8358            for newFinalizedStateReturn {
8359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8360                    Self {}
8361                }
8362            }
8363        }
8364        #[automatically_derived]
8365        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8366            type Parameters<'a> = (
8367                LightClient::LightClientState,
8368                IPlonkVerifier::PlonkProof,
8369            );
8370            type Token<'a> = <Self::Parameters<
8371                'a,
8372            > as alloy_sol_types::SolType>::Token<'a>;
8373            type Return = newFinalizedStateReturn;
8374            type ReturnTuple<'a> = ();
8375            type ReturnToken<'a> = <Self::ReturnTuple<
8376                'a,
8377            > as alloy_sol_types::SolType>::Token<'a>;
8378            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))";
8379            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8380            #[inline]
8381            fn new<'a>(
8382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8383            ) -> Self {
8384                tuple.into()
8385            }
8386            #[inline]
8387            fn tokenize(&self) -> Self::Token<'_> {
8388                (
8389                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8390                        &self.newState,
8391                    ),
8392                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
8393                        &self.proof,
8394                    ),
8395                )
8396            }
8397            #[inline]
8398            fn abi_decode_returns(
8399                data: &[u8],
8400                validate: bool,
8401            ) -> alloy_sol_types::Result<Self::Return> {
8402                <Self::ReturnTuple<
8403                    '_,
8404                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8405                    .map(Into::into)
8406            }
8407        }
8408    };
8409    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8410    /**Function with signature `owner()` and selector `0x8da5cb5b`.
8411```solidity
8412function owner() external view returns (address);
8413```*/
8414    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8415    #[derive(Clone)]
8416    pub struct ownerCall {}
8417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8418    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
8419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8420    #[derive(Clone)]
8421    pub struct ownerReturn {
8422        #[allow(missing_docs)]
8423        pub _0: alloy::sol_types::private::Address,
8424    }
8425    #[allow(
8426        non_camel_case_types,
8427        non_snake_case,
8428        clippy::pub_underscore_fields,
8429        clippy::style
8430    )]
8431    const _: () = {
8432        use alloy::sol_types as alloy_sol_types;
8433        {
8434            #[doc(hidden)]
8435            type UnderlyingSolTuple<'a> = ();
8436            #[doc(hidden)]
8437            type UnderlyingRustTuple<'a> = ();
8438            #[cfg(test)]
8439            #[allow(dead_code, unreachable_patterns)]
8440            fn _type_assertion(
8441                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8442            ) {
8443                match _t {
8444                    alloy_sol_types::private::AssertTypeEq::<
8445                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8446                    >(_) => {}
8447                }
8448            }
8449            #[automatically_derived]
8450            #[doc(hidden)]
8451            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
8452                fn from(value: ownerCall) -> Self {
8453                    ()
8454                }
8455            }
8456            #[automatically_derived]
8457            #[doc(hidden)]
8458            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
8459                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8460                    Self {}
8461                }
8462            }
8463        }
8464        {
8465            #[doc(hidden)]
8466            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8467            #[doc(hidden)]
8468            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8469            #[cfg(test)]
8470            #[allow(dead_code, unreachable_patterns)]
8471            fn _type_assertion(
8472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8473            ) {
8474                match _t {
8475                    alloy_sol_types::private::AssertTypeEq::<
8476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8477                    >(_) => {}
8478                }
8479            }
8480            #[automatically_derived]
8481            #[doc(hidden)]
8482            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
8483                fn from(value: ownerReturn) -> Self {
8484                    (value._0,)
8485                }
8486            }
8487            #[automatically_derived]
8488            #[doc(hidden)]
8489            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
8490                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8491                    Self { _0: tuple.0 }
8492                }
8493            }
8494        }
8495        #[automatically_derived]
8496        impl alloy_sol_types::SolCall for ownerCall {
8497            type Parameters<'a> = ();
8498            type Token<'a> = <Self::Parameters<
8499                'a,
8500            > as alloy_sol_types::SolType>::Token<'a>;
8501            type Return = ownerReturn;
8502            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8503            type ReturnToken<'a> = <Self::ReturnTuple<
8504                'a,
8505            > as alloy_sol_types::SolType>::Token<'a>;
8506            const SIGNATURE: &'static str = "owner()";
8507            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
8508            #[inline]
8509            fn new<'a>(
8510                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8511            ) -> Self {
8512                tuple.into()
8513            }
8514            #[inline]
8515            fn tokenize(&self) -> Self::Token<'_> {
8516                ()
8517            }
8518            #[inline]
8519            fn abi_decode_returns(
8520                data: &[u8],
8521                validate: bool,
8522            ) -> alloy_sol_types::Result<Self::Return> {
8523                <Self::ReturnTuple<
8524                    '_,
8525                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8526                    .map(Into::into)
8527            }
8528        }
8529    };
8530    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8531    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
8532```solidity
8533function permissionedProver() external view returns (address);
8534```*/
8535    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8536    #[derive(Clone)]
8537    pub struct permissionedProverCall {}
8538    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8539    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
8540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8541    #[derive(Clone)]
8542    pub struct permissionedProverReturn {
8543        #[allow(missing_docs)]
8544        pub _0: alloy::sol_types::private::Address,
8545    }
8546    #[allow(
8547        non_camel_case_types,
8548        non_snake_case,
8549        clippy::pub_underscore_fields,
8550        clippy::style
8551    )]
8552    const _: () = {
8553        use alloy::sol_types as alloy_sol_types;
8554        {
8555            #[doc(hidden)]
8556            type UnderlyingSolTuple<'a> = ();
8557            #[doc(hidden)]
8558            type UnderlyingRustTuple<'a> = ();
8559            #[cfg(test)]
8560            #[allow(dead_code, unreachable_patterns)]
8561            fn _type_assertion(
8562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8563            ) {
8564                match _t {
8565                    alloy_sol_types::private::AssertTypeEq::<
8566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8567                    >(_) => {}
8568                }
8569            }
8570            #[automatically_derived]
8571            #[doc(hidden)]
8572            impl ::core::convert::From<permissionedProverCall>
8573            for UnderlyingRustTuple<'_> {
8574                fn from(value: permissionedProverCall) -> Self {
8575                    ()
8576                }
8577            }
8578            #[automatically_derived]
8579            #[doc(hidden)]
8580            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8581            for permissionedProverCall {
8582                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8583                    Self {}
8584                }
8585            }
8586        }
8587        {
8588            #[doc(hidden)]
8589            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8590            #[doc(hidden)]
8591            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8592            #[cfg(test)]
8593            #[allow(dead_code, unreachable_patterns)]
8594            fn _type_assertion(
8595                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8596            ) {
8597                match _t {
8598                    alloy_sol_types::private::AssertTypeEq::<
8599                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8600                    >(_) => {}
8601                }
8602            }
8603            #[automatically_derived]
8604            #[doc(hidden)]
8605            impl ::core::convert::From<permissionedProverReturn>
8606            for UnderlyingRustTuple<'_> {
8607                fn from(value: permissionedProverReturn) -> Self {
8608                    (value._0,)
8609                }
8610            }
8611            #[automatically_derived]
8612            #[doc(hidden)]
8613            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8614            for permissionedProverReturn {
8615                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8616                    Self { _0: tuple.0 }
8617                }
8618            }
8619        }
8620        #[automatically_derived]
8621        impl alloy_sol_types::SolCall for permissionedProverCall {
8622            type Parameters<'a> = ();
8623            type Token<'a> = <Self::Parameters<
8624                'a,
8625            > as alloy_sol_types::SolType>::Token<'a>;
8626            type Return = permissionedProverReturn;
8627            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
8628            type ReturnToken<'a> = <Self::ReturnTuple<
8629                'a,
8630            > as alloy_sol_types::SolType>::Token<'a>;
8631            const SIGNATURE: &'static str = "permissionedProver()";
8632            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
8633            #[inline]
8634            fn new<'a>(
8635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8636            ) -> Self {
8637                tuple.into()
8638            }
8639            #[inline]
8640            fn tokenize(&self) -> Self::Token<'_> {
8641                ()
8642            }
8643            #[inline]
8644            fn abi_decode_returns(
8645                data: &[u8],
8646                validate: bool,
8647            ) -> alloy_sol_types::Result<Self::Return> {
8648                <Self::ReturnTuple<
8649                    '_,
8650                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8651                    .map(Into::into)
8652            }
8653        }
8654    };
8655    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8656    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
8657```solidity
8658function proxiableUUID() external view returns (bytes32);
8659```*/
8660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8661    #[derive(Clone)]
8662    pub struct proxiableUUIDCall {}
8663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8664    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
8665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8666    #[derive(Clone)]
8667    pub struct proxiableUUIDReturn {
8668        #[allow(missing_docs)]
8669        pub _0: alloy::sol_types::private::FixedBytes<32>,
8670    }
8671    #[allow(
8672        non_camel_case_types,
8673        non_snake_case,
8674        clippy::pub_underscore_fields,
8675        clippy::style
8676    )]
8677    const _: () = {
8678        use alloy::sol_types as alloy_sol_types;
8679        {
8680            #[doc(hidden)]
8681            type UnderlyingSolTuple<'a> = ();
8682            #[doc(hidden)]
8683            type UnderlyingRustTuple<'a> = ();
8684            #[cfg(test)]
8685            #[allow(dead_code, unreachable_patterns)]
8686            fn _type_assertion(
8687                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8688            ) {
8689                match _t {
8690                    alloy_sol_types::private::AssertTypeEq::<
8691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8692                    >(_) => {}
8693                }
8694            }
8695            #[automatically_derived]
8696            #[doc(hidden)]
8697            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
8698                fn from(value: proxiableUUIDCall) -> Self {
8699                    ()
8700                }
8701            }
8702            #[automatically_derived]
8703            #[doc(hidden)]
8704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
8705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8706                    Self {}
8707                }
8708            }
8709        }
8710        {
8711            #[doc(hidden)]
8712            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8713            #[doc(hidden)]
8714            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
8715            #[cfg(test)]
8716            #[allow(dead_code, unreachable_patterns)]
8717            fn _type_assertion(
8718                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8719            ) {
8720                match _t {
8721                    alloy_sol_types::private::AssertTypeEq::<
8722                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8723                    >(_) => {}
8724                }
8725            }
8726            #[automatically_derived]
8727            #[doc(hidden)]
8728            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
8729                fn from(value: proxiableUUIDReturn) -> Self {
8730                    (value._0,)
8731                }
8732            }
8733            #[automatically_derived]
8734            #[doc(hidden)]
8735            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
8736                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8737                    Self { _0: tuple.0 }
8738                }
8739            }
8740        }
8741        #[automatically_derived]
8742        impl alloy_sol_types::SolCall for proxiableUUIDCall {
8743            type Parameters<'a> = ();
8744            type Token<'a> = <Self::Parameters<
8745                'a,
8746            > as alloy_sol_types::SolType>::Token<'a>;
8747            type Return = proxiableUUIDReturn;
8748            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
8749            type ReturnToken<'a> = <Self::ReturnTuple<
8750                'a,
8751            > as alloy_sol_types::SolType>::Token<'a>;
8752            const SIGNATURE: &'static str = "proxiableUUID()";
8753            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
8754            #[inline]
8755            fn new<'a>(
8756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8757            ) -> Self {
8758                tuple.into()
8759            }
8760            #[inline]
8761            fn tokenize(&self) -> Self::Token<'_> {
8762                ()
8763            }
8764            #[inline]
8765            fn abi_decode_returns(
8766                data: &[u8],
8767                validate: bool,
8768            ) -> alloy_sol_types::Result<Self::Return> {
8769                <Self::ReturnTuple<
8770                    '_,
8771                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8772                    .map(Into::into)
8773            }
8774        }
8775    };
8776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8777    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
8778```solidity
8779function renounceOwnership() external;
8780```*/
8781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8782    #[derive(Clone)]
8783    pub struct renounceOwnershipCall {}
8784    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
8785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8786    #[derive(Clone)]
8787    pub struct renounceOwnershipReturn {}
8788    #[allow(
8789        non_camel_case_types,
8790        non_snake_case,
8791        clippy::pub_underscore_fields,
8792        clippy::style
8793    )]
8794    const _: () = {
8795        use alloy::sol_types as alloy_sol_types;
8796        {
8797            #[doc(hidden)]
8798            type UnderlyingSolTuple<'a> = ();
8799            #[doc(hidden)]
8800            type UnderlyingRustTuple<'a> = ();
8801            #[cfg(test)]
8802            #[allow(dead_code, unreachable_patterns)]
8803            fn _type_assertion(
8804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8805            ) {
8806                match _t {
8807                    alloy_sol_types::private::AssertTypeEq::<
8808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8809                    >(_) => {}
8810                }
8811            }
8812            #[automatically_derived]
8813            #[doc(hidden)]
8814            impl ::core::convert::From<renounceOwnershipCall>
8815            for UnderlyingRustTuple<'_> {
8816                fn from(value: renounceOwnershipCall) -> Self {
8817                    ()
8818                }
8819            }
8820            #[automatically_derived]
8821            #[doc(hidden)]
8822            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8823            for renounceOwnershipCall {
8824                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8825                    Self {}
8826                }
8827            }
8828        }
8829        {
8830            #[doc(hidden)]
8831            type UnderlyingSolTuple<'a> = ();
8832            #[doc(hidden)]
8833            type UnderlyingRustTuple<'a> = ();
8834            #[cfg(test)]
8835            #[allow(dead_code, unreachable_patterns)]
8836            fn _type_assertion(
8837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8838            ) {
8839                match _t {
8840                    alloy_sol_types::private::AssertTypeEq::<
8841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8842                    >(_) => {}
8843                }
8844            }
8845            #[automatically_derived]
8846            #[doc(hidden)]
8847            impl ::core::convert::From<renounceOwnershipReturn>
8848            for UnderlyingRustTuple<'_> {
8849                fn from(value: renounceOwnershipReturn) -> Self {
8850                    ()
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8856            for renounceOwnershipReturn {
8857                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8858                    Self {}
8859                }
8860            }
8861        }
8862        #[automatically_derived]
8863        impl alloy_sol_types::SolCall for renounceOwnershipCall {
8864            type Parameters<'a> = ();
8865            type Token<'a> = <Self::Parameters<
8866                'a,
8867            > as alloy_sol_types::SolType>::Token<'a>;
8868            type Return = renounceOwnershipReturn;
8869            type ReturnTuple<'a> = ();
8870            type ReturnToken<'a> = <Self::ReturnTuple<
8871                'a,
8872            > as alloy_sol_types::SolType>::Token<'a>;
8873            const SIGNATURE: &'static str = "renounceOwnership()";
8874            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
8875            #[inline]
8876            fn new<'a>(
8877                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8878            ) -> Self {
8879                tuple.into()
8880            }
8881            #[inline]
8882            fn tokenize(&self) -> Self::Token<'_> {
8883                ()
8884            }
8885            #[inline]
8886            fn abi_decode_returns(
8887                data: &[u8],
8888                validate: bool,
8889            ) -> alloy_sol_types::Result<Self::Return> {
8890                <Self::ReturnTuple<
8891                    '_,
8892                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
8893                    .map(Into::into)
8894            }
8895        }
8896    };
8897    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8898    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
8899```solidity
8900function setPermissionedProver(address prover) external;
8901```*/
8902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8903    #[derive(Clone)]
8904    pub struct setPermissionedProverCall {
8905        #[allow(missing_docs)]
8906        pub prover: alloy::sol_types::private::Address,
8907    }
8908    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
8909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8910    #[derive(Clone)]
8911    pub struct setPermissionedProverReturn {}
8912    #[allow(
8913        non_camel_case_types,
8914        non_snake_case,
8915        clippy::pub_underscore_fields,
8916        clippy::style
8917    )]
8918    const _: () = {
8919        use alloy::sol_types as alloy_sol_types;
8920        {
8921            #[doc(hidden)]
8922            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
8923            #[doc(hidden)]
8924            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
8925            #[cfg(test)]
8926            #[allow(dead_code, unreachable_patterns)]
8927            fn _type_assertion(
8928                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8929            ) {
8930                match _t {
8931                    alloy_sol_types::private::AssertTypeEq::<
8932                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8933                    >(_) => {}
8934                }
8935            }
8936            #[automatically_derived]
8937            #[doc(hidden)]
8938            impl ::core::convert::From<setPermissionedProverCall>
8939            for UnderlyingRustTuple<'_> {
8940                fn from(value: setPermissionedProverCall) -> Self {
8941                    (value.prover,)
8942                }
8943            }
8944            #[automatically_derived]
8945            #[doc(hidden)]
8946            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8947            for setPermissionedProverCall {
8948                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8949                    Self { prover: tuple.0 }
8950                }
8951            }
8952        }
8953        {
8954            #[doc(hidden)]
8955            type UnderlyingSolTuple<'a> = ();
8956            #[doc(hidden)]
8957            type UnderlyingRustTuple<'a> = ();
8958            #[cfg(test)]
8959            #[allow(dead_code, unreachable_patterns)]
8960            fn _type_assertion(
8961                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8962            ) {
8963                match _t {
8964                    alloy_sol_types::private::AssertTypeEq::<
8965                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8966                    >(_) => {}
8967                }
8968            }
8969            #[automatically_derived]
8970            #[doc(hidden)]
8971            impl ::core::convert::From<setPermissionedProverReturn>
8972            for UnderlyingRustTuple<'_> {
8973                fn from(value: setPermissionedProverReturn) -> Self {
8974                    ()
8975                }
8976            }
8977            #[automatically_derived]
8978            #[doc(hidden)]
8979            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8980            for setPermissionedProverReturn {
8981                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8982                    Self {}
8983                }
8984            }
8985        }
8986        #[automatically_derived]
8987        impl alloy_sol_types::SolCall for setPermissionedProverCall {
8988            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
8989            type Token<'a> = <Self::Parameters<
8990                'a,
8991            > as alloy_sol_types::SolType>::Token<'a>;
8992            type Return = setPermissionedProverReturn;
8993            type ReturnTuple<'a> = ();
8994            type ReturnToken<'a> = <Self::ReturnTuple<
8995                'a,
8996            > as alloy_sol_types::SolType>::Token<'a>;
8997            const SIGNATURE: &'static str = "setPermissionedProver(address)";
8998            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
8999            #[inline]
9000            fn new<'a>(
9001                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9002            ) -> Self {
9003                tuple.into()
9004            }
9005            #[inline]
9006            fn tokenize(&self) -> Self::Token<'_> {
9007                (
9008                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9009                        &self.prover,
9010                    ),
9011                )
9012            }
9013            #[inline]
9014            fn abi_decode_returns(
9015                data: &[u8],
9016                validate: bool,
9017            ) -> alloy_sol_types::Result<Self::Return> {
9018                <Self::ReturnTuple<
9019                    '_,
9020                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9021                    .map(Into::into)
9022            }
9023        }
9024    };
9025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9026    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9027```solidity
9028function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9029```*/
9030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9031    #[derive(Clone)]
9032    pub struct setstateHistoryRetentionPeriodCall {
9033        #[allow(missing_docs)]
9034        pub historySeconds: u32,
9035    }
9036    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9038    #[derive(Clone)]
9039    pub struct setstateHistoryRetentionPeriodReturn {}
9040    #[allow(
9041        non_camel_case_types,
9042        non_snake_case,
9043        clippy::pub_underscore_fields,
9044        clippy::style
9045    )]
9046    const _: () = {
9047        use alloy::sol_types as alloy_sol_types;
9048        {
9049            #[doc(hidden)]
9050            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9051            #[doc(hidden)]
9052            type UnderlyingRustTuple<'a> = (u32,);
9053            #[cfg(test)]
9054            #[allow(dead_code, unreachable_patterns)]
9055            fn _type_assertion(
9056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9057            ) {
9058                match _t {
9059                    alloy_sol_types::private::AssertTypeEq::<
9060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9061                    >(_) => {}
9062                }
9063            }
9064            #[automatically_derived]
9065            #[doc(hidden)]
9066            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9067            for UnderlyingRustTuple<'_> {
9068                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9069                    (value.historySeconds,)
9070                }
9071            }
9072            #[automatically_derived]
9073            #[doc(hidden)]
9074            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9075            for setstateHistoryRetentionPeriodCall {
9076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9077                    Self { historySeconds: tuple.0 }
9078                }
9079            }
9080        }
9081        {
9082            #[doc(hidden)]
9083            type UnderlyingSolTuple<'a> = ();
9084            #[doc(hidden)]
9085            type UnderlyingRustTuple<'a> = ();
9086            #[cfg(test)]
9087            #[allow(dead_code, unreachable_patterns)]
9088            fn _type_assertion(
9089                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9090            ) {
9091                match _t {
9092                    alloy_sol_types::private::AssertTypeEq::<
9093                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9094                    >(_) => {}
9095                }
9096            }
9097            #[automatically_derived]
9098            #[doc(hidden)]
9099            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9100            for UnderlyingRustTuple<'_> {
9101                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9102                    ()
9103                }
9104            }
9105            #[automatically_derived]
9106            #[doc(hidden)]
9107            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9108            for setstateHistoryRetentionPeriodReturn {
9109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9110                    Self {}
9111                }
9112            }
9113        }
9114        #[automatically_derived]
9115        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9116            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9117            type Token<'a> = <Self::Parameters<
9118                'a,
9119            > as alloy_sol_types::SolType>::Token<'a>;
9120            type Return = setstateHistoryRetentionPeriodReturn;
9121            type ReturnTuple<'a> = ();
9122            type ReturnToken<'a> = <Self::ReturnTuple<
9123                'a,
9124            > as alloy_sol_types::SolType>::Token<'a>;
9125            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9126            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9127            #[inline]
9128            fn new<'a>(
9129                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9130            ) -> Self {
9131                tuple.into()
9132            }
9133            #[inline]
9134            fn tokenize(&self) -> Self::Token<'_> {
9135                (
9136                    <alloy::sol_types::sol_data::Uint<
9137                        32,
9138                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9139                )
9140            }
9141            #[inline]
9142            fn abi_decode_returns(
9143                data: &[u8],
9144                validate: bool,
9145            ) -> alloy_sol_types::Result<Self::Return> {
9146                <Self::ReturnTuple<
9147                    '_,
9148                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9149                    .map(Into::into)
9150            }
9151        }
9152    };
9153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9154    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9155```solidity
9156function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9157```*/
9158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9159    #[derive(Clone)]
9160    pub struct stateHistoryCommitmentsCall {
9161        #[allow(missing_docs)]
9162        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9163    }
9164    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9165    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9167    #[derive(Clone)]
9168    pub struct stateHistoryCommitmentsReturn {
9169        #[allow(missing_docs)]
9170        pub l1BlockHeight: u64,
9171        #[allow(missing_docs)]
9172        pub l1BlockTimestamp: u64,
9173        #[allow(missing_docs)]
9174        pub hotShotBlockHeight: u64,
9175        #[allow(missing_docs)]
9176        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9177    }
9178    #[allow(
9179        non_camel_case_types,
9180        non_snake_case,
9181        clippy::pub_underscore_fields,
9182        clippy::style
9183    )]
9184    const _: () = {
9185        use alloy::sol_types as alloy_sol_types;
9186        {
9187            #[doc(hidden)]
9188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9189            #[doc(hidden)]
9190            type UnderlyingRustTuple<'a> = (
9191                alloy::sol_types::private::primitives::aliases::U256,
9192            );
9193            #[cfg(test)]
9194            #[allow(dead_code, unreachable_patterns)]
9195            fn _type_assertion(
9196                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9197            ) {
9198                match _t {
9199                    alloy_sol_types::private::AssertTypeEq::<
9200                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9201                    >(_) => {}
9202                }
9203            }
9204            #[automatically_derived]
9205            #[doc(hidden)]
9206            impl ::core::convert::From<stateHistoryCommitmentsCall>
9207            for UnderlyingRustTuple<'_> {
9208                fn from(value: stateHistoryCommitmentsCall) -> Self {
9209                    (value._0,)
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9215            for stateHistoryCommitmentsCall {
9216                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9217                    Self { _0: tuple.0 }
9218                }
9219            }
9220        }
9221        {
9222            #[doc(hidden)]
9223            type UnderlyingSolTuple<'a> = (
9224                alloy::sol_types::sol_data::Uint<64>,
9225                alloy::sol_types::sol_data::Uint<64>,
9226                alloy::sol_types::sol_data::Uint<64>,
9227                BN254::ScalarField,
9228            );
9229            #[doc(hidden)]
9230            type UnderlyingRustTuple<'a> = (
9231                u64,
9232                u64,
9233                u64,
9234                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9235            );
9236            #[cfg(test)]
9237            #[allow(dead_code, unreachable_patterns)]
9238            fn _type_assertion(
9239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9240            ) {
9241                match _t {
9242                    alloy_sol_types::private::AssertTypeEq::<
9243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9244                    >(_) => {}
9245                }
9246            }
9247            #[automatically_derived]
9248            #[doc(hidden)]
9249            impl ::core::convert::From<stateHistoryCommitmentsReturn>
9250            for UnderlyingRustTuple<'_> {
9251                fn from(value: stateHistoryCommitmentsReturn) -> Self {
9252                    (
9253                        value.l1BlockHeight,
9254                        value.l1BlockTimestamp,
9255                        value.hotShotBlockHeight,
9256                        value.hotShotBlockCommRoot,
9257                    )
9258                }
9259            }
9260            #[automatically_derived]
9261            #[doc(hidden)]
9262            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9263            for stateHistoryCommitmentsReturn {
9264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9265                    Self {
9266                        l1BlockHeight: tuple.0,
9267                        l1BlockTimestamp: tuple.1,
9268                        hotShotBlockHeight: tuple.2,
9269                        hotShotBlockCommRoot: tuple.3,
9270                    }
9271                }
9272            }
9273        }
9274        #[automatically_derived]
9275        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
9276            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9277            type Token<'a> = <Self::Parameters<
9278                'a,
9279            > as alloy_sol_types::SolType>::Token<'a>;
9280            type Return = stateHistoryCommitmentsReturn;
9281            type ReturnTuple<'a> = (
9282                alloy::sol_types::sol_data::Uint<64>,
9283                alloy::sol_types::sol_data::Uint<64>,
9284                alloy::sol_types::sol_data::Uint<64>,
9285                BN254::ScalarField,
9286            );
9287            type ReturnToken<'a> = <Self::ReturnTuple<
9288                'a,
9289            > as alloy_sol_types::SolType>::Token<'a>;
9290            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
9291            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
9292            #[inline]
9293            fn new<'a>(
9294                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9295            ) -> Self {
9296                tuple.into()
9297            }
9298            #[inline]
9299            fn tokenize(&self) -> Self::Token<'_> {
9300                (
9301                    <alloy::sol_types::sol_data::Uint<
9302                        256,
9303                    > as alloy_sol_types::SolType>::tokenize(&self._0),
9304                )
9305            }
9306            #[inline]
9307            fn abi_decode_returns(
9308                data: &[u8],
9309                validate: bool,
9310            ) -> alloy_sol_types::Result<Self::Return> {
9311                <Self::ReturnTuple<
9312                    '_,
9313                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9314                    .map(Into::into)
9315            }
9316        }
9317    };
9318    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9319    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
9320```solidity
9321function stateHistoryFirstIndex() external view returns (uint64);
9322```*/
9323    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9324    #[derive(Clone)]
9325    pub struct stateHistoryFirstIndexCall {}
9326    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9327    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
9328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9329    #[derive(Clone)]
9330    pub struct stateHistoryFirstIndexReturn {
9331        #[allow(missing_docs)]
9332        pub _0: u64,
9333    }
9334    #[allow(
9335        non_camel_case_types,
9336        non_snake_case,
9337        clippy::pub_underscore_fields,
9338        clippy::style
9339    )]
9340    const _: () = {
9341        use alloy::sol_types as alloy_sol_types;
9342        {
9343            #[doc(hidden)]
9344            type UnderlyingSolTuple<'a> = ();
9345            #[doc(hidden)]
9346            type UnderlyingRustTuple<'a> = ();
9347            #[cfg(test)]
9348            #[allow(dead_code, unreachable_patterns)]
9349            fn _type_assertion(
9350                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9351            ) {
9352                match _t {
9353                    alloy_sol_types::private::AssertTypeEq::<
9354                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9355                    >(_) => {}
9356                }
9357            }
9358            #[automatically_derived]
9359            #[doc(hidden)]
9360            impl ::core::convert::From<stateHistoryFirstIndexCall>
9361            for UnderlyingRustTuple<'_> {
9362                fn from(value: stateHistoryFirstIndexCall) -> Self {
9363                    ()
9364                }
9365            }
9366            #[automatically_derived]
9367            #[doc(hidden)]
9368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9369            for stateHistoryFirstIndexCall {
9370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9371                    Self {}
9372                }
9373            }
9374        }
9375        {
9376            #[doc(hidden)]
9377            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9378            #[doc(hidden)]
9379            type UnderlyingRustTuple<'a> = (u64,);
9380            #[cfg(test)]
9381            #[allow(dead_code, unreachable_patterns)]
9382            fn _type_assertion(
9383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9384            ) {
9385                match _t {
9386                    alloy_sol_types::private::AssertTypeEq::<
9387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9388                    >(_) => {}
9389                }
9390            }
9391            #[automatically_derived]
9392            #[doc(hidden)]
9393            impl ::core::convert::From<stateHistoryFirstIndexReturn>
9394            for UnderlyingRustTuple<'_> {
9395                fn from(value: stateHistoryFirstIndexReturn) -> Self {
9396                    (value._0,)
9397                }
9398            }
9399            #[automatically_derived]
9400            #[doc(hidden)]
9401            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9402            for stateHistoryFirstIndexReturn {
9403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9404                    Self { _0: tuple.0 }
9405                }
9406            }
9407        }
9408        #[automatically_derived]
9409        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
9410            type Parameters<'a> = ();
9411            type Token<'a> = <Self::Parameters<
9412                'a,
9413            > as alloy_sol_types::SolType>::Token<'a>;
9414            type Return = stateHistoryFirstIndexReturn;
9415            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9416            type ReturnToken<'a> = <Self::ReturnTuple<
9417                'a,
9418            > as alloy_sol_types::SolType>::Token<'a>;
9419            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
9420            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
9421            #[inline]
9422            fn new<'a>(
9423                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9424            ) -> Self {
9425                tuple.into()
9426            }
9427            #[inline]
9428            fn tokenize(&self) -> Self::Token<'_> {
9429                ()
9430            }
9431            #[inline]
9432            fn abi_decode_returns(
9433                data: &[u8],
9434                validate: bool,
9435            ) -> alloy_sol_types::Result<Self::Return> {
9436                <Self::ReturnTuple<
9437                    '_,
9438                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9439                    .map(Into::into)
9440            }
9441        }
9442    };
9443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9444    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
9445```solidity
9446function stateHistoryRetentionPeriod() external view returns (uint32);
9447```*/
9448    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9449    #[derive(Clone)]
9450    pub struct stateHistoryRetentionPeriodCall {}
9451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9452    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
9453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9454    #[derive(Clone)]
9455    pub struct stateHistoryRetentionPeriodReturn {
9456        #[allow(missing_docs)]
9457        pub _0: u32,
9458    }
9459    #[allow(
9460        non_camel_case_types,
9461        non_snake_case,
9462        clippy::pub_underscore_fields,
9463        clippy::style
9464    )]
9465    const _: () = {
9466        use alloy::sol_types as alloy_sol_types;
9467        {
9468            #[doc(hidden)]
9469            type UnderlyingSolTuple<'a> = ();
9470            #[doc(hidden)]
9471            type UnderlyingRustTuple<'a> = ();
9472            #[cfg(test)]
9473            #[allow(dead_code, unreachable_patterns)]
9474            fn _type_assertion(
9475                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9476            ) {
9477                match _t {
9478                    alloy_sol_types::private::AssertTypeEq::<
9479                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9480                    >(_) => {}
9481                }
9482            }
9483            #[automatically_derived]
9484            #[doc(hidden)]
9485            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
9486            for UnderlyingRustTuple<'_> {
9487                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
9488                    ()
9489                }
9490            }
9491            #[automatically_derived]
9492            #[doc(hidden)]
9493            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9494            for stateHistoryRetentionPeriodCall {
9495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9496                    Self {}
9497                }
9498            }
9499        }
9500        {
9501            #[doc(hidden)]
9502            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9503            #[doc(hidden)]
9504            type UnderlyingRustTuple<'a> = (u32,);
9505            #[cfg(test)]
9506            #[allow(dead_code, unreachable_patterns)]
9507            fn _type_assertion(
9508                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9509            ) {
9510                match _t {
9511                    alloy_sol_types::private::AssertTypeEq::<
9512                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9513                    >(_) => {}
9514                }
9515            }
9516            #[automatically_derived]
9517            #[doc(hidden)]
9518            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
9519            for UnderlyingRustTuple<'_> {
9520                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
9521                    (value._0,)
9522                }
9523            }
9524            #[automatically_derived]
9525            #[doc(hidden)]
9526            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9527            for stateHistoryRetentionPeriodReturn {
9528                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9529                    Self { _0: tuple.0 }
9530                }
9531            }
9532        }
9533        #[automatically_derived]
9534        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
9535            type Parameters<'a> = ();
9536            type Token<'a> = <Self::Parameters<
9537                'a,
9538            > as alloy_sol_types::SolType>::Token<'a>;
9539            type Return = stateHistoryRetentionPeriodReturn;
9540            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9541            type ReturnToken<'a> = <Self::ReturnTuple<
9542                'a,
9543            > as alloy_sol_types::SolType>::Token<'a>;
9544            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
9545            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
9546            #[inline]
9547            fn new<'a>(
9548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9549            ) -> Self {
9550                tuple.into()
9551            }
9552            #[inline]
9553            fn tokenize(&self) -> Self::Token<'_> {
9554                ()
9555            }
9556            #[inline]
9557            fn abi_decode_returns(
9558                data: &[u8],
9559                validate: bool,
9560            ) -> alloy_sol_types::Result<Self::Return> {
9561                <Self::ReturnTuple<
9562                    '_,
9563                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9564                    .map(Into::into)
9565            }
9566        }
9567    };
9568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9569    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
9570```solidity
9571function transferOwnership(address newOwner) external;
9572```*/
9573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9574    #[derive(Clone)]
9575    pub struct transferOwnershipCall {
9576        #[allow(missing_docs)]
9577        pub newOwner: alloy::sol_types::private::Address,
9578    }
9579    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
9580    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9581    #[derive(Clone)]
9582    pub struct transferOwnershipReturn {}
9583    #[allow(
9584        non_camel_case_types,
9585        non_snake_case,
9586        clippy::pub_underscore_fields,
9587        clippy::style
9588    )]
9589    const _: () = {
9590        use alloy::sol_types as alloy_sol_types;
9591        {
9592            #[doc(hidden)]
9593            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9594            #[doc(hidden)]
9595            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9596            #[cfg(test)]
9597            #[allow(dead_code, unreachable_patterns)]
9598            fn _type_assertion(
9599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9600            ) {
9601                match _t {
9602                    alloy_sol_types::private::AssertTypeEq::<
9603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9604                    >(_) => {}
9605                }
9606            }
9607            #[automatically_derived]
9608            #[doc(hidden)]
9609            impl ::core::convert::From<transferOwnershipCall>
9610            for UnderlyingRustTuple<'_> {
9611                fn from(value: transferOwnershipCall) -> Self {
9612                    (value.newOwner,)
9613                }
9614            }
9615            #[automatically_derived]
9616            #[doc(hidden)]
9617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9618            for transferOwnershipCall {
9619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9620                    Self { newOwner: tuple.0 }
9621                }
9622            }
9623        }
9624        {
9625            #[doc(hidden)]
9626            type UnderlyingSolTuple<'a> = ();
9627            #[doc(hidden)]
9628            type UnderlyingRustTuple<'a> = ();
9629            #[cfg(test)]
9630            #[allow(dead_code, unreachable_patterns)]
9631            fn _type_assertion(
9632                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9633            ) {
9634                match _t {
9635                    alloy_sol_types::private::AssertTypeEq::<
9636                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9637                    >(_) => {}
9638                }
9639            }
9640            #[automatically_derived]
9641            #[doc(hidden)]
9642            impl ::core::convert::From<transferOwnershipReturn>
9643            for UnderlyingRustTuple<'_> {
9644                fn from(value: transferOwnershipReturn) -> Self {
9645                    ()
9646                }
9647            }
9648            #[automatically_derived]
9649            #[doc(hidden)]
9650            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9651            for transferOwnershipReturn {
9652                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9653                    Self {}
9654                }
9655            }
9656        }
9657        #[automatically_derived]
9658        impl alloy_sol_types::SolCall for transferOwnershipCall {
9659            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9660            type Token<'a> = <Self::Parameters<
9661                'a,
9662            > as alloy_sol_types::SolType>::Token<'a>;
9663            type Return = transferOwnershipReturn;
9664            type ReturnTuple<'a> = ();
9665            type ReturnToken<'a> = <Self::ReturnTuple<
9666                'a,
9667            > as alloy_sol_types::SolType>::Token<'a>;
9668            const SIGNATURE: &'static str = "transferOwnership(address)";
9669            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
9670            #[inline]
9671            fn new<'a>(
9672                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9673            ) -> Self {
9674                tuple.into()
9675            }
9676            #[inline]
9677            fn tokenize(&self) -> Self::Token<'_> {
9678                (
9679                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9680                        &self.newOwner,
9681                    ),
9682                )
9683            }
9684            #[inline]
9685            fn abi_decode_returns(
9686                data: &[u8],
9687                validate: bool,
9688            ) -> alloy_sol_types::Result<Self::Return> {
9689                <Self::ReturnTuple<
9690                    '_,
9691                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9692                    .map(Into::into)
9693            }
9694        }
9695    };
9696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9697    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
9698```solidity
9699function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
9700```*/
9701    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9702    #[derive(Clone)]
9703    pub struct upgradeToAndCallCall {
9704        #[allow(missing_docs)]
9705        pub newImplementation: alloy::sol_types::private::Address,
9706        #[allow(missing_docs)]
9707        pub data: alloy::sol_types::private::Bytes,
9708    }
9709    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
9710    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9711    #[derive(Clone)]
9712    pub struct upgradeToAndCallReturn {}
9713    #[allow(
9714        non_camel_case_types,
9715        non_snake_case,
9716        clippy::pub_underscore_fields,
9717        clippy::style
9718    )]
9719    const _: () = {
9720        use alloy::sol_types as alloy_sol_types;
9721        {
9722            #[doc(hidden)]
9723            type UnderlyingSolTuple<'a> = (
9724                alloy::sol_types::sol_data::Address,
9725                alloy::sol_types::sol_data::Bytes,
9726            );
9727            #[doc(hidden)]
9728            type UnderlyingRustTuple<'a> = (
9729                alloy::sol_types::private::Address,
9730                alloy::sol_types::private::Bytes,
9731            );
9732            #[cfg(test)]
9733            #[allow(dead_code, unreachable_patterns)]
9734            fn _type_assertion(
9735                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9736            ) {
9737                match _t {
9738                    alloy_sol_types::private::AssertTypeEq::<
9739                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9740                    >(_) => {}
9741                }
9742            }
9743            #[automatically_derived]
9744            #[doc(hidden)]
9745            impl ::core::convert::From<upgradeToAndCallCall>
9746            for UnderlyingRustTuple<'_> {
9747                fn from(value: upgradeToAndCallCall) -> Self {
9748                    (value.newImplementation, value.data)
9749                }
9750            }
9751            #[automatically_derived]
9752            #[doc(hidden)]
9753            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9754            for upgradeToAndCallCall {
9755                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9756                    Self {
9757                        newImplementation: tuple.0,
9758                        data: tuple.1,
9759                    }
9760                }
9761            }
9762        }
9763        {
9764            #[doc(hidden)]
9765            type UnderlyingSolTuple<'a> = ();
9766            #[doc(hidden)]
9767            type UnderlyingRustTuple<'a> = ();
9768            #[cfg(test)]
9769            #[allow(dead_code, unreachable_patterns)]
9770            fn _type_assertion(
9771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9772            ) {
9773                match _t {
9774                    alloy_sol_types::private::AssertTypeEq::<
9775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9776                    >(_) => {}
9777                }
9778            }
9779            #[automatically_derived]
9780            #[doc(hidden)]
9781            impl ::core::convert::From<upgradeToAndCallReturn>
9782            for UnderlyingRustTuple<'_> {
9783                fn from(value: upgradeToAndCallReturn) -> Self {
9784                    ()
9785                }
9786            }
9787            #[automatically_derived]
9788            #[doc(hidden)]
9789            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9790            for upgradeToAndCallReturn {
9791                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9792                    Self {}
9793                }
9794            }
9795        }
9796        #[automatically_derived]
9797        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
9798            type Parameters<'a> = (
9799                alloy::sol_types::sol_data::Address,
9800                alloy::sol_types::sol_data::Bytes,
9801            );
9802            type Token<'a> = <Self::Parameters<
9803                'a,
9804            > as alloy_sol_types::SolType>::Token<'a>;
9805            type Return = upgradeToAndCallReturn;
9806            type ReturnTuple<'a> = ();
9807            type ReturnToken<'a> = <Self::ReturnTuple<
9808                'a,
9809            > as alloy_sol_types::SolType>::Token<'a>;
9810            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
9811            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
9812            #[inline]
9813            fn new<'a>(
9814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9815            ) -> Self {
9816                tuple.into()
9817            }
9818            #[inline]
9819            fn tokenize(&self) -> Self::Token<'_> {
9820                (
9821                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9822                        &self.newImplementation,
9823                    ),
9824                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
9825                        &self.data,
9826                    ),
9827                )
9828            }
9829            #[inline]
9830            fn abi_decode_returns(
9831                data: &[u8],
9832                validate: bool,
9833            ) -> alloy_sol_types::Result<Self::Return> {
9834                <Self::ReturnTuple<
9835                    '_,
9836                > as alloy_sol_types::SolType>::abi_decode_sequence(data, validate)
9837                    .map(Into::into)
9838            }
9839        }
9840    };
9841    ///Container for all the [`LightClientArbitrum`](self) function calls.
9842    #[derive()]
9843    pub enum LightClientArbitrumCalls {
9844        #[allow(missing_docs)]
9845        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
9846        #[allow(missing_docs)]
9847        _getVk(_getVkCall),
9848        #[allow(missing_docs)]
9849        currentBlockNumber(currentBlockNumberCall),
9850        #[allow(missing_docs)]
9851        disablePermissionedProverMode(disablePermissionedProverModeCall),
9852        #[allow(missing_docs)]
9853        finalizedState(finalizedStateCall),
9854        #[allow(missing_docs)]
9855        genesisStakeTableState(genesisStakeTableStateCall),
9856        #[allow(missing_docs)]
9857        genesisState(genesisStateCall),
9858        #[allow(missing_docs)]
9859        getHotShotCommitment(getHotShotCommitmentCall),
9860        #[allow(missing_docs)]
9861        getStateHistoryCount(getStateHistoryCountCall),
9862        #[allow(missing_docs)]
9863        getVersion(getVersionCall),
9864        #[allow(missing_docs)]
9865        initialize(initializeCall),
9866        #[allow(missing_docs)]
9867        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
9868        #[allow(missing_docs)]
9869        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
9870        #[allow(missing_docs)]
9871        newFinalizedState(newFinalizedStateCall),
9872        #[allow(missing_docs)]
9873        owner(ownerCall),
9874        #[allow(missing_docs)]
9875        permissionedProver(permissionedProverCall),
9876        #[allow(missing_docs)]
9877        proxiableUUID(proxiableUUIDCall),
9878        #[allow(missing_docs)]
9879        renounceOwnership(renounceOwnershipCall),
9880        #[allow(missing_docs)]
9881        setPermissionedProver(setPermissionedProverCall),
9882        #[allow(missing_docs)]
9883        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
9884        #[allow(missing_docs)]
9885        stateHistoryCommitments(stateHistoryCommitmentsCall),
9886        #[allow(missing_docs)]
9887        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
9888        #[allow(missing_docs)]
9889        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
9890        #[allow(missing_docs)]
9891        transferOwnership(transferOwnershipCall),
9892        #[allow(missing_docs)]
9893        upgradeToAndCall(upgradeToAndCallCall),
9894    }
9895    #[automatically_derived]
9896    impl LightClientArbitrumCalls {
9897        /// All the selectors of this enum.
9898        ///
9899        /// Note that the selectors might not be in the same order as the variants.
9900        /// No guarantees are made about the order of the selectors.
9901        ///
9902        /// Prefer using `SolInterface` methods instead.
9903        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9904            [1u8, 63u8, 165u8, 252u8],
9905            [2u8, 181u8, 146u8, 243u8],
9906            [13u8, 142u8, 110u8, 44u8],
9907            [18u8, 23u8, 60u8, 44u8],
9908            [32u8, 99u8, 212u8, 247u8],
9909            [47u8, 121u8, 136u8, 157u8],
9910            [49u8, 61u8, 247u8, 177u8],
9911            [55u8, 142u8, 194u8, 59u8],
9912            [66u8, 109u8, 49u8, 148u8],
9913            [79u8, 30u8, 242u8, 134u8],
9914            [82u8, 209u8, 144u8, 45u8],
9915            [105u8, 204u8, 106u8, 4u8],
9916            [113u8, 80u8, 24u8, 166u8],
9917            [130u8, 110u8, 65u8, 252u8],
9918            [133u8, 132u8, 210u8, 63u8],
9919            [141u8, 165u8, 203u8, 91u8],
9920            [150u8, 193u8, 202u8, 97u8],
9921            [155u8, 170u8, 60u8, 201u8],
9922            [159u8, 219u8, 84u8, 167u8],
9923            [173u8, 60u8, 177u8, 204u8],
9924            [194u8, 59u8, 158u8, 158u8],
9925            [210u8, 77u8, 147u8, 61u8],
9926            [224u8, 48u8, 51u8, 1u8],
9927            [242u8, 253u8, 227u8, 139u8],
9928            [249u8, 229u8, 13u8, 25u8],
9929        ];
9930    }
9931    #[automatically_derived]
9932    impl alloy_sol_types::SolInterface for LightClientArbitrumCalls {
9933        const NAME: &'static str = "LightClientArbitrumCalls";
9934        const MIN_DATA_LENGTH: usize = 0usize;
9935        const COUNT: usize = 25usize;
9936        #[inline]
9937        fn selector(&self) -> [u8; 4] {
9938            match self {
9939                Self::UPGRADE_INTERFACE_VERSION(_) => {
9940                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
9941                }
9942                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
9943                Self::currentBlockNumber(_) => {
9944                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
9945                }
9946                Self::disablePermissionedProverMode(_) => {
9947                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
9948                }
9949                Self::finalizedState(_) => {
9950                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9951                }
9952                Self::genesisStakeTableState(_) => {
9953                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
9954                }
9955                Self::genesisState(_) => {
9956                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
9957                }
9958                Self::getHotShotCommitment(_) => {
9959                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
9960                }
9961                Self::getStateHistoryCount(_) => {
9962                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
9963                }
9964                Self::getVersion(_) => {
9965                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
9966                }
9967                Self::initialize(_) => {
9968                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
9969                }
9970                Self::isPermissionedProverEnabled(_) => {
9971                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
9972                }
9973                Self::lagOverEscapeHatchThreshold(_) => {
9974                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
9975                }
9976                Self::newFinalizedState(_) => {
9977                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
9978                }
9979                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
9980                Self::permissionedProver(_) => {
9981                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9982                }
9983                Self::proxiableUUID(_) => {
9984                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
9985                }
9986                Self::renounceOwnership(_) => {
9987                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
9988                }
9989                Self::setPermissionedProver(_) => {
9990                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
9991                }
9992                Self::setstateHistoryRetentionPeriod(_) => {
9993                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
9994                }
9995                Self::stateHistoryCommitments(_) => {
9996                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
9997                }
9998                Self::stateHistoryFirstIndex(_) => {
9999                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10000                }
10001                Self::stateHistoryRetentionPeriod(_) => {
10002                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10003                }
10004                Self::transferOwnership(_) => {
10005                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10006                }
10007                Self::upgradeToAndCall(_) => {
10008                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10009                }
10010            }
10011        }
10012        #[inline]
10013        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10014            Self::SELECTORS.get(i).copied()
10015        }
10016        #[inline]
10017        fn valid_selector(selector: [u8; 4]) -> bool {
10018            Self::SELECTORS.binary_search(&selector).is_ok()
10019        }
10020        #[inline]
10021        #[allow(non_snake_case)]
10022        fn abi_decode_raw(
10023            selector: [u8; 4],
10024            data: &[u8],
10025            validate: bool,
10026        ) -> alloy_sol_types::Result<Self> {
10027            static DECODE_SHIMS: &[fn(
10028                &[u8],
10029                bool,
10030            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
10031                {
10032                    fn setPermissionedProver(
10033                        data: &[u8],
10034                        validate: bool,
10035                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10036                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10037                                data,
10038                                validate,
10039                            )
10040                            .map(LightClientArbitrumCalls::setPermissionedProver)
10041                    }
10042                    setPermissionedProver
10043                },
10044                {
10045                    fn stateHistoryCommitments(
10046                        data: &[u8],
10047                        validate: bool,
10048                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10049                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10050                                data,
10051                                validate,
10052                            )
10053                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
10054                    }
10055                    stateHistoryCommitments
10056                },
10057                {
10058                    fn getVersion(
10059                        data: &[u8],
10060                        validate: bool,
10061                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10062                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10063                                data,
10064                                validate,
10065                            )
10066                            .map(LightClientArbitrumCalls::getVersion)
10067                    }
10068                    getVersion
10069                },
10070                {
10071                    fn _getVk(
10072                        data: &[u8],
10073                        validate: bool,
10074                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10075                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(
10076                                data,
10077                                validate,
10078                            )
10079                            .map(LightClientArbitrumCalls::_getVk)
10080                    }
10081                    _getVk
10082                },
10083                {
10084                    fn newFinalizedState(
10085                        data: &[u8],
10086                        validate: bool,
10087                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10088                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10089                                data,
10090                                validate,
10091                            )
10092                            .map(LightClientArbitrumCalls::newFinalizedState)
10093                    }
10094                    newFinalizedState
10095                },
10096                {
10097                    fn stateHistoryFirstIndex(
10098                        data: &[u8],
10099                        validate: bool,
10100                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10101                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10102                                data,
10103                                validate,
10104                            )
10105                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
10106                    }
10107                    stateHistoryFirstIndex
10108                },
10109                {
10110                    fn permissionedProver(
10111                        data: &[u8],
10112                        validate: bool,
10113                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10114                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10115                                data,
10116                                validate,
10117                            )
10118                            .map(LightClientArbitrumCalls::permissionedProver)
10119                    }
10120                    permissionedProver
10121                },
10122                {
10123                    fn currentBlockNumber(
10124                        data: &[u8],
10125                        validate: bool,
10126                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10127                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10128                                data,
10129                                validate,
10130                            )
10131                            .map(LightClientArbitrumCalls::currentBlockNumber)
10132                    }
10133                    currentBlockNumber
10134                },
10135                {
10136                    fn genesisStakeTableState(
10137                        data: &[u8],
10138                        validate: bool,
10139                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10140                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10141                                data,
10142                                validate,
10143                            )
10144                            .map(LightClientArbitrumCalls::genesisStakeTableState)
10145                    }
10146                    genesisStakeTableState
10147                },
10148                {
10149                    fn upgradeToAndCall(
10150                        data: &[u8],
10151                        validate: bool,
10152                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10153                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10154                                data,
10155                                validate,
10156                            )
10157                            .map(LightClientArbitrumCalls::upgradeToAndCall)
10158                    }
10159                    upgradeToAndCall
10160                },
10161                {
10162                    fn proxiableUUID(
10163                        data: &[u8],
10164                        validate: bool,
10165                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10166                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10167                                data,
10168                                validate,
10169                            )
10170                            .map(LightClientArbitrumCalls::proxiableUUID)
10171                    }
10172                    proxiableUUID
10173                },
10174                {
10175                    fn disablePermissionedProverMode(
10176                        data: &[u8],
10177                        validate: bool,
10178                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10179                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10180                                data,
10181                                validate,
10182                            )
10183                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
10184                    }
10185                    disablePermissionedProverMode
10186                },
10187                {
10188                    fn renounceOwnership(
10189                        data: &[u8],
10190                        validate: bool,
10191                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10192                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10193                                data,
10194                                validate,
10195                            )
10196                            .map(LightClientArbitrumCalls::renounceOwnership)
10197                    }
10198                    renounceOwnership
10199                },
10200                {
10201                    fn isPermissionedProverEnabled(
10202                        data: &[u8],
10203                        validate: bool,
10204                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10205                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
10206                                data,
10207                                validate,
10208                            )
10209                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
10210                    }
10211                    isPermissionedProverEnabled
10212                },
10213                {
10214                    fn getHotShotCommitment(
10215                        data: &[u8],
10216                        validate: bool,
10217                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10218                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
10219                                data,
10220                                validate,
10221                            )
10222                            .map(LightClientArbitrumCalls::getHotShotCommitment)
10223                    }
10224                    getHotShotCommitment
10225                },
10226                {
10227                    fn owner(
10228                        data: &[u8],
10229                        validate: bool,
10230                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10231                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(
10232                                data,
10233                                validate,
10234                            )
10235                            .map(LightClientArbitrumCalls::owner)
10236                    }
10237                    owner
10238                },
10239                {
10240                    fn setstateHistoryRetentionPeriod(
10241                        data: &[u8],
10242                        validate: bool,
10243                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10244                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10245                                data,
10246                                validate,
10247                            )
10248                            .map(
10249                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
10250                            )
10251                    }
10252                    setstateHistoryRetentionPeriod
10253                },
10254                {
10255                    fn initialize(
10256                        data: &[u8],
10257                        validate: bool,
10258                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10259                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10260                                data,
10261                                validate,
10262                            )
10263                            .map(LightClientArbitrumCalls::initialize)
10264                    }
10265                    initialize
10266                },
10267                {
10268                    fn finalizedState(
10269                        data: &[u8],
10270                        validate: bool,
10271                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10272                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10273                                data,
10274                                validate,
10275                            )
10276                            .map(LightClientArbitrumCalls::finalizedState)
10277                    }
10278                    finalizedState
10279                },
10280                {
10281                    fn UPGRADE_INTERFACE_VERSION(
10282                        data: &[u8],
10283                        validate: bool,
10284                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10285                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
10286                                data,
10287                                validate,
10288                            )
10289                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
10290                    }
10291                    UPGRADE_INTERFACE_VERSION
10292                },
10293                {
10294                    fn stateHistoryRetentionPeriod(
10295                        data: &[u8],
10296                        validate: bool,
10297                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10298                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
10299                                data,
10300                                validate,
10301                            )
10302                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
10303                    }
10304                    stateHistoryRetentionPeriod
10305                },
10306                {
10307                    fn genesisState(
10308                        data: &[u8],
10309                        validate: bool,
10310                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10311                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10312                                data,
10313                                validate,
10314                            )
10315                            .map(LightClientArbitrumCalls::genesisState)
10316                    }
10317                    genesisState
10318                },
10319                {
10320                    fn lagOverEscapeHatchThreshold(
10321                        data: &[u8],
10322                        validate: bool,
10323                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10324                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
10325                                data,
10326                                validate,
10327                            )
10328                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
10329                    }
10330                    lagOverEscapeHatchThreshold
10331                },
10332                {
10333                    fn transferOwnership(
10334                        data: &[u8],
10335                        validate: bool,
10336                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10337                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10338                                data,
10339                                validate,
10340                            )
10341                            .map(LightClientArbitrumCalls::transferOwnership)
10342                    }
10343                    transferOwnership
10344                },
10345                {
10346                    fn getStateHistoryCount(
10347                        data: &[u8],
10348                        validate: bool,
10349                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
10350                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
10351                                data,
10352                                validate,
10353                            )
10354                            .map(LightClientArbitrumCalls::getStateHistoryCount)
10355                    }
10356                    getStateHistoryCount
10357                },
10358            ];
10359            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
10360                return Err(
10361                    alloy_sol_types::Error::unknown_selector(
10362                        <Self as alloy_sol_types::SolInterface>::NAME,
10363                        selector,
10364                    ),
10365                );
10366            };
10367            DECODE_SHIMS[idx](data, validate)
10368        }
10369        #[inline]
10370        fn abi_encoded_size(&self) -> usize {
10371            match self {
10372                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10373                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
10374                        inner,
10375                    )
10376                }
10377                Self::_getVk(inner) => {
10378                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10379                }
10380                Self::currentBlockNumber(inner) => {
10381                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
10382                        inner,
10383                    )
10384                }
10385                Self::disablePermissionedProverMode(inner) => {
10386                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
10387                        inner,
10388                    )
10389                }
10390                Self::finalizedState(inner) => {
10391                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10392                        inner,
10393                    )
10394                }
10395                Self::genesisStakeTableState(inner) => {
10396                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10397                        inner,
10398                    )
10399                }
10400                Self::genesisState(inner) => {
10401                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10402                        inner,
10403                    )
10404                }
10405                Self::getHotShotCommitment(inner) => {
10406                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
10407                        inner,
10408                    )
10409                }
10410                Self::getStateHistoryCount(inner) => {
10411                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
10412                        inner,
10413                    )
10414                }
10415                Self::getVersion(inner) => {
10416                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10417                }
10418                Self::initialize(inner) => {
10419                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10420                }
10421                Self::isPermissionedProverEnabled(inner) => {
10422                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
10423                        inner,
10424                    )
10425                }
10426                Self::lagOverEscapeHatchThreshold(inner) => {
10427                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
10428                        inner,
10429                    )
10430                }
10431                Self::newFinalizedState(inner) => {
10432                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
10433                        inner,
10434                    )
10435                }
10436                Self::owner(inner) => {
10437                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
10438                }
10439                Self::permissionedProver(inner) => {
10440                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10441                        inner,
10442                    )
10443                }
10444                Self::proxiableUUID(inner) => {
10445                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
10446                        inner,
10447                    )
10448                }
10449                Self::renounceOwnership(inner) => {
10450                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10451                        inner,
10452                    )
10453                }
10454                Self::setPermissionedProver(inner) => {
10455                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
10456                        inner,
10457                    )
10458                }
10459                Self::setstateHistoryRetentionPeriod(inner) => {
10460                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10461                        inner,
10462                    )
10463                }
10464                Self::stateHistoryCommitments(inner) => {
10465                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
10466                        inner,
10467                    )
10468                }
10469                Self::stateHistoryFirstIndex(inner) => {
10470                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
10471                        inner,
10472                    )
10473                }
10474                Self::stateHistoryRetentionPeriod(inner) => {
10475                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
10476                        inner,
10477                    )
10478                }
10479                Self::transferOwnership(inner) => {
10480                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
10481                        inner,
10482                    )
10483                }
10484                Self::upgradeToAndCall(inner) => {
10485                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
10486                        inner,
10487                    )
10488                }
10489            }
10490        }
10491        #[inline]
10492        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
10493            match self {
10494                Self::UPGRADE_INTERFACE_VERSION(inner) => {
10495                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
10496                        inner,
10497                        out,
10498                    )
10499                }
10500                Self::_getVk(inner) => {
10501                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10502                }
10503                Self::currentBlockNumber(inner) => {
10504                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
10505                        inner,
10506                        out,
10507                    )
10508                }
10509                Self::disablePermissionedProverMode(inner) => {
10510                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10511                        inner,
10512                        out,
10513                    )
10514                }
10515                Self::finalizedState(inner) => {
10516                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10517                        inner,
10518                        out,
10519                    )
10520                }
10521                Self::genesisStakeTableState(inner) => {
10522                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10523                        inner,
10524                        out,
10525                    )
10526                }
10527                Self::genesisState(inner) => {
10528                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10529                        inner,
10530                        out,
10531                    )
10532                }
10533                Self::getHotShotCommitment(inner) => {
10534                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
10535                        inner,
10536                        out,
10537                    )
10538                }
10539                Self::getStateHistoryCount(inner) => {
10540                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
10541                        inner,
10542                        out,
10543                    )
10544                }
10545                Self::getVersion(inner) => {
10546                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
10547                        inner,
10548                        out,
10549                    )
10550                }
10551                Self::initialize(inner) => {
10552                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
10553                        inner,
10554                        out,
10555                    )
10556                }
10557                Self::isPermissionedProverEnabled(inner) => {
10558                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
10559                        inner,
10560                        out,
10561                    )
10562                }
10563                Self::lagOverEscapeHatchThreshold(inner) => {
10564                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
10565                        inner,
10566                        out,
10567                    )
10568                }
10569                Self::newFinalizedState(inner) => {
10570                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
10571                        inner,
10572                        out,
10573                    )
10574                }
10575                Self::owner(inner) => {
10576                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
10577                }
10578                Self::permissionedProver(inner) => {
10579                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
10580                        inner,
10581                        out,
10582                    )
10583                }
10584                Self::proxiableUUID(inner) => {
10585                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
10586                        inner,
10587                        out,
10588                    )
10589                }
10590                Self::renounceOwnership(inner) => {
10591                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10592                        inner,
10593                        out,
10594                    )
10595                }
10596                Self::setPermissionedProver(inner) => {
10597                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
10598                        inner,
10599                        out,
10600                    )
10601                }
10602                Self::setstateHistoryRetentionPeriod(inner) => {
10603                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10604                        inner,
10605                        out,
10606                    )
10607                }
10608                Self::stateHistoryCommitments(inner) => {
10609                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
10610                        inner,
10611                        out,
10612                    )
10613                }
10614                Self::stateHistoryFirstIndex(inner) => {
10615                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
10616                        inner,
10617                        out,
10618                    )
10619                }
10620                Self::stateHistoryRetentionPeriod(inner) => {
10621                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
10622                        inner,
10623                        out,
10624                    )
10625                }
10626                Self::transferOwnership(inner) => {
10627                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
10628                        inner,
10629                        out,
10630                    )
10631                }
10632                Self::upgradeToAndCall(inner) => {
10633                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
10634                        inner,
10635                        out,
10636                    )
10637                }
10638            }
10639        }
10640    }
10641    ///Container for all the [`LightClientArbitrum`](self) custom errors.
10642    #[derive(Debug, PartialEq, Eq, Hash)]
10643    pub enum LightClientArbitrumErrors {
10644        #[allow(missing_docs)]
10645        AddressEmptyCode(AddressEmptyCode),
10646        #[allow(missing_docs)]
10647        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
10648        #[allow(missing_docs)]
10649        ERC1967NonPayable(ERC1967NonPayable),
10650        #[allow(missing_docs)]
10651        FailedInnerCall(FailedInnerCall),
10652        #[allow(missing_docs)]
10653        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
10654        #[allow(missing_docs)]
10655        InvalidAddress(InvalidAddress),
10656        #[allow(missing_docs)]
10657        InvalidArgs(InvalidArgs),
10658        #[allow(missing_docs)]
10659        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
10660        #[allow(missing_docs)]
10661        InvalidInitialization(InvalidInitialization),
10662        #[allow(missing_docs)]
10663        InvalidMaxStateHistory(InvalidMaxStateHistory),
10664        #[allow(missing_docs)]
10665        InvalidProof(InvalidProof),
10666        #[allow(missing_docs)]
10667        NoChangeRequired(NoChangeRequired),
10668        #[allow(missing_docs)]
10669        NotInitializing(NotInitializing),
10670        #[allow(missing_docs)]
10671        OutdatedState(OutdatedState),
10672        #[allow(missing_docs)]
10673        OwnableInvalidOwner(OwnableInvalidOwner),
10674        #[allow(missing_docs)]
10675        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
10676        #[allow(missing_docs)]
10677        ProverNotPermissioned(ProverNotPermissioned),
10678        #[allow(missing_docs)]
10679        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
10680        #[allow(missing_docs)]
10681        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
10682        #[allow(missing_docs)]
10683        WrongStakeTableUsed(WrongStakeTableUsed),
10684    }
10685    #[automatically_derived]
10686    impl LightClientArbitrumErrors {
10687        /// All the selectors of this enum.
10688        ///
10689        /// Note that the selectors might not be in the same order as the variants.
10690        /// No guarantees are made about the order of the selectors.
10691        ///
10692        /// Prefer using `SolInterface` methods instead.
10693        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10694            [5u8, 28u8, 70u8, 239u8],
10695            [9u8, 189u8, 227u8, 57u8],
10696            [17u8, 140u8, 218u8, 167u8],
10697            [20u8, 37u8, 234u8, 66u8],
10698            [30u8, 79u8, 189u8, 247u8],
10699            [76u8, 156u8, 140u8, 227u8],
10700            [81u8, 97u8, 128u8, 137u8],
10701            [97u8, 90u8, 146u8, 100u8],
10702            [153u8, 150u8, 179u8, 21u8],
10703            [161u8, 186u8, 7u8, 238u8],
10704            [163u8, 166u8, 71u8, 128u8],
10705            [168u8, 99u8, 174u8, 201u8],
10706            [170u8, 29u8, 73u8, 164u8],
10707            [176u8, 180u8, 56u8, 119u8],
10708            [179u8, 152u8, 151u8, 159u8],
10709            [215u8, 230u8, 188u8, 248u8],
10710            [224u8, 124u8, 141u8, 186u8],
10711            [230u8, 196u8, 36u8, 123u8],
10712            [244u8, 160u8, 238u8, 224u8],
10713            [249u8, 46u8, 232u8, 169u8],
10714        ];
10715    }
10716    #[automatically_derived]
10717    impl alloy_sol_types::SolInterface for LightClientArbitrumErrors {
10718        const NAME: &'static str = "LightClientArbitrumErrors";
10719        const MIN_DATA_LENGTH: usize = 0usize;
10720        const COUNT: usize = 20usize;
10721        #[inline]
10722        fn selector(&self) -> [u8; 4] {
10723            match self {
10724                Self::AddressEmptyCode(_) => {
10725                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
10726                }
10727                Self::ERC1967InvalidImplementation(_) => {
10728                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
10729                }
10730                Self::ERC1967NonPayable(_) => {
10731                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
10732                }
10733                Self::FailedInnerCall(_) => {
10734                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
10735                }
10736                Self::InsufficientSnapshotHistory(_) => {
10737                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
10738                }
10739                Self::InvalidAddress(_) => {
10740                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
10741                }
10742                Self::InvalidArgs(_) => {
10743                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
10744                }
10745                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
10746                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
10747                }
10748                Self::InvalidInitialization(_) => {
10749                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
10750                }
10751                Self::InvalidMaxStateHistory(_) => {
10752                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
10753                }
10754                Self::InvalidProof(_) => {
10755                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
10756                }
10757                Self::NoChangeRequired(_) => {
10758                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
10759                }
10760                Self::NotInitializing(_) => {
10761                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
10762                }
10763                Self::OutdatedState(_) => {
10764                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
10765                }
10766                Self::OwnableInvalidOwner(_) => {
10767                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
10768                }
10769                Self::OwnableUnauthorizedAccount(_) => {
10770                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
10771                }
10772                Self::ProverNotPermissioned(_) => {
10773                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
10774                }
10775                Self::UUPSUnauthorizedCallContext(_) => {
10776                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
10777                }
10778                Self::UUPSUnsupportedProxiableUUID(_) => {
10779                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
10780                }
10781                Self::WrongStakeTableUsed(_) => {
10782                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
10783                }
10784            }
10785        }
10786        #[inline]
10787        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10788            Self::SELECTORS.get(i).copied()
10789        }
10790        #[inline]
10791        fn valid_selector(selector: [u8; 4]) -> bool {
10792            Self::SELECTORS.binary_search(&selector).is_ok()
10793        }
10794        #[inline]
10795        #[allow(non_snake_case)]
10796        fn abi_decode_raw(
10797            selector: [u8; 4],
10798            data: &[u8],
10799            validate: bool,
10800        ) -> alloy_sol_types::Result<Self> {
10801            static DECODE_SHIMS: &[fn(
10802                &[u8],
10803                bool,
10804            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
10805                {
10806                    fn OutdatedState(
10807                        data: &[u8],
10808                        validate: bool,
10809                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10810                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
10811                                data,
10812                                validate,
10813                            )
10814                            .map(LightClientArbitrumErrors::OutdatedState)
10815                    }
10816                    OutdatedState
10817                },
10818                {
10819                    fn InvalidProof(
10820                        data: &[u8],
10821                        validate: bool,
10822                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10823                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(
10824                                data,
10825                                validate,
10826                            )
10827                            .map(LightClientArbitrumErrors::InvalidProof)
10828                    }
10829                    InvalidProof
10830                },
10831                {
10832                    fn OwnableUnauthorizedAccount(
10833                        data: &[u8],
10834                        validate: bool,
10835                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10836                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
10837                                data,
10838                                validate,
10839                            )
10840                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
10841                    }
10842                    OwnableUnauthorizedAccount
10843                },
10844                {
10845                    fn FailedInnerCall(
10846                        data: &[u8],
10847                        validate: bool,
10848                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10849                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
10850                                data,
10851                                validate,
10852                            )
10853                            .map(LightClientArbitrumErrors::FailedInnerCall)
10854                    }
10855                    FailedInnerCall
10856                },
10857                {
10858                    fn OwnableInvalidOwner(
10859                        data: &[u8],
10860                        validate: bool,
10861                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10862                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
10863                                data,
10864                                validate,
10865                            )
10866                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
10867                    }
10868                    OwnableInvalidOwner
10869                },
10870                {
10871                    fn ERC1967InvalidImplementation(
10872                        data: &[u8],
10873                        validate: bool,
10874                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10875                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
10876                                data,
10877                                validate,
10878                            )
10879                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
10880                    }
10881                    ERC1967InvalidImplementation
10882                },
10883                {
10884                    fn WrongStakeTableUsed(
10885                        data: &[u8],
10886                        validate: bool,
10887                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10888                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
10889                                data,
10890                                validate,
10891                            )
10892                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
10893                    }
10894                    WrongStakeTableUsed
10895                },
10896                {
10897                    fn InvalidHotShotBlockForCommitmentCheck(
10898                        data: &[u8],
10899                        validate: bool,
10900                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10901                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
10902                                data,
10903                                validate,
10904                            )
10905                            .map(
10906                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
10907                            )
10908                    }
10909                    InvalidHotShotBlockForCommitmentCheck
10910                },
10911                {
10912                    fn AddressEmptyCode(
10913                        data: &[u8],
10914                        validate: bool,
10915                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10916                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
10917                                data,
10918                                validate,
10919                            )
10920                            .map(LightClientArbitrumErrors::AddressEmptyCode)
10921                    }
10922                    AddressEmptyCode
10923                },
10924                {
10925                    fn InvalidArgs(
10926                        data: &[u8],
10927                        validate: bool,
10928                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10929                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(
10930                                data,
10931                                validate,
10932                            )
10933                            .map(LightClientArbitrumErrors::InvalidArgs)
10934                    }
10935                    InvalidArgs
10936                },
10937                {
10938                    fn ProverNotPermissioned(
10939                        data: &[u8],
10940                        validate: bool,
10941                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10942                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
10943                                data,
10944                                validate,
10945                            )
10946                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
10947                    }
10948                    ProverNotPermissioned
10949                },
10950                {
10951                    fn NoChangeRequired(
10952                        data: &[u8],
10953                        validate: bool,
10954                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10955                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
10956                                data,
10957                                validate,
10958                            )
10959                            .map(LightClientArbitrumErrors::NoChangeRequired)
10960                    }
10961                    NoChangeRequired
10962                },
10963                {
10964                    fn UUPSUnsupportedProxiableUUID(
10965                        data: &[u8],
10966                        validate: bool,
10967                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10968                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
10969                                data,
10970                                validate,
10971                            )
10972                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
10973                    }
10974                    UUPSUnsupportedProxiableUUID
10975                },
10976                {
10977                    fn InsufficientSnapshotHistory(
10978                        data: &[u8],
10979                        validate: bool,
10980                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10981                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
10982                                data,
10983                                validate,
10984                            )
10985                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
10986                    }
10987                    InsufficientSnapshotHistory
10988                },
10989                {
10990                    fn ERC1967NonPayable(
10991                        data: &[u8],
10992                        validate: bool,
10993                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
10994                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
10995                                data,
10996                                validate,
10997                            )
10998                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
10999                    }
11000                    ERC1967NonPayable
11001                },
11002                {
11003                    fn NotInitializing(
11004                        data: &[u8],
11005                        validate: bool,
11006                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11007                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
11008                                data,
11009                                validate,
11010                            )
11011                            .map(LightClientArbitrumErrors::NotInitializing)
11012                    }
11013                    NotInitializing
11014                },
11015                {
11016                    fn UUPSUnauthorizedCallContext(
11017                        data: &[u8],
11018                        validate: bool,
11019                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11020                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
11021                                data,
11022                                validate,
11023                            )
11024                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
11025                    }
11026                    UUPSUnauthorizedCallContext
11027                },
11028                {
11029                    fn InvalidAddress(
11030                        data: &[u8],
11031                        validate: bool,
11032                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11033                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
11034                                data,
11035                                validate,
11036                            )
11037                            .map(LightClientArbitrumErrors::InvalidAddress)
11038                    }
11039                    InvalidAddress
11040                },
11041                {
11042                    fn InvalidMaxStateHistory(
11043                        data: &[u8],
11044                        validate: bool,
11045                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11046                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
11047                                data,
11048                                validate,
11049                            )
11050                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
11051                    }
11052                    InvalidMaxStateHistory
11053                },
11054                {
11055                    fn InvalidInitialization(
11056                        data: &[u8],
11057                        validate: bool,
11058                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
11059                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
11060                                data,
11061                                validate,
11062                            )
11063                            .map(LightClientArbitrumErrors::InvalidInitialization)
11064                    }
11065                    InvalidInitialization
11066                },
11067            ];
11068            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11069                return Err(
11070                    alloy_sol_types::Error::unknown_selector(
11071                        <Self as alloy_sol_types::SolInterface>::NAME,
11072                        selector,
11073                    ),
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 [`LightClientArbitrum`](self) events.
11304    #[derive(Debug, PartialEq, Eq, Hash)]
11305    pub enum LightClientArbitrumEvents {
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 LightClientArbitrumEvents {
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,
11332                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
11333                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
11334            ],
11335            [
11336                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
11337                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
11338                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
11339            ],
11340            [
11341                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
11342                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
11343                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
11344            ],
11345            [
11346                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
11347                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
11348                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
11349            ],
11350            [
11351                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
11352                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
11353                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
11354            ],
11355            [
11356                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
11357                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
11358                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
11359            ],
11360            [
11361                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
11362                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
11363                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
11364            ],
11365        ];
11366    }
11367    #[automatically_derived]
11368    impl alloy_sol_types::SolEventInterface for LightClientArbitrumEvents {
11369        const NAME: &'static str = "LightClientArbitrumEvents";
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,
11380                            data,
11381                            validate,
11382                        )
11383                        .map(Self::Initialized)
11384                }
11385                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11386                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(
11387                            topics,
11388                            data,
11389                            validate,
11390                        )
11391                        .map(Self::NewState)
11392                }
11393                Some(
11394                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11395                ) => {
11396                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
11397                            topics,
11398                            data,
11399                            validate,
11400                        )
11401                        .map(Self::OwnershipTransferred)
11402                }
11403                Some(
11404                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11405                ) => {
11406                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11407                            topics,
11408                            data,
11409                            validate,
11410                        )
11411                        .map(Self::PermissionedProverNotRequired)
11412                }
11413                Some(
11414                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
11415                ) => {
11416                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
11417                            topics,
11418                            data,
11419                            validate,
11420                        )
11421                        .map(Self::PermissionedProverRequired)
11422                }
11423                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11424                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(
11425                            topics,
11426                            data,
11427                            validate,
11428                        )
11429                        .map(Self::Upgrade)
11430                }
11431                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
11432                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(
11433                            topics,
11434                            data,
11435                            validate,
11436                        )
11437                        .map(Self::Upgraded)
11438                }
11439                _ => {
11440                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
11441                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
11442                        log: alloy_sol_types::private::Box::new(
11443                            alloy_sol_types::private::LogData::new_unchecked(
11444                                topics.to_vec(),
11445                                data.to_vec().into(),
11446                            ),
11447                        ),
11448                    })
11449                }
11450            }
11451        }
11452    }
11453    #[automatically_derived]
11454    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumEvents {
11455        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
11456            match self {
11457                Self::Initialized(inner) => {
11458                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11459                }
11460                Self::NewState(inner) => {
11461                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11462                }
11463                Self::OwnershipTransferred(inner) => {
11464                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11465                }
11466                Self::PermissionedProverNotRequired(inner) => {
11467                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11468                }
11469                Self::PermissionedProverRequired(inner) => {
11470                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11471                }
11472                Self::Upgrade(inner) => {
11473                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11474                }
11475                Self::Upgraded(inner) => {
11476                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
11477                }
11478            }
11479        }
11480        fn into_log_data(self) -> alloy_sol_types::private::LogData {
11481            match self {
11482                Self::Initialized(inner) => {
11483                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11484                }
11485                Self::NewState(inner) => {
11486                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11487                }
11488                Self::OwnershipTransferred(inner) => {
11489                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11490                }
11491                Self::PermissionedProverNotRequired(inner) => {
11492                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11493                }
11494                Self::PermissionedProverRequired(inner) => {
11495                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11496                }
11497                Self::Upgrade(inner) => {
11498                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11499                }
11500                Self::Upgraded(inner) => {
11501                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
11502                }
11503            }
11504        }
11505    }
11506    use alloy::contract as alloy_contract;
11507    /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
11508
11509See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
11510    #[inline]
11511    pub const fn new<
11512        T: alloy_contract::private::Transport + ::core::clone::Clone,
11513        P: alloy_contract::private::Provider<T, N>,
11514        N: alloy_contract::private::Network,
11515    >(
11516        address: alloy_sol_types::private::Address,
11517        provider: P,
11518    ) -> LightClientArbitrumInstance<T, P, N> {
11519        LightClientArbitrumInstance::<T, P, N>::new(address, provider)
11520    }
11521    /**Deploys this contract using the given `provider` and constructor arguments, if any.
11522
11523Returns a new instance of the contract, if the deployment was successful.
11524
11525For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11526    #[inline]
11527    pub fn deploy<
11528        T: alloy_contract::private::Transport + ::core::clone::Clone,
11529        P: alloy_contract::private::Provider<T, N>,
11530        N: alloy_contract::private::Network,
11531    >(
11532        provider: P,
11533    ) -> impl ::core::future::Future<
11534        Output = alloy_contract::Result<LightClientArbitrumInstance<T, P, N>>,
11535    > {
11536        LightClientArbitrumInstance::<T, P, N>::deploy(provider)
11537    }
11538    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11539and constructor arguments, if any.
11540
11541This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11542the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11543    #[inline]
11544    pub fn deploy_builder<
11545        T: alloy_contract::private::Transport + ::core::clone::Clone,
11546        P: alloy_contract::private::Provider<T, N>,
11547        N: alloy_contract::private::Network,
11548    >(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
11549        LightClientArbitrumInstance::<T, P, N>::deploy_builder(provider)
11550    }
11551    /**A [`LightClientArbitrum`](self) instance.
11552
11553Contains type-safe methods for interacting with an on-chain instance of the
11554[`LightClientArbitrum`](self) contract located at a given `address`, using a given
11555provider `P`.
11556
11557If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
11558documentation on how to provide it), the `deploy` and `deploy_builder` methods can
11559be used to deploy a new instance of the contract.
11560
11561See the [module-level documentation](self) for all the available methods.*/
11562    #[derive(Clone)]
11563    pub struct LightClientArbitrumInstance<T, P, N = alloy_contract::private::Ethereum> {
11564        address: alloy_sol_types::private::Address,
11565        provider: P,
11566        _network_transport: ::core::marker::PhantomData<(N, T)>,
11567    }
11568    #[automatically_derived]
11569    impl<T, P, N> ::core::fmt::Debug for LightClientArbitrumInstance<T, P, N> {
11570        #[inline]
11571        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
11572            f.debug_tuple("LightClientArbitrumInstance").field(&self.address).finish()
11573        }
11574    }
11575    /// Instantiation and getters/setters.
11576    #[automatically_derived]
11577    impl<
11578        T: alloy_contract::private::Transport + ::core::clone::Clone,
11579        P: alloy_contract::private::Provider<T, N>,
11580        N: alloy_contract::private::Network,
11581    > LightClientArbitrumInstance<T, P, N> {
11582        /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
11583
11584See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
11585        #[inline]
11586        pub const fn new(
11587            address: alloy_sol_types::private::Address,
11588            provider: P,
11589        ) -> Self {
11590            Self {
11591                address,
11592                provider,
11593                _network_transport: ::core::marker::PhantomData,
11594            }
11595        }
11596        /**Deploys this contract using the given `provider` and constructor arguments, if any.
11597
11598Returns a new instance of the contract, if the deployment was successful.
11599
11600For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
11601        #[inline]
11602        pub async fn deploy(
11603            provider: P,
11604        ) -> alloy_contract::Result<LightClientArbitrumInstance<T, P, N>> {
11605            let call_builder = Self::deploy_builder(provider);
11606            let contract_address = call_builder.deploy().await?;
11607            Ok(Self::new(contract_address, call_builder.provider))
11608        }
11609        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
11610and constructor arguments, if any.
11611
11612This is a simple wrapper around creating a `RawCallBuilder` with the data set to
11613the bytecode concatenated with the constructor's ABI-encoded arguments.*/
11614        #[inline]
11615        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
11616            alloy_contract::RawCallBuilder::new_raw_deploy(
11617                provider,
11618                ::core::clone::Clone::clone(&BYTECODE),
11619            )
11620        }
11621        /// Returns a reference to the address.
11622        #[inline]
11623        pub const fn address(&self) -> &alloy_sol_types::private::Address {
11624            &self.address
11625        }
11626        /// Sets the address.
11627        #[inline]
11628        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
11629            self.address = address;
11630        }
11631        /// Sets the address and returns `self`.
11632        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
11633            self.set_address(address);
11634            self
11635        }
11636        /// Returns a reference to the provider.
11637        #[inline]
11638        pub const fn provider(&self) -> &P {
11639            &self.provider
11640        }
11641    }
11642    impl<T, P: ::core::clone::Clone, N> LightClientArbitrumInstance<T, &P, N> {
11643        /// Clones the provider and returns a new instance with the cloned provider.
11644        #[inline]
11645        pub fn with_cloned_provider(self) -> LightClientArbitrumInstance<T, P, N> {
11646            LightClientArbitrumInstance {
11647                address: self.address,
11648                provider: ::core::clone::Clone::clone(&self.provider),
11649                _network_transport: ::core::marker::PhantomData,
11650            }
11651        }
11652    }
11653    /// Function calls.
11654    #[automatically_derived]
11655    impl<
11656        T: alloy_contract::private::Transport + ::core::clone::Clone,
11657        P: alloy_contract::private::Provider<T, N>,
11658        N: alloy_contract::private::Network,
11659    > LightClientArbitrumInstance<T, P, N> {
11660        /// Creates a new call builder using this contract instance's provider and address.
11661        ///
11662        /// Note that the call can be any function call, not just those defined in this
11663        /// contract. Prefer using the other methods for building type-safe contract calls.
11664        pub fn call_builder<C: alloy_sol_types::SolCall>(
11665            &self,
11666            call: &C,
11667        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
11668            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
11669        }
11670        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
11671        pub fn UPGRADE_INTERFACE_VERSION(
11672            &self,
11673        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
11674            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
11675        }
11676        ///Creates a new call builder for the [`_getVk`] function.
11677        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
11678            self.call_builder(&_getVkCall {})
11679        }
11680        ///Creates a new call builder for the [`currentBlockNumber`] function.
11681        pub fn currentBlockNumber(
11682            &self,
11683        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
11684            self.call_builder(&currentBlockNumberCall {})
11685        }
11686        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
11687        pub fn disablePermissionedProverMode(
11688            &self,
11689        ) -> alloy_contract::SolCallBuilder<
11690            T,
11691            &P,
11692            disablePermissionedProverModeCall,
11693            N,
11694        > {
11695            self.call_builder(
11696                &disablePermissionedProverModeCall {
11697                },
11698            )
11699        }
11700        ///Creates a new call builder for the [`finalizedState`] function.
11701        pub fn finalizedState(
11702            &self,
11703        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
11704            self.call_builder(&finalizedStateCall {})
11705        }
11706        ///Creates a new call builder for the [`genesisStakeTableState`] function.
11707        pub fn genesisStakeTableState(
11708            &self,
11709        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
11710            self.call_builder(&genesisStakeTableStateCall {})
11711        }
11712        ///Creates a new call builder for the [`genesisState`] function.
11713        pub fn genesisState(
11714            &self,
11715        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
11716            self.call_builder(&genesisStateCall {})
11717        }
11718        ///Creates a new call builder for the [`getHotShotCommitment`] function.
11719        pub fn getHotShotCommitment(
11720            &self,
11721            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
11722        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
11723            self.call_builder(
11724                &getHotShotCommitmentCall {
11725                    hotShotBlockHeight,
11726                },
11727            )
11728        }
11729        ///Creates a new call builder for the [`getStateHistoryCount`] function.
11730        pub fn getStateHistoryCount(
11731            &self,
11732        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
11733            self.call_builder(&getStateHistoryCountCall {})
11734        }
11735        ///Creates a new call builder for the [`getVersion`] function.
11736        pub fn getVersion(
11737            &self,
11738        ) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
11739            self.call_builder(&getVersionCall {})
11740        }
11741        ///Creates a new call builder for the [`initialize`] function.
11742        pub fn initialize(
11743            &self,
11744            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11745            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11746            _stateHistoryRetentionPeriod: u32,
11747            owner: alloy::sol_types::private::Address,
11748        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
11749            self.call_builder(
11750                &initializeCall {
11751                    _genesis,
11752                    _genesisStakeTableState,
11753                    _stateHistoryRetentionPeriod,
11754                    owner,
11755                },
11756            )
11757        }
11758        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
11759        pub fn isPermissionedProverEnabled(
11760            &self,
11761        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
11762            self.call_builder(&isPermissionedProverEnabledCall {})
11763        }
11764        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
11765        pub fn lagOverEscapeHatchThreshold(
11766            &self,
11767            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11768            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11769        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
11770            self.call_builder(
11771                &lagOverEscapeHatchThresholdCall {
11772                    blockNumber,
11773                    blockThreshold,
11774                },
11775            )
11776        }
11777        ///Creates a new call builder for the [`newFinalizedState`] function.
11778        pub fn newFinalizedState(
11779            &self,
11780            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11781            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11782        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedStateCall, N> {
11783            self.call_builder(
11784                &newFinalizedStateCall {
11785                    newState,
11786                    proof,
11787                },
11788            )
11789        }
11790        ///Creates a new call builder for the [`owner`] function.
11791        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
11792            self.call_builder(&ownerCall {})
11793        }
11794        ///Creates a new call builder for the [`permissionedProver`] function.
11795        pub fn permissionedProver(
11796            &self,
11797        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
11798            self.call_builder(&permissionedProverCall {})
11799        }
11800        ///Creates a new call builder for the [`proxiableUUID`] function.
11801        pub fn proxiableUUID(
11802            &self,
11803        ) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
11804            self.call_builder(&proxiableUUIDCall {})
11805        }
11806        ///Creates a new call builder for the [`renounceOwnership`] function.
11807        pub fn renounceOwnership(
11808            &self,
11809        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
11810            self.call_builder(&renounceOwnershipCall {})
11811        }
11812        ///Creates a new call builder for the [`setPermissionedProver`] function.
11813        pub fn setPermissionedProver(
11814            &self,
11815            prover: alloy::sol_types::private::Address,
11816        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
11817            self.call_builder(
11818                &setPermissionedProverCall {
11819                    prover,
11820                },
11821            )
11822        }
11823        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
11824        pub fn setstateHistoryRetentionPeriod(
11825            &self,
11826            historySeconds: u32,
11827        ) -> alloy_contract::SolCallBuilder<
11828            T,
11829            &P,
11830            setstateHistoryRetentionPeriodCall,
11831            N,
11832        > {
11833            self.call_builder(
11834                &setstateHistoryRetentionPeriodCall {
11835                    historySeconds,
11836                },
11837            )
11838        }
11839        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
11840        pub fn stateHistoryCommitments(
11841            &self,
11842            _0: alloy::sol_types::private::primitives::aliases::U256,
11843        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
11844            self.call_builder(&stateHistoryCommitmentsCall { _0 })
11845        }
11846        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
11847        pub fn stateHistoryFirstIndex(
11848            &self,
11849        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
11850            self.call_builder(&stateHistoryFirstIndexCall {})
11851        }
11852        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
11853        pub fn stateHistoryRetentionPeriod(
11854            &self,
11855        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
11856            self.call_builder(&stateHistoryRetentionPeriodCall {})
11857        }
11858        ///Creates a new call builder for the [`transferOwnership`] function.
11859        pub fn transferOwnership(
11860            &self,
11861            newOwner: alloy::sol_types::private::Address,
11862        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
11863            self.call_builder(&transferOwnershipCall { newOwner })
11864        }
11865        ///Creates a new call builder for the [`upgradeToAndCall`] function.
11866        pub fn upgradeToAndCall(
11867            &self,
11868            newImplementation: alloy::sol_types::private::Address,
11869            data: alloy::sol_types::private::Bytes,
11870        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
11871            self.call_builder(
11872                &upgradeToAndCallCall {
11873                    newImplementation,
11874                    data,
11875                },
11876            )
11877        }
11878    }
11879    /// Event filters.
11880    #[automatically_derived]
11881    impl<
11882        T: alloy_contract::private::Transport + ::core::clone::Clone,
11883        P: alloy_contract::private::Provider<T, N>,
11884        N: alloy_contract::private::Network,
11885    > LightClientArbitrumInstance<T, P, N> {
11886        /// Creates a new event filter using this contract instance's provider and address.
11887        ///
11888        /// Note that the type can be any event, not just those defined in this contract.
11889        /// Prefer using the other methods for building type-safe event filters.
11890        pub fn event_filter<E: alloy_sol_types::SolEvent>(
11891            &self,
11892        ) -> alloy_contract::Event<T, &P, E, N> {
11893            alloy_contract::Event::new_sol(&self.provider, &self.address)
11894        }
11895        ///Creates a new event filter for the [`Initialized`] event.
11896        pub fn Initialized_filter(
11897            &self,
11898        ) -> alloy_contract::Event<T, &P, Initialized, N> {
11899            self.event_filter::<Initialized>()
11900        }
11901        ///Creates a new event filter for the [`NewState`] event.
11902        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
11903            self.event_filter::<NewState>()
11904        }
11905        ///Creates a new event filter for the [`OwnershipTransferred`] event.
11906        pub fn OwnershipTransferred_filter(
11907            &self,
11908        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
11909            self.event_filter::<OwnershipTransferred>()
11910        }
11911        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
11912        pub fn PermissionedProverNotRequired_filter(
11913            &self,
11914        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
11915            self.event_filter::<PermissionedProverNotRequired>()
11916        }
11917        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
11918        pub fn PermissionedProverRequired_filter(
11919            &self,
11920        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
11921            self.event_filter::<PermissionedProverRequired>()
11922        }
11923        ///Creates a new event filter for the [`Upgrade`] event.
11924        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
11925            self.event_filter::<Upgrade>()
11926        }
11927        ///Creates a new event filter for the [`Upgraded`] event.
11928        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
11929            self.event_filter::<Upgraded>()
11930        }
11931    }
11932}