hotshot_contract_adapter/bindings/
plonk_verifier_v2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    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; }
641    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; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct 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; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct 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; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242/**
2243
2244Generated by the following Solidity interface...
2245```solidity
2246library BN254 {
2247    type BaseField is uint256;
2248    type ScalarField is uint256;
2249    struct G1Point {
2250        BaseField x;
2251        BaseField y;
2252    }
2253}
2254
2255library IPlonkVerifier {
2256    struct PlonkProof {
2257        BN254.G1Point wire0;
2258        BN254.G1Point wire1;
2259        BN254.G1Point wire2;
2260        BN254.G1Point wire3;
2261        BN254.G1Point wire4;
2262        BN254.G1Point prodPerm;
2263        BN254.G1Point split0;
2264        BN254.G1Point split1;
2265        BN254.G1Point split2;
2266        BN254.G1Point split3;
2267        BN254.G1Point split4;
2268        BN254.G1Point zeta;
2269        BN254.G1Point zetaOmega;
2270        BN254.ScalarField wireEval0;
2271        BN254.ScalarField wireEval1;
2272        BN254.ScalarField wireEval2;
2273        BN254.ScalarField wireEval3;
2274        BN254.ScalarField wireEval4;
2275        BN254.ScalarField sigmaEval0;
2276        BN254.ScalarField sigmaEval1;
2277        BN254.ScalarField sigmaEval2;
2278        BN254.ScalarField sigmaEval3;
2279        BN254.ScalarField prodPermZetaOmegaEval;
2280    }
2281    struct VerifyingKey {
2282        uint256 domainSize;
2283        uint256 numInputs;
2284        BN254.G1Point sigma0;
2285        BN254.G1Point sigma1;
2286        BN254.G1Point sigma2;
2287        BN254.G1Point sigma3;
2288        BN254.G1Point sigma4;
2289        BN254.G1Point q1;
2290        BN254.G1Point q2;
2291        BN254.G1Point q3;
2292        BN254.G1Point q4;
2293        BN254.G1Point qM12;
2294        BN254.G1Point qM34;
2295        BN254.G1Point qO;
2296        BN254.G1Point qC;
2297        BN254.G1Point qH1;
2298        BN254.G1Point qH2;
2299        BN254.G1Point qH3;
2300        BN254.G1Point qH4;
2301        BN254.G1Point qEcc;
2302        bytes32 g2LSB;
2303        bytes32 g2MSB;
2304    }
2305}
2306
2307interface PlonkVerifierV2 {
2308    error BN254G1AddFailed();
2309    error BN254PairingProdFailed();
2310    error BN254ScalarInvZero();
2311    error BN254ScalarMulFailed();
2312    error InvalidG1();
2313    error InvalidPlonkArgs();
2314    error InvalidScalar();
2315    error PowPrecompileFailed();
2316    error UnsupportedDegree();
2317    error WrongPlonkVK();
2318
2319    function BETA_H_X0() external view returns (uint256);
2320    function BETA_H_X1() external view returns (uint256);
2321    function BETA_H_Y0() external view returns (uint256);
2322    function BETA_H_Y1() external view returns (uint256);
2323    function COSET_K1() external view returns (uint256);
2324    function COSET_K2() external view returns (uint256);
2325    function COSET_K3() external view returns (uint256);
2326    function COSET_K4() external view returns (uint256);
2327    function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
2328}
2329```
2330
2331...which was generated by the following JSON ABI:
2332```json
2333[
2334  {
2335    "type": "function",
2336    "name": "BETA_H_X0",
2337    "inputs": [],
2338    "outputs": [
2339      {
2340        "name": "",
2341        "type": "uint256",
2342        "internalType": "uint256"
2343      }
2344    ],
2345    "stateMutability": "view"
2346  },
2347  {
2348    "type": "function",
2349    "name": "BETA_H_X1",
2350    "inputs": [],
2351    "outputs": [
2352      {
2353        "name": "",
2354        "type": "uint256",
2355        "internalType": "uint256"
2356      }
2357    ],
2358    "stateMutability": "view"
2359  },
2360  {
2361    "type": "function",
2362    "name": "BETA_H_Y0",
2363    "inputs": [],
2364    "outputs": [
2365      {
2366        "name": "",
2367        "type": "uint256",
2368        "internalType": "uint256"
2369      }
2370    ],
2371    "stateMutability": "view"
2372  },
2373  {
2374    "type": "function",
2375    "name": "BETA_H_Y1",
2376    "inputs": [],
2377    "outputs": [
2378      {
2379        "name": "",
2380        "type": "uint256",
2381        "internalType": "uint256"
2382      }
2383    ],
2384    "stateMutability": "view"
2385  },
2386  {
2387    "type": "function",
2388    "name": "COSET_K1",
2389    "inputs": [],
2390    "outputs": [
2391      {
2392        "name": "",
2393        "type": "uint256",
2394        "internalType": "uint256"
2395      }
2396    ],
2397    "stateMutability": "view"
2398  },
2399  {
2400    "type": "function",
2401    "name": "COSET_K2",
2402    "inputs": [],
2403    "outputs": [
2404      {
2405        "name": "",
2406        "type": "uint256",
2407        "internalType": "uint256"
2408      }
2409    ],
2410    "stateMutability": "view"
2411  },
2412  {
2413    "type": "function",
2414    "name": "COSET_K3",
2415    "inputs": [],
2416    "outputs": [
2417      {
2418        "name": "",
2419        "type": "uint256",
2420        "internalType": "uint256"
2421      }
2422    ],
2423    "stateMutability": "view"
2424  },
2425  {
2426    "type": "function",
2427    "name": "COSET_K4",
2428    "inputs": [],
2429    "outputs": [
2430      {
2431        "name": "",
2432        "type": "uint256",
2433        "internalType": "uint256"
2434      }
2435    ],
2436    "stateMutability": "view"
2437  },
2438  {
2439    "type": "function",
2440    "name": "verify",
2441    "inputs": [
2442      {
2443        "name": "verifyingKey",
2444        "type": "tuple",
2445        "internalType": "struct IPlonkVerifier.VerifyingKey",
2446        "components": [
2447          {
2448            "name": "domainSize",
2449            "type": "uint256",
2450            "internalType": "uint256"
2451          },
2452          {
2453            "name": "numInputs",
2454            "type": "uint256",
2455            "internalType": "uint256"
2456          },
2457          {
2458            "name": "sigma0",
2459            "type": "tuple",
2460            "internalType": "struct BN254.G1Point",
2461            "components": [
2462              {
2463                "name": "x",
2464                "type": "uint256",
2465                "internalType": "BN254.BaseField"
2466              },
2467              {
2468                "name": "y",
2469                "type": "uint256",
2470                "internalType": "BN254.BaseField"
2471              }
2472            ]
2473          },
2474          {
2475            "name": "sigma1",
2476            "type": "tuple",
2477            "internalType": "struct BN254.G1Point",
2478            "components": [
2479              {
2480                "name": "x",
2481                "type": "uint256",
2482                "internalType": "BN254.BaseField"
2483              },
2484              {
2485                "name": "y",
2486                "type": "uint256",
2487                "internalType": "BN254.BaseField"
2488              }
2489            ]
2490          },
2491          {
2492            "name": "sigma2",
2493            "type": "tuple",
2494            "internalType": "struct BN254.G1Point",
2495            "components": [
2496              {
2497                "name": "x",
2498                "type": "uint256",
2499                "internalType": "BN254.BaseField"
2500              },
2501              {
2502                "name": "y",
2503                "type": "uint256",
2504                "internalType": "BN254.BaseField"
2505              }
2506            ]
2507          },
2508          {
2509            "name": "sigma3",
2510            "type": "tuple",
2511            "internalType": "struct BN254.G1Point",
2512            "components": [
2513              {
2514                "name": "x",
2515                "type": "uint256",
2516                "internalType": "BN254.BaseField"
2517              },
2518              {
2519                "name": "y",
2520                "type": "uint256",
2521                "internalType": "BN254.BaseField"
2522              }
2523            ]
2524          },
2525          {
2526            "name": "sigma4",
2527            "type": "tuple",
2528            "internalType": "struct BN254.G1Point",
2529            "components": [
2530              {
2531                "name": "x",
2532                "type": "uint256",
2533                "internalType": "BN254.BaseField"
2534              },
2535              {
2536                "name": "y",
2537                "type": "uint256",
2538                "internalType": "BN254.BaseField"
2539              }
2540            ]
2541          },
2542          {
2543            "name": "q1",
2544            "type": "tuple",
2545            "internalType": "struct BN254.G1Point",
2546            "components": [
2547              {
2548                "name": "x",
2549                "type": "uint256",
2550                "internalType": "BN254.BaseField"
2551              },
2552              {
2553                "name": "y",
2554                "type": "uint256",
2555                "internalType": "BN254.BaseField"
2556              }
2557            ]
2558          },
2559          {
2560            "name": "q2",
2561            "type": "tuple",
2562            "internalType": "struct BN254.G1Point",
2563            "components": [
2564              {
2565                "name": "x",
2566                "type": "uint256",
2567                "internalType": "BN254.BaseField"
2568              },
2569              {
2570                "name": "y",
2571                "type": "uint256",
2572                "internalType": "BN254.BaseField"
2573              }
2574            ]
2575          },
2576          {
2577            "name": "q3",
2578            "type": "tuple",
2579            "internalType": "struct BN254.G1Point",
2580            "components": [
2581              {
2582                "name": "x",
2583                "type": "uint256",
2584                "internalType": "BN254.BaseField"
2585              },
2586              {
2587                "name": "y",
2588                "type": "uint256",
2589                "internalType": "BN254.BaseField"
2590              }
2591            ]
2592          },
2593          {
2594            "name": "q4",
2595            "type": "tuple",
2596            "internalType": "struct BN254.G1Point",
2597            "components": [
2598              {
2599                "name": "x",
2600                "type": "uint256",
2601                "internalType": "BN254.BaseField"
2602              },
2603              {
2604                "name": "y",
2605                "type": "uint256",
2606                "internalType": "BN254.BaseField"
2607              }
2608            ]
2609          },
2610          {
2611            "name": "qM12",
2612            "type": "tuple",
2613            "internalType": "struct BN254.G1Point",
2614            "components": [
2615              {
2616                "name": "x",
2617                "type": "uint256",
2618                "internalType": "BN254.BaseField"
2619              },
2620              {
2621                "name": "y",
2622                "type": "uint256",
2623                "internalType": "BN254.BaseField"
2624              }
2625            ]
2626          },
2627          {
2628            "name": "qM34",
2629            "type": "tuple",
2630            "internalType": "struct BN254.G1Point",
2631            "components": [
2632              {
2633                "name": "x",
2634                "type": "uint256",
2635                "internalType": "BN254.BaseField"
2636              },
2637              {
2638                "name": "y",
2639                "type": "uint256",
2640                "internalType": "BN254.BaseField"
2641              }
2642            ]
2643          },
2644          {
2645            "name": "qO",
2646            "type": "tuple",
2647            "internalType": "struct BN254.G1Point",
2648            "components": [
2649              {
2650                "name": "x",
2651                "type": "uint256",
2652                "internalType": "BN254.BaseField"
2653              },
2654              {
2655                "name": "y",
2656                "type": "uint256",
2657                "internalType": "BN254.BaseField"
2658              }
2659            ]
2660          },
2661          {
2662            "name": "qC",
2663            "type": "tuple",
2664            "internalType": "struct BN254.G1Point",
2665            "components": [
2666              {
2667                "name": "x",
2668                "type": "uint256",
2669                "internalType": "BN254.BaseField"
2670              },
2671              {
2672                "name": "y",
2673                "type": "uint256",
2674                "internalType": "BN254.BaseField"
2675              }
2676            ]
2677          },
2678          {
2679            "name": "qH1",
2680            "type": "tuple",
2681            "internalType": "struct BN254.G1Point",
2682            "components": [
2683              {
2684                "name": "x",
2685                "type": "uint256",
2686                "internalType": "BN254.BaseField"
2687              },
2688              {
2689                "name": "y",
2690                "type": "uint256",
2691                "internalType": "BN254.BaseField"
2692              }
2693            ]
2694          },
2695          {
2696            "name": "qH2",
2697            "type": "tuple",
2698            "internalType": "struct BN254.G1Point",
2699            "components": [
2700              {
2701                "name": "x",
2702                "type": "uint256",
2703                "internalType": "BN254.BaseField"
2704              },
2705              {
2706                "name": "y",
2707                "type": "uint256",
2708                "internalType": "BN254.BaseField"
2709              }
2710            ]
2711          },
2712          {
2713            "name": "qH3",
2714            "type": "tuple",
2715            "internalType": "struct BN254.G1Point",
2716            "components": [
2717              {
2718                "name": "x",
2719                "type": "uint256",
2720                "internalType": "BN254.BaseField"
2721              },
2722              {
2723                "name": "y",
2724                "type": "uint256",
2725                "internalType": "BN254.BaseField"
2726              }
2727            ]
2728          },
2729          {
2730            "name": "qH4",
2731            "type": "tuple",
2732            "internalType": "struct BN254.G1Point",
2733            "components": [
2734              {
2735                "name": "x",
2736                "type": "uint256",
2737                "internalType": "BN254.BaseField"
2738              },
2739              {
2740                "name": "y",
2741                "type": "uint256",
2742                "internalType": "BN254.BaseField"
2743              }
2744            ]
2745          },
2746          {
2747            "name": "qEcc",
2748            "type": "tuple",
2749            "internalType": "struct BN254.G1Point",
2750            "components": [
2751              {
2752                "name": "x",
2753                "type": "uint256",
2754                "internalType": "BN254.BaseField"
2755              },
2756              {
2757                "name": "y",
2758                "type": "uint256",
2759                "internalType": "BN254.BaseField"
2760              }
2761            ]
2762          },
2763          {
2764            "name": "g2LSB",
2765            "type": "bytes32",
2766            "internalType": "bytes32"
2767          },
2768          {
2769            "name": "g2MSB",
2770            "type": "bytes32",
2771            "internalType": "bytes32"
2772          }
2773        ]
2774      },
2775      {
2776        "name": "publicInput",
2777        "type": "uint256[11]",
2778        "internalType": "uint256[11]"
2779      },
2780      {
2781        "name": "proof",
2782        "type": "tuple",
2783        "internalType": "struct IPlonkVerifier.PlonkProof",
2784        "components": [
2785          {
2786            "name": "wire0",
2787            "type": "tuple",
2788            "internalType": "struct BN254.G1Point",
2789            "components": [
2790              {
2791                "name": "x",
2792                "type": "uint256",
2793                "internalType": "BN254.BaseField"
2794              },
2795              {
2796                "name": "y",
2797                "type": "uint256",
2798                "internalType": "BN254.BaseField"
2799              }
2800            ]
2801          },
2802          {
2803            "name": "wire1",
2804            "type": "tuple",
2805            "internalType": "struct BN254.G1Point",
2806            "components": [
2807              {
2808                "name": "x",
2809                "type": "uint256",
2810                "internalType": "BN254.BaseField"
2811              },
2812              {
2813                "name": "y",
2814                "type": "uint256",
2815                "internalType": "BN254.BaseField"
2816              }
2817            ]
2818          },
2819          {
2820            "name": "wire2",
2821            "type": "tuple",
2822            "internalType": "struct BN254.G1Point",
2823            "components": [
2824              {
2825                "name": "x",
2826                "type": "uint256",
2827                "internalType": "BN254.BaseField"
2828              },
2829              {
2830                "name": "y",
2831                "type": "uint256",
2832                "internalType": "BN254.BaseField"
2833              }
2834            ]
2835          },
2836          {
2837            "name": "wire3",
2838            "type": "tuple",
2839            "internalType": "struct BN254.G1Point",
2840            "components": [
2841              {
2842                "name": "x",
2843                "type": "uint256",
2844                "internalType": "BN254.BaseField"
2845              },
2846              {
2847                "name": "y",
2848                "type": "uint256",
2849                "internalType": "BN254.BaseField"
2850              }
2851            ]
2852          },
2853          {
2854            "name": "wire4",
2855            "type": "tuple",
2856            "internalType": "struct BN254.G1Point",
2857            "components": [
2858              {
2859                "name": "x",
2860                "type": "uint256",
2861                "internalType": "BN254.BaseField"
2862              },
2863              {
2864                "name": "y",
2865                "type": "uint256",
2866                "internalType": "BN254.BaseField"
2867              }
2868            ]
2869          },
2870          {
2871            "name": "prodPerm",
2872            "type": "tuple",
2873            "internalType": "struct BN254.G1Point",
2874            "components": [
2875              {
2876                "name": "x",
2877                "type": "uint256",
2878                "internalType": "BN254.BaseField"
2879              },
2880              {
2881                "name": "y",
2882                "type": "uint256",
2883                "internalType": "BN254.BaseField"
2884              }
2885            ]
2886          },
2887          {
2888            "name": "split0",
2889            "type": "tuple",
2890            "internalType": "struct BN254.G1Point",
2891            "components": [
2892              {
2893                "name": "x",
2894                "type": "uint256",
2895                "internalType": "BN254.BaseField"
2896              },
2897              {
2898                "name": "y",
2899                "type": "uint256",
2900                "internalType": "BN254.BaseField"
2901              }
2902            ]
2903          },
2904          {
2905            "name": "split1",
2906            "type": "tuple",
2907            "internalType": "struct BN254.G1Point",
2908            "components": [
2909              {
2910                "name": "x",
2911                "type": "uint256",
2912                "internalType": "BN254.BaseField"
2913              },
2914              {
2915                "name": "y",
2916                "type": "uint256",
2917                "internalType": "BN254.BaseField"
2918              }
2919            ]
2920          },
2921          {
2922            "name": "split2",
2923            "type": "tuple",
2924            "internalType": "struct BN254.G1Point",
2925            "components": [
2926              {
2927                "name": "x",
2928                "type": "uint256",
2929                "internalType": "BN254.BaseField"
2930              },
2931              {
2932                "name": "y",
2933                "type": "uint256",
2934                "internalType": "BN254.BaseField"
2935              }
2936            ]
2937          },
2938          {
2939            "name": "split3",
2940            "type": "tuple",
2941            "internalType": "struct BN254.G1Point",
2942            "components": [
2943              {
2944                "name": "x",
2945                "type": "uint256",
2946                "internalType": "BN254.BaseField"
2947              },
2948              {
2949                "name": "y",
2950                "type": "uint256",
2951                "internalType": "BN254.BaseField"
2952              }
2953            ]
2954          },
2955          {
2956            "name": "split4",
2957            "type": "tuple",
2958            "internalType": "struct BN254.G1Point",
2959            "components": [
2960              {
2961                "name": "x",
2962                "type": "uint256",
2963                "internalType": "BN254.BaseField"
2964              },
2965              {
2966                "name": "y",
2967                "type": "uint256",
2968                "internalType": "BN254.BaseField"
2969              }
2970            ]
2971          },
2972          {
2973            "name": "zeta",
2974            "type": "tuple",
2975            "internalType": "struct BN254.G1Point",
2976            "components": [
2977              {
2978                "name": "x",
2979                "type": "uint256",
2980                "internalType": "BN254.BaseField"
2981              },
2982              {
2983                "name": "y",
2984                "type": "uint256",
2985                "internalType": "BN254.BaseField"
2986              }
2987            ]
2988          },
2989          {
2990            "name": "zetaOmega",
2991            "type": "tuple",
2992            "internalType": "struct BN254.G1Point",
2993            "components": [
2994              {
2995                "name": "x",
2996                "type": "uint256",
2997                "internalType": "BN254.BaseField"
2998              },
2999              {
3000                "name": "y",
3001                "type": "uint256",
3002                "internalType": "BN254.BaseField"
3003              }
3004            ]
3005          },
3006          {
3007            "name": "wireEval0",
3008            "type": "uint256",
3009            "internalType": "BN254.ScalarField"
3010          },
3011          {
3012            "name": "wireEval1",
3013            "type": "uint256",
3014            "internalType": "BN254.ScalarField"
3015          },
3016          {
3017            "name": "wireEval2",
3018            "type": "uint256",
3019            "internalType": "BN254.ScalarField"
3020          },
3021          {
3022            "name": "wireEval3",
3023            "type": "uint256",
3024            "internalType": "BN254.ScalarField"
3025          },
3026          {
3027            "name": "wireEval4",
3028            "type": "uint256",
3029            "internalType": "BN254.ScalarField"
3030          },
3031          {
3032            "name": "sigmaEval0",
3033            "type": "uint256",
3034            "internalType": "BN254.ScalarField"
3035          },
3036          {
3037            "name": "sigmaEval1",
3038            "type": "uint256",
3039            "internalType": "BN254.ScalarField"
3040          },
3041          {
3042            "name": "sigmaEval2",
3043            "type": "uint256",
3044            "internalType": "BN254.ScalarField"
3045          },
3046          {
3047            "name": "sigmaEval3",
3048            "type": "uint256",
3049            "internalType": "BN254.ScalarField"
3050          },
3051          {
3052            "name": "prodPermZetaOmegaEval",
3053            "type": "uint256",
3054            "internalType": "BN254.ScalarField"
3055          }
3056        ]
3057      }
3058    ],
3059    "outputs": [
3060      {
3061        "name": "",
3062        "type": "bool",
3063        "internalType": "bool"
3064      }
3065    ],
3066    "stateMutability": "view"
3067  },
3068  {
3069    "type": "error",
3070    "name": "BN254G1AddFailed",
3071    "inputs": []
3072  },
3073  {
3074    "type": "error",
3075    "name": "BN254PairingProdFailed",
3076    "inputs": []
3077  },
3078  {
3079    "type": "error",
3080    "name": "BN254ScalarInvZero",
3081    "inputs": []
3082  },
3083  {
3084    "type": "error",
3085    "name": "BN254ScalarMulFailed",
3086    "inputs": []
3087  },
3088  {
3089    "type": "error",
3090    "name": "InvalidG1",
3091    "inputs": []
3092  },
3093  {
3094    "type": "error",
3095    "name": "InvalidPlonkArgs",
3096    "inputs": []
3097  },
3098  {
3099    "type": "error",
3100    "name": "InvalidScalar",
3101    "inputs": []
3102  },
3103  {
3104    "type": "error",
3105    "name": "PowPrecompileFailed",
3106    "inputs": []
3107  },
3108  {
3109    "type": "error",
3110    "name": "UnsupportedDegree",
3111    "inputs": []
3112  },
3113  {
3114    "type": "error",
3115    "name": "WrongPlonkVK",
3116    "inputs": []
3117  }
3118]
3119```*/
3120#[allow(
3121    non_camel_case_types,
3122    non_snake_case,
3123    clippy::pub_underscore_fields,
3124    clippy::style,
3125    clippy::empty_structs_with_brackets
3126)]
3127pub mod PlonkVerifierV2 {
3128    use super::*;
3129    use alloy::sol_types as alloy_sol_types;
3130    /// The creation / init bytecode of the contract.
3131    ///
3132    /// ```text
3133    ///0x612554610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f83660046122e2565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a0848484610417565b90505b9392505050565b80516102b59061060b565b6102c2816020015161060b565b6102cf816040015161060b565b6102dc816060015161060b565b6102e9816080015161060b565b6102f68160a0015161060b565b6103038160c0015161060b565b6103108160e0015161060b565b61031e81610100015161060b565b61032c81610120015161060b565b61033a81610140015161060b565b61034881610160015161060b565b61035681610180015161060b565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206125285f395f51905f528110806104135760405163016c173360e21b815260040160405180910390fd5b5050565b5f8360200151600b1461043d576040516320fa9d8960e11b815260040160405180910390fd5b5f61044985858561068a565b90505f610458865f0151610c19565b90505f61046a828460a00151886111c0565b905061048760405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104bb8761016001516104b68961018001518860e0015161121d565b611280565b91505f5f6104cb8b88878c6112e7565b915091506104dc816104b68461151f565b92506104f5836104b68b61016001518a60a0015161121d565b60a08801516040880151602001519194505f5160206125285f395f51905f52918290820990508160e08a015182099050610538856104b68d61018001518461121d565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481525090506105f987826105ec8961151f565b6105f46115bc565b611689565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561064457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106855760405163279e345360e21b815260040160405180910390fd5b505050565b6106ca6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206125285f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c21611fbc565b816201000003610df8576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003610fd1576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b816020036111a7576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b6111e160405180606001604052805f81526020015f81526020015f81525090565b6111eb848461173a565b8082526111fb908590859061178b565b60208201528051611211908590849086906117fa565b60408201529392505050565b604080518082019091525f8082526020820152611238611fe0565b835181526020808501519082015260408082018490525f908360608460075afa9050806112785760405163033b714d60e31b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261129b611ffe565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460065afa9050806112785760405163302aedb560e11b815260040160405180910390fd5b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f61131a87878787611949565b90505f5160206125285f395f51905f525f611336888789611e13565b905061134281836124cf565b60c08901516101a08801519192509081908490819083098408925061136e856104b68a5f01518461121d565b955083828209905083846101c08a0151830984089250611396866104b68a602001518461121d565b955083828209905083846101e08a01518309840892506113be866104b68a604001518461121d565b955083828209905083846102008a01518309840892506113e6866104b68a606001518461121d565b955083828209905083846102208a015183098408925061140e866104b68a608001518461121d565b955083828209905083846102408a0151830984089250611436866104b68d604001518461121d565b955083828209905083846102608a015183098408925061145e866104b68d606001518461121d565b955083828209905083846102808a0151830984089250611486866104b68d608001518461121d565b955083828209905083846102a08a01518309840892506114ae866104b68d60a001518461121d565b95505f8a60e00151905084856102c08b01518309850893506114d8876104b68b60a001518461121d565b965061150e6115086040805180820182525f80825260209182015281518083019092526001825260029082015290565b8561121d565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611546575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161158a9190612508565b6115b4907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476124cf565b905292915050565b6115e360405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061172c5760405163c206334f60e01b815260040160405180910390fd5b50151590505b949350505050565b81515f905f5160206125285f395f51905f529083801561177b578493505f5b8281101561176f57838586099450600101611759565b50600184039350611782565b6001830393505b50505092915050565b5f8260010361179c575060016102a3565b815f036117aa57505f6102a3565b60208401515f5160206125285f395f51905f52905f908281860990508580156117d8576001870392506117df565b6001840392505b506117e982611efe565b915082828209979650505050505050565b5f5f5160206125285f395f51905f528282036118735760015f5b600b81101561186857818603611845578681600b8110611836576118366124bb565b60200201519350505050611732565b8280611853576118536124f4565b60408901516020015183099150600101611814565b505f92505050611732565b61187b61201c565b60408701516001610140838101828152920190805b600b8110156118bd5760208403935085868a85518903088309808552601f19909301929150600101611890565b505050505f5f5f90506001838960408c01515f5b600b811015611911578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016118d1565b50505050809250505f61192383611efe565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206125285f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611ab68760a001518661121d565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611b7d866104b68c60c001518885611b7891906124cf565b61121d565b9550611b96866104b68c60e001518a6101a0015161121d565b9550611bb0866104b68c61010001518a6101c0015161121d565b9550611bca866104b68c61012001518a6101e0015161121d565b9550611be4866104b68c61014001518a610200015161121d565b9550806101c08801516101a0890151099250611c09866104b68c61016001518661121d565b9550806102008801516101e0890151099250611c2e866104b68c61018001518661121d565b95506101a08701519250808384099150808283099150808284099250611c5d866104b68c6101e001518661121d565b95506101c08701519250808384099150808283099150808284099250611c8c866104b68c61020001518661121d565b95506101e08701519250808384099150808283099150808284099250611cbb866104b68c61022001518661121d565b95506102008701519250808384099150808283099150808284099250611cea866104b68c61024001518661121d565b9550611d07866104b68c6101a00151611b788b6102200151611f90565b9550611d18868b6101c00151611280565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611d5e866104b68c61026001518661121d565b9550611d6c885f0151611f90565b9450611d80866104b68960c001518861121d565b955080600189510860a08a0151909350819080099150808284099250808386099450611db4866104b68960e001518861121d565b9550808386099450611dcf866104b68961010001518861121d565b9550808386099450611dea866104b68961012001518861121d565b9550808386099450611e05866104b68961014001518861121d565b9a9950505050505050505050565b5f5f5f5160206125285f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f815f03611f1f5760405163d6dbbb0d60e01b815260040160405180910390fd5b5f5f5f5160206125285f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f51925081611f8957604051630c9d3e9960e21b815260040160405180910390fd5b5050919050565b5f5f5160206125285f395f51905f52821560018114611fb3578382039250611f89565b505f9392505050565b60405180606001604052805f81526020015f8152602001611fdb61201c565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff811182821017156120735761207361203b565b60405290565b6040516102c0810167ffffffffffffffff811182821017156120735761207361203b565b5f604082840312156120ad575f5ffd5b6040805190810167ffffffffffffffff811182821017156120d0576120d061203b565b604052823581526020928301359281019290925250919050565b5f82601f8301126120f9575f5ffd5b604051610160810167ffffffffffffffff8111828210171561211d5761211d61203b565b60405280610160840185811115612132575f5ffd5b845b8181101561214c578035835260209283019201612134565b509195945050505050565b5f6104808284031215612168575f5ffd5b61217061204f565b905061217c838361209d565b815261218b836040840161209d565b602082015261219d836080840161209d565b60408201526121af8360c0840161209d565b60608201526121c283610100840161209d565b60808201526121d583610140840161209d565b60a08201526121e883610180840161209d565b60c08201526121fb836101c0840161209d565b60e082015261220e83610200840161209d565b61010082015261222283610240840161209d565b61012082015261223683610280840161209d565b61014082015261224a836102c0840161209d565b61016082015261225e83610300840161209d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae08112156122f6575f5ffd5b610500811215612304575f5ffd5b5061230d612079565b8435815260208086013590820152612328866040870161209d565b604082015261233a866080870161209d565b606082015261234c8660c0870161209d565b608082015261235f86610100870161209d565b60a082015261237286610140870161209d565b60c082015261238586610180870161209d565b60e0820152612398866101c0870161209d565b6101008201526123ac86610200870161209d565b6101208201526123c086610240870161209d565b6101408201526123d486610280870161209d565b6101608201526123e8866102c0870161209d565b6101808201526123fc86610300870161209d565b6101a082015261241086610340870161209d565b6101c082015261242486610380870161209d565b6101e0820152612438866103c0870161209d565b61020082015261244c86610400870161209d565b61022082015261246086610440870161209d565b61024082015261247486610480870161209d565b6102608201526104c08501356102808201526104e08501356102a082015292506124a28561050086016120ea565b91506124b2856106608601612157565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156124ee57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261252257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
3134    /// ```
3135    #[rustfmt::skip]
3136    #[allow(clippy::all)]
3137    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3138        b"a%Ta\x004`\x0B\x82\x82\x829\x80Q_\x1A`s\x14`(WcNH{q`\xE0\x1B_R_`\x04R`$_\xFD[0_R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a\"\xE2V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04\x17V[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06\x0BV[a\x02\xC2\x81` \x01Qa\x06\x0BV[a\x02\xCF\x81`@\x01Qa\x06\x0BV[a\x02\xDC\x81``\x01Qa\x06\x0BV[a\x02\xE9\x81`\x80\x01Qa\x06\x0BV[a\x02\xF6\x81`\xA0\x01Qa\x06\x0BV[a\x03\x03\x81`\xC0\x01Qa\x06\x0BV[a\x03\x10\x81`\xE0\x01Qa\x06\x0BV[a\x03\x1E\x81a\x01\0\x01Qa\x06\x0BV[a\x03,\x81a\x01 \x01Qa\x06\x0BV[a\x03:\x81a\x01@\x01Qa\x06\x0BV[a\x03H\x81a\x01`\x01Qa\x06\x0BV[a\x03V\x81a\x01\x80\x01Qa\x06\x0BV[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a%(_9_Q\x90_R\x81\x10\x80a\x04\x13W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04=W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04I\x85\x85\x85a\x06\x8AV[\x90P_a\x04X\x86_\x01Qa\x0C\x19V[\x90P_a\x04j\x82\x84`\xA0\x01Q\x88a\x11\xC0V[\x90Pa\x04\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xBB\x87a\x01`\x01Qa\x04\xB6\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x1DV[a\x12\x80V[\x91P__a\x04\xCB\x8B\x88\x87\x8Ca\x12\xE7V[\x91P\x91Pa\x04\xDC\x81a\x04\xB6\x84a\x15\x1FV[\x92Pa\x04\xF5\x83a\x04\xB6\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x1DV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a%(_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x058\x85a\x04\xB6\x8Da\x01\x80\x01Q\x84a\x12\x1DV[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x05\xF9\x87\x82a\x05\xEC\x89a\x15\x1FV[a\x05\xF4a\x15\xBCV[a\x16\x89V[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06DWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\x85W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x06\xCA`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a%(_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C!a\x1F\xBCV[\x81b\x01\0\0\x03a\r\xF8W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0F\xD1W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x11\xA7W`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE1`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x11\xEB\x84\x84a\x17:V[\x80\x82Ra\x11\xFB\x90\x85\x90\x85\x90a\x17\x8BV[` \x82\x01R\x80Qa\x12\x11\x90\x85\x90\x84\x90\x86\x90a\x17\xFAV[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x128a\x1F\xE0V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x12xW`@Qc\x03;qM`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba\x1F\xFEV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06Z\xFA\x90P\x80a\x12xW`@Qc0*\xED\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\x1A\x87\x87\x87\x87a\x19IV[\x90P_Q` a%(_9_Q\x90_R_a\x136\x88\x87\x89a\x1E\x13V[\x90Pa\x13B\x81\x83a$\xCFV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x13n\x85a\x04\xB6\x8A_\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\x96\x86a\x04\xB6\x8A` \x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xBE\x86a\x04\xB6\x8A`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xE6\x86a\x04\xB6\x8A``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x0E\x86a\x04\xB6\x8A`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x146\x86a\x04\xB6\x8D`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x14^\x86a\x04\xB6\x8D``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x86\x86a\x04\xB6\x8D`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xAE\x86a\x04\xB6\x8D`\xA0\x01Q\x84a\x12\x1DV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x14\xD8\x87a\x04\xB6\x8B`\xA0\x01Q\x84a\x12\x1DV[\x96Pa\x15\x0Ea\x15\x08`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x1DV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x15FWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x15\x8A\x91\x90a%\x08V[a\x15\xB4\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa$\xCFV[\x90R\x92\x91PPV[a\x15\xE3`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x17,W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a%(_9_Q\x90_R\x90\x83\x80\x15a\x17{W\x84\x93P_[\x82\x81\x10\x15a\x17oW\x83\x85\x86\t\x94P`\x01\x01a\x17YV[P`\x01\x84\x03\x93Pa\x17\x82V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x17\x9CWP`\x01a\x02\xA3V[\x81_\x03a\x17\xAAWP_a\x02\xA3V[` \x84\x01Q_Q` a%(_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x17\xD8W`\x01\x87\x03\x92Pa\x17\xDFV[`\x01\x84\x03\x92P[Pa\x17\xE9\x82a\x1E\xFEV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a%(_9_Q\x90_R\x82\x82\x03a\x18sW`\x01_[`\x0B\x81\x10\x15a\x18hW\x81\x86\x03a\x18EW\x86\x81`\x0B\x81\x10a\x186Wa\x186a$\xBBV[` \x02\x01Q\x93PPPPa\x172V[\x82\x80a\x18SWa\x18Sa$\xF4V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x18\x14V[P_\x92PPPa\x172V[a\x18{a \x1CV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x18\xBDW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x18\x90V[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x19\x11W\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x18\xD1V[PPPP\x80\x92PP_a\x19#\x83a\x1E\xFEV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a%(_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1A\xB6\x87`\xA0\x01Q\x86a\x12\x1DV[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1B}\x86a\x04\xB6\x8C`\xC0\x01Q\x88\x85a\x1Bx\x91\x90a$\xCFV[a\x12\x1DV[\x95Pa\x1B\x96\x86a\x04\xB6\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x1DV[\x95Pa\x1B\xB0\x86a\x04\xB6\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x1DV[\x95Pa\x1B\xCA\x86a\x04\xB6\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x1DV[\x95Pa\x1B\xE4\x86a\x04\xB6\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x1DV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1C\t\x86a\x04\xB6\x8Ca\x01`\x01Q\x86a\x12\x1DV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1C.\x86a\x04\xB6\x8Ca\x01\x80\x01Q\x86a\x12\x1DV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C]\x86a\x04\xB6\x8Ca\x01\xE0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\x8C\x86a\x04\xB6\x8Ca\x02\0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xBB\x86a\x04\xB6\x8Ca\x02 \x01Q\x86a\x12\x1DV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xEA\x86a\x04\xB6\x8Ca\x02@\x01Q\x86a\x12\x1DV[\x95Pa\x1D\x07\x86a\x04\xB6\x8Ca\x01\xA0\x01Qa\x1Bx\x8Ba\x02 \x01Qa\x1F\x90V[\x95Pa\x1D\x18\x86\x8Ba\x01\xC0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1D^\x86a\x04\xB6\x8Ca\x02`\x01Q\x86a\x12\x1DV[\x95Pa\x1Dl\x88_\x01Qa\x1F\x90V[\x94Pa\x1D\x80\x86a\x04\xB6\x89`\xC0\x01Q\x88a\x12\x1DV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1D\xB4\x86a\x04\xB6\x89`\xE0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xCF\x86a\x04\xB6\x89a\x01\0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xEA\x86a\x04\xB6\x89a\x01 \x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1E\x05\x86a\x04\xB6\x89a\x01@\x01Q\x88a\x12\x1DV[\x9A\x99PPPPPPPPPPV[___Q` a%(_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[_\x81_\x03a\x1F\x1FW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a%(_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a\x1F\x89W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a%(_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1F\xB3W\x83\x82\x03\x92Pa\x1F\x89V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1F\xDBa \x1CV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[_`@\x82\x84\x03\x12\x15a \xADW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a \xD0Wa \xD0a ;V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a \xF9W__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x1DWa!\x1Da ;V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a!2W__\xFD[\x84[\x81\x81\x10\x15a!LW\x805\x83R` \x92\x83\x01\x92\x01a!4V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a!hW__\xFD[a!pa OV[\x90Pa!|\x83\x83a \x9DV[\x81Ra!\x8B\x83`@\x84\x01a \x9DV[` \x82\x01Ra!\x9D\x83`\x80\x84\x01a \x9DV[`@\x82\x01Ra!\xAF\x83`\xC0\x84\x01a \x9DV[``\x82\x01Ra!\xC2\x83a\x01\0\x84\x01a \x9DV[`\x80\x82\x01Ra!\xD5\x83a\x01@\x84\x01a \x9DV[`\xA0\x82\x01Ra!\xE8\x83a\x01\x80\x84\x01a \x9DV[`\xC0\x82\x01Ra!\xFB\x83a\x01\xC0\x84\x01a \x9DV[`\xE0\x82\x01Ra\"\x0E\x83a\x02\0\x84\x01a \x9DV[a\x01\0\x82\x01Ra\"\"\x83a\x02@\x84\x01a \x9DV[a\x01 \x82\x01Ra\"6\x83a\x02\x80\x84\x01a \x9DV[a\x01@\x82\x01Ra\"J\x83a\x02\xC0\x84\x01a \x9DV[a\x01`\x82\x01Ra\"^\x83a\x03\0\x84\x01a \x9DV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[___\x83\x85\x03a\n\xE0\x81\x12\x15a\"\xF6W__\xFD[a\x05\0\x81\x12\x15a#\x04W__\xFD[Pa#\ra yV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra#(\x86`@\x87\x01a \x9DV[`@\x82\x01Ra#:\x86`\x80\x87\x01a \x9DV[``\x82\x01Ra#L\x86`\xC0\x87\x01a \x9DV[`\x80\x82\x01Ra#_\x86a\x01\0\x87\x01a \x9DV[`\xA0\x82\x01Ra#r\x86a\x01@\x87\x01a \x9DV[`\xC0\x82\x01Ra#\x85\x86a\x01\x80\x87\x01a \x9DV[`\xE0\x82\x01Ra#\x98\x86a\x01\xC0\x87\x01a \x9DV[a\x01\0\x82\x01Ra#\xAC\x86a\x02\0\x87\x01a \x9DV[a\x01 \x82\x01Ra#\xC0\x86a\x02@\x87\x01a \x9DV[a\x01@\x82\x01Ra#\xD4\x86a\x02\x80\x87\x01a \x9DV[a\x01`\x82\x01Ra#\xE8\x86a\x02\xC0\x87\x01a \x9DV[a\x01\x80\x82\x01Ra#\xFC\x86a\x03\0\x87\x01a \x9DV[a\x01\xA0\x82\x01Ra$\x10\x86a\x03@\x87\x01a \x9DV[a\x01\xC0\x82\x01Ra$$\x86a\x03\x80\x87\x01a \x9DV[a\x01\xE0\x82\x01Ra$8\x86a\x03\xC0\x87\x01a \x9DV[a\x02\0\x82\x01Ra$L\x86a\x04\0\x87\x01a \x9DV[a\x02 \x82\x01Ra$`\x86a\x04@\x87\x01a \x9DV[a\x02@\x82\x01Ra$t\x86a\x04\x80\x87\x01a \x9DV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa$\xA2\x85a\x05\0\x86\x01a \xEAV[\x91Pa$\xB2\x85a\x06`\x86\x01a!WV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a$\xEEWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a%\"WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3139    );
3140    /// The runtime bytecode of the contract, as deployed on the network.
3141    ///
3142    /// ```text
3143    ///0x730000000000000000000000000000000000000000301460806040526004361061009b575f3560e01c8063af196ba21161006e578063af196ba21461014e578063de24ac0f14610175578063e3512d561461019c578063f5144326146101c3578063fc8660c7146101ea575f5ffd5b80630c551f3f1461009f5780634b4734e3146100d95780635a14c0fe14610100578063834c452a14610127575b5f5ffd5b6100c67f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02581565b6040519081526020015b60405180910390f35b6100c67f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581565b6100c67f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a81565b6100c67f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181565b6100c67f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081565b6100c67f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88181565b6100c67f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a81565b6100c67f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481565b6101fd6101f83660046122e2565b61020d565b60405190151581526020016100d0565b5f610217826102aa565b610227835f5b60200201516103e5565b61023283600161021d565b61023d83600261021d565b61024883600361021d565b61025383600461021d565b61025e83600561021d565b61026983600661021d565b61027483600761021d565b61027f83600861021d565b61028a83600961021d565b61029583600a61021d565b6102a0848484610417565b90505b9392505050565b80516102b59061060b565b6102c2816020015161060b565b6102cf816040015161060b565b6102dc816060015161060b565b6102e9816080015161060b565b6102f68160a0015161060b565b6103038160c0015161060b565b6103108160e0015161060b565b61031e81610100015161060b565b61032c81610120015161060b565b61033a81610140015161060b565b61034881610160015161060b565b61035681610180015161060b565b610364816101a001516103e5565b610372816101c001516103e5565b610380816101e001516103e5565b61038e8161020001516103e5565b61039c8161022001516103e5565b6103aa8161024001516103e5565b6103b88161026001516103e5565b6103c68161028001516103e5565b6103d4816102a001516103e5565b6103e2816102c001516103e5565b50565b5f5160206125285f395f51905f528110806104135760405163016c173360e21b815260040160405180910390fd5b5050565b5f8360200151600b1461043d576040516320fa9d8960e11b815260040160405180910390fd5b5f61044985858561068a565b90505f610458865f0151610c19565b90505f61046a828460a00151886111c0565b905061048760405180604001604052805f81526020015f81525090565b604080518082019091525f80825260208201526104bb8761016001516104b68961018001518860e0015161121d565b611280565b91505f5f6104cb8b88878c6112e7565b915091506104dc816104b68461151f565b92506104f5836104b68b61016001518a60a0015161121d565b60a08801516040880151602001519194505f5160206125285f395f51905f52918290820990508160e08a015182099050610538856104b68d61018001518461121d565b94505f60405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe481525090506105f987826105ec8961151f565b6105f46115bc565b611689565b9e9d5050505050505050505050505050565b805160208201515f917f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4791159015161561064457505050565b8251602084015182600384858586098509088382830914838210848410161693505050816106855760405163279e345360e21b815260040160405180910390fd5b505050565b6106ca6040518061010001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f5f5160206125285f395f51905f529050604051602081015f815260fe60e01b8152865160c01b6004820152602087015160c01b600c82015261028087015160208201526102a08701516040820152600160608201527f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a60808201527f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02560a08201527f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a60c08201527f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88160e082015260e087015180516101008301526020810151610120830152506101008701518051610140830152602081015161016083015250610120870151805161018083015260208101516101a08301525061014087015180516101c083015260208101516101e083015250610160870151805161020083015260208101516102208301525061018087015180516102408301526020810151610260830152506101e0870151805161028083015260208101516102a08301525061020087015180516102c083015260208101516102e083015250610220870151805161030083015260208101516103208301525061024087015180516103408301526020810151610360830152506101a0870151805161038083015260208101516103a0830152506101c087015180516103c083015260208101516103e0830152506102608701518051610400830152602081015161042083015250604087015180516104408301526020810151610460830152506060870151805161048083015260208101516104a083015250608087015180516104c083015260208101516104e08301525060a0870151805161050083015260208101516105208301525060c08701518051610540830152602081015161056083015250855161058082015260208601516105a082015260408601516105c082015260608601516105e0820152608086015161060082015260a086015161062082015260c086015161064082015260e08601516106608201526101008601516106808201526101208601516106a08201526101408601516106c0820152845180516106e08301526020810151610700830152506020850151805161072083015260208101516107408301525060408501518051610760830152602081015161078083015250606085015180516107a083015260208101516107c083015250608085015180516107e08301526020810151610800830152505f82526108408220825282825106606085015260208220825282825106608085015260a085015180518252602081015160208301525060608220808352838106855283818209848282099150806020870152508060408601525060c085015180518252602081015160208301525060e085015180516040830152602081015160608301525061010085015180516080830152602081015160a083015250610120850151805160c0830152602081015160e0830152506101408501518051610100830152602081015161012083015250610160822082528282510660a08501526101a085015181526101c085015160208201526101e085015160408201526102008501516060820152610220850151608082015261024085015160a082015261026085015160c082015261028085015160e08201526102a08501516101008201526102c0850151610120820152610160822082528282510660c08501526101608501518051825260208101516020830152506101808501518051604083015260208101516060830152505060a0812082810660e08501525050509392505050565b610c21611fbc565b816201000003610df8576040518060600160405280601081526020017f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c10018152602001604051806101600160405280600181526020017eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b781526020017f2d1ba66f5941dc91017171fa69ec2bd0022a2a2d4115a009a93458fd4e26ecfb81526020017f086812a00ac43ea801669c640171203c41a496671bfbc065ac8db24d52cf31e581526020017f2d965651cdd9e4811f4e51b80ddca8a8b4a93ee17420aae6adaa01c2617c6e8581526020017f12597a56c2e438620b9041b98992ae0d4e705b780057bf7766a2767cece16e1d81526020017f02d94117cd17bcf1290fd67c01155dd40807857dff4a5a0b4dc67befa8aa34fd81526020017f15ee2475bee517c4ee05e51fa1ee7312a8373a0b13db8c51baf04cb2e99bd2bd81526020017e6fab49b869ae62001deac878b2667bd31bf3e28e3a2d764aa49b8d9bbdd31081526020017f2e856bf6d037708ffa4c06d4d8820f45ccadce9c5a6d178cbd573f82e0f9701181526020017f1407eee35993f2b1ad5ec6d9b8950ca3af33135d06037f871c5e33bf566dd7b48152508152509050919050565b816210000003610fd1576040518060600160405280601481526020017f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c1018152602001604051806101600160405280600181526020017f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785781526020017f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd81526020017f2087ea2cd664278608fb0ebdb820907f598502c81b6690c185e2bf15cb935f4281526020017f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e081526020017f05a2c85cfc591789605cae818e37dd4161eef9aa666bec6fe4288d09e6d2341881526020017f11f70e5363258ff4f0d716a653e1dc41f1c64484d7f4b6e219d6377614a3905c81526020017f29e84143f5870d4776a92df8da8c6c9303d59088f37ba85f40cf6fd14265b4bc81526020017f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e581526020017f22b94b2e2b0043d04e662d5ec018ea1c8a99a23a62c9eb46f0318f6a194985f081526020017f29969d8d5363bef1101a68e446a14e1da7ba9294e142a146a980fddb4d4d41a58152508152509050919050565b816020036111a7576040518060600160405280600581526020017f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e7508000018152602001604051806101600160405280600181526020017f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d081526020017f21082ca216cbbf4e1c6e4f4594dd508c996dfbe1174efb98b11509c6e306460b81526020017f1277ae6415f0ef18f2ba5fb162c39eb7311f386e2d26d64401f4a25da77c253b81526020017f2b337de1c8c14f22ec9b9e2f96afef3652627366f8170a0a948dad4ac1bd5e8081526020017f2fbd4dd2976be55d1a163aa9820fb88dfac5ddce77e1872e90632027327a5ebe81526020017f107aab49e65a67f9da9cd2abf78be38bd9dc1d5db39f81de36bcfa5b4b03904381526020017ee14b6364a47e9c4284a9f80a5fc41cd212b0d4dbf8a5703770a40a9a34399081526020017f30644e72e131a029048b6e193fd841045cea24f6fd736bec231204708f70363681526020017f22399c34139bffada8de046aac50c9628e3517a3a452795364e777cd65bb9f4881526020017f2290ee31c482cf92b79b1944db1c0147635e9004db8c3b9d13644bef31ec3bd38152508152509050919050565b60405163e2ef09e560e01b815260040160405180910390fd5b6111e160405180606001604052805f81526020015f81526020015f81525090565b6111eb848461173a565b8082526111fb908590859061178b565b60208201528051611211908590849086906117fa565b60408201529392505050565b604080518082019091525f8082526020820152611238611fe0565b835181526020808501519082015260408082018490525f908360608460075afa9050806112785760405163033b714d60e31b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261129b611ffe565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460065afa9050806112785760405163302aedb560e11b815260040160405180910390fd5b604080518082019091525f8082526020820152604080518082019091525f80825260208201525f61131a87878787611949565b90505f5160206125285f395f51905f525f611336888789611e13565b905061134281836124cf565b60c08901516101a08801519192509081908490819083098408925061136e856104b68a5f01518461121d565b955083828209905083846101c08a0151830984089250611396866104b68a602001518461121d565b955083828209905083846101e08a01518309840892506113be866104b68a604001518461121d565b955083828209905083846102008a01518309840892506113e6866104b68a606001518461121d565b955083828209905083846102208a015183098408925061140e866104b68a608001518461121d565b955083828209905083846102408a0151830984089250611436866104b68d604001518461121d565b955083828209905083846102608a015183098408925061145e866104b68d606001518461121d565b955083828209905083846102808a0151830984089250611486866104b68d608001518461121d565b955083828209905083846102a08a01518309840892506114ae866104b68d60a001518461121d565b95505f8a60e00151905084856102c08b01518309850893506114d8876104b68b60a001518461121d565b965061150e6115086040805180820182525f80825260209182015281518083019092526001825260029082015290565b8561121d565b975050505050505094509492505050565b604080518082019091525f8082526020820152815160208301511590151615611546575090565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161158a9190612508565b6115b4907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476124cf565b905292915050565b6115e360405180608001604052805f81526020015f81526020015f81526020015f81525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b5f5f5f6040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e0820152602085015161010082015284516101208201526060850151610140820152604085015161016082015260205f6101808360085afa9150505f5191508061172c5760405163c206334f60e01b815260040160405180910390fd5b50151590505b949350505050565b81515f905f5160206125285f395f51905f529083801561177b578493505f5b8281101561176f57838586099450600101611759565b50600184039350611782565b6001830393505b50505092915050565b5f8260010361179c575060016102a3565b815f036117aa57505f6102a3565b60208401515f5160206125285f395f51905f52905f908281860990508580156117d8576001870392506117df565b6001840392505b506117e982611efe565b915082828209979650505050505050565b5f5f5160206125285f395f51905f528282036118735760015f5b600b81101561186857818603611845578681600b8110611836576118366124bb565b60200201519350505050611732565b8280611853576118536124f4565b60408901516020015183099150600101611814565b505f92505050611732565b61187b61201c565b60408701516001610140838101828152920190805b600b8110156118bd5760208403935085868a85518903088309808552601f19909301929150600101611890565b505050505f5f5f90506001838960408c01515f5b600b811015611911578882518a85518c88518a0909098981880896505088898d84518c0308860994506020938401939283019291909101906001016118d1565b50505050809250505f61192383611efe565b905060208a015185818909965050848187099550848287099a9950505050505050505050565b604080518082019091525f80825260208201525f5f5f5f5f5f5160206125285f395f51905f52905060808901518160208a015160208c0151099550895194508160a08b015160608c0151099350816101a089015185089250818184089250818584099450817f2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4a85099250816101c089015184089250818184089250818584099450817f1ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb02585099250816101e089015184089250818184089250818584099450817f2042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a850992508161020089015184089250818184089250818584099450817f2e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e88185099250816102208901518408925081818408925050808483099350808486089450611ab68760a001518661121d565b9550885160608a015160808b0151838284099750836102c08b015189099750836102408b015183099550836101a08b015187089550838187089550838689099750836102608b015183099550836101c08b015187089550838187089550838689099750836102808b015183099550836101e08b015187089550838187089550838689099750836102a08b015183099550836102008b015187089550838187089550505050808386099450611b7d866104b68c60c001518885611b7891906124cf565b61121d565b9550611b96866104b68c60e001518a6101a0015161121d565b9550611bb0866104b68c61010001518a6101c0015161121d565b9550611bca866104b68c61012001518a6101e0015161121d565b9550611be4866104b68c61014001518a610200015161121d565b9550806101c08801516101a0890151099250611c09866104b68c61016001518661121d565b9550806102008801516101e0890151099250611c2e866104b68c61018001518661121d565b95506101a08701519250808384099150808283099150808284099250611c5d866104b68c6101e001518661121d565b95506101c08701519250808384099150808283099150808284099250611c8c866104b68c61020001518661121d565b95506101e08701519250808384099150808283099150808284099250611cbb866104b68c61022001518661121d565b95506102008701519250808384099150808283099150808284099250611cea866104b68c61024001518661121d565b9550611d07866104b68c6101a00151611b788b6102200151611f90565b9550611d18868b6101c00151611280565b9550806101c08801516101a0890151099250806101e08801518409925080610200880151840992508061022088015184099250611d5e866104b68c61026001518661121d565b9550611d6c885f0151611f90565b9450611d80866104b68960c001518861121d565b955080600189510860a08a0151909350819080099150808284099250808386099450611db4866104b68960e001518861121d565b9550808386099450611dcf866104b68961010001518861121d565b9550808386099450611dea866104b68961012001518861121d565b9550808386099450611e05866104b68961014001518861121d565b9a9950505050505050505050565b5f5f5f5160206125285f395f51905f5290505f836020015190505f846040015190505f60019050606088015160808901516101a08901516102408a01518788898387098a868608088609945050506101c08901516102608a01518788898387098a868608088609945050506101e08901516102808a01518788898387098a868608088609945050506102008901516102a08a01518788898387098a8686080886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b5f815f03611f1f5760405163d6dbbb0d60e01b815260040160405180910390fd5b5f5f5f5160206125285f395f51905f52905060405160208152602080820152602060408201528460608201526002820360808201528160a082015260205f60c08360055afa9250505f51925081611f8957604051630c9d3e9960e21b815260040160405180910390fd5b5050919050565b5f5f5160206125285f395f51905f52821560018114611fb3578382039250611f89565b505f9392505050565b60405180606001604052805f81526020015f8152602001611fdb61201c565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101600160405280600b906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b6040516102e0810167ffffffffffffffff811182821017156120735761207361203b565b60405290565b6040516102c0810167ffffffffffffffff811182821017156120735761207361203b565b5f604082840312156120ad575f5ffd5b6040805190810167ffffffffffffffff811182821017156120d0576120d061203b565b604052823581526020928301359281019290925250919050565b5f82601f8301126120f9575f5ffd5b604051610160810167ffffffffffffffff8111828210171561211d5761211d61203b565b60405280610160840185811115612132575f5ffd5b845b8181101561214c578035835260209283019201612134565b509195945050505050565b5f6104808284031215612168575f5ffd5b61217061204f565b905061217c838361209d565b815261218b836040840161209d565b602082015261219d836080840161209d565b60408201526121af8360c0840161209d565b60608201526121c283610100840161209d565b60808201526121d583610140840161209d565b60a08201526121e883610180840161209d565b60c08201526121fb836101c0840161209d565b60e082015261220e83610200840161209d565b61010082015261222283610240840161209d565b61012082015261223683610280840161209d565b61014082015261224a836102c0840161209d565b61016082015261225e83610300840161209d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f5f838503610ae08112156122f6575f5ffd5b610500811215612304575f5ffd5b5061230d612079565b8435815260208086013590820152612328866040870161209d565b604082015261233a866080870161209d565b606082015261234c8660c0870161209d565b608082015261235f86610100870161209d565b60a082015261237286610140870161209d565b60c082015261238586610180870161209d565b60e0820152612398866101c0870161209d565b6101008201526123ac86610200870161209d565b6101208201526123c086610240870161209d565b6101408201526123d486610280870161209d565b6101608201526123e8866102c0870161209d565b6101808201526123fc86610300870161209d565b6101a082015261241086610340870161209d565b6101c082015261242486610380870161209d565b6101e0820152612438866103c0870161209d565b61020082015261244c86610400870161209d565b61022082015261246086610440870161209d565b61024082015261247486610480870161209d565b6102608201526104c08501356102808201526104e08501356102a082015292506124a28561050086016120ea565b91506124b2856106608601612157565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b818103818111156124ee57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52601260045260245ffd5b5f8261252257634e487b7160e01b5f52601260045260245ffd5b50069056fe30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a164736f6c634300081c000a
3144    /// ```
3145    #[rustfmt::skip]
3146    #[allow(clippy::all)]
3147    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3148        b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\0\x9BW_5`\xE0\x1C\x80c\xAF\x19k\xA2\x11a\0nW\x80c\xAF\x19k\xA2\x14a\x01NW\x80c\xDE$\xAC\x0F\x14a\x01uW\x80c\xE3Q-V\x14a\x01\x9CW\x80c\xF5\x14C&\x14a\x01\xC3W\x80c\xFC\x86`\xC7\x14a\x01\xEAW__\xFD[\x80c\x0CU\x1F?\x14a\0\x9FW\x80cKG4\xE3\x14a\0\xD9W\x80cZ\x14\xC0\xFE\x14a\x01\0W\x80c\x83LE*\x14a\x01'W[__\xFD[a\0\xC6\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC6\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81V[a\0\xC6\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x81V[a\0\xC6\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81V[a\0\xC6\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81V[a\0\xC6\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x81V[a\0\xC6\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x81V[a\0\xC6\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81V[a\x01\xFDa\x01\xF86`\x04a\"\xE2V[a\x02\rV[`@Q\x90\x15\x15\x81R` \x01a\0\xD0V[_a\x02\x17\x82a\x02\xAAV[a\x02'\x83_[` \x02\x01Qa\x03\xE5V[a\x022\x83`\x01a\x02\x1DV[a\x02=\x83`\x02a\x02\x1DV[a\x02H\x83`\x03a\x02\x1DV[a\x02S\x83`\x04a\x02\x1DV[a\x02^\x83`\x05a\x02\x1DV[a\x02i\x83`\x06a\x02\x1DV[a\x02t\x83`\x07a\x02\x1DV[a\x02\x7F\x83`\x08a\x02\x1DV[a\x02\x8A\x83`\ta\x02\x1DV[a\x02\x95\x83`\na\x02\x1DV[a\x02\xA0\x84\x84\x84a\x04\x17V[\x90P[\x93\x92PPPV[\x80Qa\x02\xB5\x90a\x06\x0BV[a\x02\xC2\x81` \x01Qa\x06\x0BV[a\x02\xCF\x81`@\x01Qa\x06\x0BV[a\x02\xDC\x81``\x01Qa\x06\x0BV[a\x02\xE9\x81`\x80\x01Qa\x06\x0BV[a\x02\xF6\x81`\xA0\x01Qa\x06\x0BV[a\x03\x03\x81`\xC0\x01Qa\x06\x0BV[a\x03\x10\x81`\xE0\x01Qa\x06\x0BV[a\x03\x1E\x81a\x01\0\x01Qa\x06\x0BV[a\x03,\x81a\x01 \x01Qa\x06\x0BV[a\x03:\x81a\x01@\x01Qa\x06\x0BV[a\x03H\x81a\x01`\x01Qa\x06\x0BV[a\x03V\x81a\x01\x80\x01Qa\x06\x0BV[a\x03d\x81a\x01\xA0\x01Qa\x03\xE5V[a\x03r\x81a\x01\xC0\x01Qa\x03\xE5V[a\x03\x80\x81a\x01\xE0\x01Qa\x03\xE5V[a\x03\x8E\x81a\x02\0\x01Qa\x03\xE5V[a\x03\x9C\x81a\x02 \x01Qa\x03\xE5V[a\x03\xAA\x81a\x02@\x01Qa\x03\xE5V[a\x03\xB8\x81a\x02`\x01Qa\x03\xE5V[a\x03\xC6\x81a\x02\x80\x01Qa\x03\xE5V[a\x03\xD4\x81a\x02\xA0\x01Qa\x03\xE5V[a\x03\xE2\x81a\x02\xC0\x01Qa\x03\xE5V[PV[_Q` a%(_9_Q\x90_R\x81\x10\x80a\x04\x13W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x0B\x14a\x04=W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x04I\x85\x85\x85a\x06\x8AV[\x90P_a\x04X\x86_\x01Qa\x0C\x19V[\x90P_a\x04j\x82\x84`\xA0\x01Q\x88a\x11\xC0V[\x90Pa\x04\x87`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x04\xBB\x87a\x01`\x01Qa\x04\xB6\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x12\x1DV[a\x12\x80V[\x91P__a\x04\xCB\x8B\x88\x87\x8Ca\x12\xE7V[\x91P\x91Pa\x04\xDC\x81a\x04\xB6\x84a\x15\x1FV[\x92Pa\x04\xF5\x83a\x04\xB6\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x12\x1DV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a%(_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x058\x85a\x04\xB6\x8Da\x01\x80\x01Q\x84a\x12\x1DV[\x94P_`@Q\x80`\x80\x01`@R\x80\x7F\x01\x18\xC4\xD5\xB87\xBC\xC2\xBC\x89\xB5\xB3\x98\xB5\x97N\x9FYD\x07;2\x07\x8B~#\x1F\xEC\x93\x88\x83\xB0\x81R` \x01\x7F&\x0E\x01\xB2Q\xF6\xF1\xC7\xE7\xFFNX\x07\x91\xDE\xE8\xEAQ\xD8z5\x8E\x03\x8BN\xFE0\xFA\xC0\x93\x83\xC1\x81R` \x01\x7F\"\xFE\xBD\xA3\xC0\xC0c*VG[B\x14\xE5a^\x11\xE6\xDD?\x96\xE6\xCE\xA2\x85J\x87\xD4\xDA\xCC^U\x81R` \x01\x7F\x04\xFCci\xF7\x11\x0F\xE3\xD2QV\xC1\xBB\x9Ar\x85\x9C\xF2\xA0FA\xF9\x9B\xA4\xEEA<\x80\xDAj_\xE4\x81RP\x90Pa\x05\xF9\x87\x82a\x05\xEC\x89a\x15\x1FV[a\x05\xF4a\x15\xBCV[a\x16\x89V[\x9E\x9DPPPPPPPPPPPPPPV[\x80Q` \x82\x01Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x91\x15\x90\x15\x16\x15a\x06DWPPPV[\x82Q` \x84\x01Q\x82`\x03\x84\x85\x85\x86\t\x85\t\x08\x83\x82\x83\t\x14\x83\x82\x10\x84\x84\x10\x16\x16\x93PPP\x81a\x06\x85W`@Qc'\x9E4S`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPV[a\x06\xCA`@Q\x80a\x01\0\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[__Q` a%(_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R`\xE0\x86\x01Qa\x06`\x82\x01Ra\x01\0\x86\x01Qa\x06\x80\x82\x01Ra\x01 \x86\x01Qa\x06\xA0\x82\x01Ra\x01@\x86\x01Qa\x06\xC0\x82\x01R\x84Q\x80Qa\x06\xE0\x83\x01R` \x81\x01Qa\x07\0\x83\x01RP` \x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`@\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP``\x85\x01Q\x80Qa\x07\xA0\x83\x01R` \x81\x01Qa\x07\xC0\x83\x01RP`\x80\x85\x01Q\x80Qa\x07\xE0\x83\x01R` \x81\x01Qa\x08\0\x83\x01RP_\x82Ra\x08@\x82 \x82R\x82\x82Q\x06``\x85\x01R` \x82 \x82R\x82\x82Q\x06`\x80\x85\x01R`\xA0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP``\x82 \x80\x83R\x83\x81\x06\x85R\x83\x81\x82\t\x84\x82\x82\t\x91P\x80` \x87\x01RP\x80`@\x86\x01RP`\xC0\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RP`\xE0\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPa\x01\0\x85\x01Q\x80Q`\x80\x83\x01R` \x81\x01Q`\xA0\x83\x01RPa\x01 \x85\x01Q\x80Q`\xC0\x83\x01R` \x81\x01Q`\xE0\x83\x01RPa\x01@\x85\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01`\x82 \x82R\x82\x82Q\x06`\xA0\x85\x01Ra\x01\xA0\x85\x01Q\x81Ra\x01\xC0\x85\x01Q` \x82\x01Ra\x01\xE0\x85\x01Q`@\x82\x01Ra\x02\0\x85\x01Q``\x82\x01Ra\x02 \x85\x01Q`\x80\x82\x01Ra\x02@\x85\x01Q`\xA0\x82\x01Ra\x02`\x85\x01Q`\xC0\x82\x01Ra\x02\x80\x85\x01Q`\xE0\x82\x01Ra\x02\xA0\x85\x01Qa\x01\0\x82\x01Ra\x02\xC0\x85\x01Qa\x01 \x82\x01Ra\x01`\x82 \x82R\x82\x82Q\x06`\xC0\x85\x01Ra\x01`\x85\x01Q\x80Q\x82R` \x81\x01Q` \x83\x01RPa\x01\x80\x85\x01Q\x80Q`@\x83\x01R` \x81\x01Q``\x83\x01RPP`\xA0\x81 \x82\x81\x06`\xE0\x85\x01RPPP\x93\x92PPPV[a\x0C!a\x1F\xBCV[\x81b\x01\0\0\x03a\r\xF8W`@Q\x80``\x01`@R\x80`\x10\x81R` \x01\x7F0d\x1E\x0E\x92\xBE\xBE\xF8\x18&\x8Df;\xCA\xD6\xDB\xCF\xD6\xC0\x14\x91p\xF6\xD7\xD3P\xB1\xB1\xFAl\x10\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81R` \x01\x7F\x15\xEE$u\xBE\xE5\x17\xC4\xEE\x05\xE5\x1F\xA1\xEEs\x12\xA87:\x0B\x13\xDB\x8CQ\xBA\xF0L\xB2\xE9\x9B\xD2\xBD\x81R` \x01~o\xABI\xB8i\xAEb\0\x1D\xEA\xC8x\xB2f{\xD3\x1B\xF3\xE2\x8E:-vJ\xA4\x9B\x8D\x9B\xBD\xD3\x10\x81R` \x01\x7F.\x85k\xF6\xD07p\x8F\xFAL\x06\xD4\xD8\x82\x0FE\xCC\xAD\xCE\x9CZm\x17\x8C\xBDW?\x82\xE0\xF9p\x11\x81R` \x01\x7F\x14\x07\xEE\xE3Y\x93\xF2\xB1\xAD^\xC6\xD9\xB8\x95\x0C\xA3\xAF3\x13]\x06\x03\x7F\x87\x1C^3\xBFVm\xD7\xB4\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0F\xD1W`@Q\x80``\x01`@R\x80`\x14\x81R` \x01\x7F0dKl\x9CJr\x16\x9EM\xAA1}%\xF0E\x12\xAE\x15\xC5;4\xE8\xF5\xAC\xD8\xE1U\xD0\xA6\xC1\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81R` \x01\x7F)\xE8AC\xF5\x87\rGv\xA9-\xF8\xDA\x8Cl\x93\x03\xD5\x90\x88\xF3{\xA8_@\xCFo\xD1Be\xB4\xBC\x81R` \x01\x7F\x1B\xF8-\xEB\xA7\xD7I\x02\xC3p\x8C\xC6\xE7\x0Ea\xF3\x05\x12\xEC\xA9VU!\x0E'nXX\xCE\x8FX\xE5\x81R` \x01\x7F\"\xB9K.+\0C\xD0Nf-^\xC0\x18\xEA\x1C\x8A\x99\xA2:b\xC9\xEBF\xF01\x8Fj\x19I\x85\xF0\x81R` \x01\x7F)\x96\x9D\x8DSc\xBE\xF1\x10\x1Ah\xE4F\xA1N\x1D\xA7\xBA\x92\x94\xE1B\xA1F\xA9\x80\xFD\xDBMMA\xA5\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x11\xA7W`@Q\x80``\x01`@R\x80`\x05\x81R` \x01\x7F.\xE1+\xFFJ(\x13(j\x8D\xC3\x88\xCDuM\x9A>\xF2I\x065\xEB\xA5\x0C\xB9\xC2\xE5\xE7P\x80\0\x01\x81R` \x01`@Q\x80a\x01`\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81R` \x01~\xE1Kcd\xA4~\x9CB\x84\xA9\xF8\n_\xC4\x1C\xD2\x12\xB0\xD4\xDB\xF8\xA5p7p\xA4\n\x9A49\x90\x81R` \x01\x7F0dNr\xE11\xA0)\x04\x8Bn\x19?\xD8A\x04\\\xEA$\xF6\xFDsk\xEC#\x12\x04p\x8Fp66\x81R` \x01\x7F\"9\x9C4\x13\x9B\xFF\xAD\xA8\xDE\x04j\xACP\xC9b\x8E5\x17\xA3\xA4RySd\xE7w\xCDe\xBB\x9FH\x81R` \x01\x7F\"\x90\xEE1\xC4\x82\xCF\x92\xB7\x9B\x19D\xDB\x1C\x01Gc^\x90\x04\xDB\x8C;\x9D\x13dK\xEF1\xEC;\xD3\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xE1`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x11\xEB\x84\x84a\x17:V[\x80\x82Ra\x11\xFB\x90\x85\x90\x85\x90a\x17\x8BV[` \x82\x01R\x80Qa\x12\x11\x90\x85\x90\x84\x90\x86\x90a\x17\xFAV[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x128a\x1F\xE0V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07Z\xFA\x90P\x80a\x12xW`@Qc\x03;qM`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x12\x9Ba\x1F\xFEV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06Z\xFA\x90P\x80a\x12xW`@Qc0*\xED\xB5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x13\x1A\x87\x87\x87\x87a\x19IV[\x90P_Q` a%(_9_Q\x90_R_a\x136\x88\x87\x89a\x1E\x13V[\x90Pa\x13B\x81\x83a$\xCFV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x13n\x85a\x04\xB6\x8A_\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\x96\x86a\x04\xB6\x8A` \x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xBE\x86a\x04\xB6\x8A`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x13\xE6\x86a\x04\xB6\x8A``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x0E\x86a\x04\xB6\x8A`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x146\x86a\x04\xB6\x8D`@\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x14^\x86a\x04\xB6\x8D``\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\x86\x86a\x04\xB6\x8D`\x80\x01Q\x84a\x12\x1DV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x14\xAE\x86a\x04\xB6\x8D`\xA0\x01Q\x84a\x12\x1DV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x14\xD8\x87a\x04\xB6\x8B`\xA0\x01Q\x84a\x12\x1DV[\x96Pa\x15\x0Ea\x15\x08`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[\x85a\x12\x1DV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x15FWP\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x15\x8A\x91\x90a%\x08V[a\x15\xB4\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa$\xCFV[\x90R\x92\x91PPV[a\x15\xE3`@Q\x80`\x80\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\x80\x01`@R\x80\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED\x81R` \x01\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R` \x01\x7F\x12\xC8^\xA5\xDB\x8Cm\xEBJ\xABq\x80\x8D\xCB@\x8F\xE3\xD1\xE7i\x0CC\xD3{L\xE6\xCC\x01f\xFA}\xAA\x81R` \x01\x7F\t\x06\x89\xD0X_\xF0u\xEC\x9E\x99\xADi\x0C3\x95\xBCK13p\xB3\x8E\xF3U\xAC\xDA\xDC\xD1\"\x97[\x81RP\x90P\x90V[___`@Q\x87Q\x81R` \x88\x01Q` \x82\x01R` \x87\x01Q`@\x82\x01R\x86Q``\x82\x01R``\x87\x01Q`\x80\x82\x01R`@\x87\x01Q`\xA0\x82\x01R\x85Q`\xC0\x82\x01R` \x86\x01Q`\xE0\x82\x01R` \x85\x01Qa\x01\0\x82\x01R\x84Qa\x01 \x82\x01R``\x85\x01Qa\x01@\x82\x01R`@\x85\x01Qa\x01`\x82\x01R` _a\x01\x80\x83`\x08Z\xFA\x91PP_Q\x91P\x80a\x17,W`@Qc\xC2\x063O`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a%(_9_Q\x90_R\x90\x83\x80\x15a\x17{W\x84\x93P_[\x82\x81\x10\x15a\x17oW\x83\x85\x86\t\x94P`\x01\x01a\x17YV[P`\x01\x84\x03\x93Pa\x17\x82V[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x17\x9CWP`\x01a\x02\xA3V[\x81_\x03a\x17\xAAWP_a\x02\xA3V[` \x84\x01Q_Q` a%(_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x17\xD8W`\x01\x87\x03\x92Pa\x17\xDFV[`\x01\x84\x03\x92P[Pa\x17\xE9\x82a\x1E\xFEV[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a%(_9_Q\x90_R\x82\x82\x03a\x18sW`\x01_[`\x0B\x81\x10\x15a\x18hW\x81\x86\x03a\x18EW\x86\x81`\x0B\x81\x10a\x186Wa\x186a$\xBBV[` \x02\x01Q\x93PPPPa\x172V[\x82\x80a\x18SWa\x18Sa$\xF4V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x18\x14V[P_\x92PPPa\x172V[a\x18{a \x1CV[`@\x87\x01Q`\x01a\x01@\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x0B\x81\x10\x15a\x18\xBDW` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x18\x90V[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x0B\x81\x10\x15a\x19\x11W\x88\x82Q\x8A\x85Q\x8C\x88Q\x8A\t\t\t\x89\x81\x88\x08\x96PP\x88\x89\x8D\x84Q\x8C\x03\x08\x86\t\x94P` \x93\x84\x01\x93\x92\x83\x01\x92\x91\x90\x91\x01\x90`\x01\x01a\x18\xD1V[PPPP\x80\x92PP_a\x19#\x83a\x1E\xFEV[\x90P` \x8A\x01Q\x85\x81\x89\t\x96PP\x84\x81\x87\t\x95P\x84\x82\x87\t\x9A\x99PPPPPPPPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R______Q` a%(_9_Q\x90_R\x90P`\x80\x89\x01Q\x81` \x8A\x01Q` \x8C\x01Q\t\x95P\x89Q\x94P\x81`\xA0\x8B\x01Q``\x8C\x01Q\t\x93P\x81a\x01\xA0\x89\x01Q\x85\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ\x85\t\x92P\x81a\x01\xC0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%\x85\t\x92P\x81a\x01\xE0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n\x85\t\x92P\x81a\x02\0\x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92P\x81\x85\x84\t\x94P\x81\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81\x85\t\x92P\x81a\x02 \x89\x01Q\x84\x08\x92P\x81\x81\x84\x08\x92PP\x80\x84\x83\t\x93P\x80\x84\x86\x08\x94Pa\x1A\xB6\x87`\xA0\x01Q\x86a\x12\x1DV[\x95P\x88Q``\x8A\x01Q`\x80\x8B\x01Q\x83\x82\x84\t\x97P\x83a\x02\xC0\x8B\x01Q\x89\t\x97P\x83a\x02@\x8B\x01Q\x83\t\x95P\x83a\x01\xA0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02`\x8B\x01Q\x83\t\x95P\x83a\x01\xC0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\x80\x8B\x01Q\x83\t\x95P\x83a\x01\xE0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95P\x83\x86\x89\t\x97P\x83a\x02\xA0\x8B\x01Q\x83\t\x95P\x83a\x02\0\x8B\x01Q\x87\x08\x95P\x83\x81\x87\x08\x95PPPP\x80\x83\x86\t\x94Pa\x1B}\x86a\x04\xB6\x8C`\xC0\x01Q\x88\x85a\x1Bx\x91\x90a$\xCFV[a\x12\x1DV[\x95Pa\x1B\x96\x86a\x04\xB6\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x12\x1DV[\x95Pa\x1B\xB0\x86a\x04\xB6\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x12\x1DV[\x95Pa\x1B\xCA\x86a\x04\xB6\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x12\x1DV[\x95Pa\x1B\xE4\x86a\x04\xB6\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x12\x1DV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x1C\t\x86a\x04\xB6\x8Ca\x01`\x01Q\x86a\x12\x1DV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x1C.\x86a\x04\xB6\x8Ca\x01\x80\x01Q\x86a\x12\x1DV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C]\x86a\x04\xB6\x8Ca\x01\xE0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\x8C\x86a\x04\xB6\x8Ca\x02\0\x01Q\x86a\x12\x1DV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xBB\x86a\x04\xB6\x8Ca\x02 \x01Q\x86a\x12\x1DV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1C\xEA\x86a\x04\xB6\x8Ca\x02@\x01Q\x86a\x12\x1DV[\x95Pa\x1D\x07\x86a\x04\xB6\x8Ca\x01\xA0\x01Qa\x1Bx\x8Ba\x02 \x01Qa\x1F\x90V[\x95Pa\x1D\x18\x86\x8Ba\x01\xC0\x01Qa\x12\x80V[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92P\x80a\x01\xE0\x88\x01Q\x84\t\x92P\x80a\x02\0\x88\x01Q\x84\t\x92P\x80a\x02 \x88\x01Q\x84\t\x92Pa\x1D^\x86a\x04\xB6\x8Ca\x02`\x01Q\x86a\x12\x1DV[\x95Pa\x1Dl\x88_\x01Qa\x1F\x90V[\x94Pa\x1D\x80\x86a\x04\xB6\x89`\xC0\x01Q\x88a\x12\x1DV[\x95P\x80`\x01\x89Q\x08`\xA0\x8A\x01Q\x90\x93P\x81\x90\x80\t\x91P\x80\x82\x84\t\x92P\x80\x83\x86\t\x94Pa\x1D\xB4\x86a\x04\xB6\x89`\xE0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xCF\x86a\x04\xB6\x89a\x01\0\x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1D\xEA\x86a\x04\xB6\x89a\x01 \x01Q\x88a\x12\x1DV[\x95P\x80\x83\x86\t\x94Pa\x1E\x05\x86a\x04\xB6\x89a\x01@\x01Q\x88a\x12\x1DV[\x9A\x99PPPPPPPPPPV[___Q` a%(_9_Q\x90_R\x90P_\x83` \x01Q\x90P_\x84`@\x01Q\x90P_`\x01\x90P``\x88\x01Q`\x80\x89\x01Qa\x01\xA0\x89\x01Qa\x02@\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xC0\x89\x01Qa\x02`\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x01\xE0\x89\x01Qa\x02\x80\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02\0\x89\x01Qa\x02\xA0\x8A\x01Q\x87\x88\x89\x83\x87\t\x8A\x86\x86\x08\x08\x86\t\x94PPPa\x02 \x89\x01Q\x91Pa\x02\xC0\x89\x01Q\x86\x87\x82\x89\x85\x87\x08\t\x85\t\x93PPPP\x87Q` \x89\x01Q\x85\x86\x86\x83\t\x87\x03\x85\x08\x96PP\x84\x85\x83\x83\t\x86\x03\x87\x08\x99\x98PPPPPPPPPV[_\x81_\x03a\x1F\x1FW`@Qc\xD6\xDB\xBB\r`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___Q` a%(_9_Q\x90_R\x90P`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x84``\x82\x01R`\x02\x82\x03`\x80\x82\x01R\x81`\xA0\x82\x01R` _`\xC0\x83`\x05Z\xFA\x92PP_Q\x92P\x81a\x1F\x89W`@Qc\x0C\x9D>\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x91\x90PV[__Q` a%(_9_Q\x90_R\x82\x15`\x01\x81\x14a\x1F\xB3W\x83\x82\x03\x92Pa\x1F\x89V[P_\x93\x92PPPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1F\xDBa \x1CV[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a sWa sa ;V[_`@\x82\x84\x03\x12\x15a \xADW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a \xD0Wa \xD0a ;V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a \xF9W__\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a!\x1DWa!\x1Da ;V[`@R\x80a\x01`\x84\x01\x85\x81\x11\x15a!2W__\xFD[\x84[\x81\x81\x10\x15a!LW\x805\x83R` \x92\x83\x01\x92\x01a!4V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a!hW__\xFD[a!pa OV[\x90Pa!|\x83\x83a \x9DV[\x81Ra!\x8B\x83`@\x84\x01a \x9DV[` \x82\x01Ra!\x9D\x83`\x80\x84\x01a \x9DV[`@\x82\x01Ra!\xAF\x83`\xC0\x84\x01a \x9DV[``\x82\x01Ra!\xC2\x83a\x01\0\x84\x01a \x9DV[`\x80\x82\x01Ra!\xD5\x83a\x01@\x84\x01a \x9DV[`\xA0\x82\x01Ra!\xE8\x83a\x01\x80\x84\x01a \x9DV[`\xC0\x82\x01Ra!\xFB\x83a\x01\xC0\x84\x01a \x9DV[`\xE0\x82\x01Ra\"\x0E\x83a\x02\0\x84\x01a \x9DV[a\x01\0\x82\x01Ra\"\"\x83a\x02@\x84\x01a \x9DV[a\x01 \x82\x01Ra\"6\x83a\x02\x80\x84\x01a \x9DV[a\x01@\x82\x01Ra\"J\x83a\x02\xC0\x84\x01a \x9DV[a\x01`\x82\x01Ra\"^\x83a\x03\0\x84\x01a \x9DV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[___\x83\x85\x03a\n\xE0\x81\x12\x15a\"\xF6W__\xFD[a\x05\0\x81\x12\x15a#\x04W__\xFD[Pa#\ra yV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra#(\x86`@\x87\x01a \x9DV[`@\x82\x01Ra#:\x86`\x80\x87\x01a \x9DV[``\x82\x01Ra#L\x86`\xC0\x87\x01a \x9DV[`\x80\x82\x01Ra#_\x86a\x01\0\x87\x01a \x9DV[`\xA0\x82\x01Ra#r\x86a\x01@\x87\x01a \x9DV[`\xC0\x82\x01Ra#\x85\x86a\x01\x80\x87\x01a \x9DV[`\xE0\x82\x01Ra#\x98\x86a\x01\xC0\x87\x01a \x9DV[a\x01\0\x82\x01Ra#\xAC\x86a\x02\0\x87\x01a \x9DV[a\x01 \x82\x01Ra#\xC0\x86a\x02@\x87\x01a \x9DV[a\x01@\x82\x01Ra#\xD4\x86a\x02\x80\x87\x01a \x9DV[a\x01`\x82\x01Ra#\xE8\x86a\x02\xC0\x87\x01a \x9DV[a\x01\x80\x82\x01Ra#\xFC\x86a\x03\0\x87\x01a \x9DV[a\x01\xA0\x82\x01Ra$\x10\x86a\x03@\x87\x01a \x9DV[a\x01\xC0\x82\x01Ra$$\x86a\x03\x80\x87\x01a \x9DV[a\x01\xE0\x82\x01Ra$8\x86a\x03\xC0\x87\x01a \x9DV[a\x02\0\x82\x01Ra$L\x86a\x04\0\x87\x01a \x9DV[a\x02 \x82\x01Ra$`\x86a\x04@\x87\x01a \x9DV[a\x02@\x82\x01Ra$t\x86a\x04\x80\x87\x01a \x9DV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa$\xA2\x85a\x05\0\x86\x01a \xEAV[\x91Pa$\xB2\x85a\x06`\x86\x01a!WV[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a$\xEEWcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x92\x91PPV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a%\"WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\xA1dsolcC\0\x08\x1C\0\n",
3149    );
3150    #[derive(serde::Serialize, serde::Deserialize)]
3151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3152    /**Custom error with signature `BN254G1AddFailed()` and selector `0x6055db6a`.
3153```solidity
3154error BN254G1AddFailed();
3155```*/
3156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3157    #[derive(Clone)]
3158    pub struct BN254G1AddFailed;
3159    #[allow(
3160        non_camel_case_types,
3161        non_snake_case,
3162        clippy::pub_underscore_fields,
3163        clippy::style
3164    )]
3165    const _: () = {
3166        use alloy::sol_types as alloy_sol_types;
3167        #[doc(hidden)]
3168        #[allow(dead_code)]
3169        type UnderlyingSolTuple<'a> = ();
3170        #[doc(hidden)]
3171        type UnderlyingRustTuple<'a> = ();
3172        #[cfg(test)]
3173        #[allow(dead_code, unreachable_patterns)]
3174        fn _type_assertion(
3175            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3176        ) {
3177            match _t {
3178                alloy_sol_types::private::AssertTypeEq::<
3179                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3180                >(_) => {}
3181            }
3182        }
3183        #[automatically_derived]
3184        #[doc(hidden)]
3185        impl ::core::convert::From<BN254G1AddFailed> for UnderlyingRustTuple<'_> {
3186            fn from(value: BN254G1AddFailed) -> Self {
3187                ()
3188            }
3189        }
3190        #[automatically_derived]
3191        #[doc(hidden)]
3192        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254G1AddFailed {
3193            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3194                Self
3195            }
3196        }
3197        #[automatically_derived]
3198        impl alloy_sol_types::SolError for BN254G1AddFailed {
3199            type Parameters<'a> = UnderlyingSolTuple<'a>;
3200            type Token<'a> = <Self::Parameters<
3201                'a,
3202            > as alloy_sol_types::SolType>::Token<'a>;
3203            const SIGNATURE: &'static str = "BN254G1AddFailed()";
3204            const SELECTOR: [u8; 4] = [96u8, 85u8, 219u8, 106u8];
3205            #[inline]
3206            fn new<'a>(
3207                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3208            ) -> Self {
3209                tuple.into()
3210            }
3211            #[inline]
3212            fn tokenize(&self) -> Self::Token<'_> {
3213                ()
3214            }
3215            #[inline]
3216            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3217                <Self::Parameters<
3218                    '_,
3219                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3220                    .map(Self::new)
3221            }
3222        }
3223    };
3224    #[derive(serde::Serialize, serde::Deserialize)]
3225    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3226    /**Custom error with signature `BN254PairingProdFailed()` and selector `0xc206334f`.
3227```solidity
3228error BN254PairingProdFailed();
3229```*/
3230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3231    #[derive(Clone)]
3232    pub struct BN254PairingProdFailed;
3233    #[allow(
3234        non_camel_case_types,
3235        non_snake_case,
3236        clippy::pub_underscore_fields,
3237        clippy::style
3238    )]
3239    const _: () = {
3240        use alloy::sol_types as alloy_sol_types;
3241        #[doc(hidden)]
3242        #[allow(dead_code)]
3243        type UnderlyingSolTuple<'a> = ();
3244        #[doc(hidden)]
3245        type UnderlyingRustTuple<'a> = ();
3246        #[cfg(test)]
3247        #[allow(dead_code, unreachable_patterns)]
3248        fn _type_assertion(
3249            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3250        ) {
3251            match _t {
3252                alloy_sol_types::private::AssertTypeEq::<
3253                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3254                >(_) => {}
3255            }
3256        }
3257        #[automatically_derived]
3258        #[doc(hidden)]
3259        impl ::core::convert::From<BN254PairingProdFailed> for UnderlyingRustTuple<'_> {
3260            fn from(value: BN254PairingProdFailed) -> Self {
3261                ()
3262            }
3263        }
3264        #[automatically_derived]
3265        #[doc(hidden)]
3266        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254PairingProdFailed {
3267            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3268                Self
3269            }
3270        }
3271        #[automatically_derived]
3272        impl alloy_sol_types::SolError for BN254PairingProdFailed {
3273            type Parameters<'a> = UnderlyingSolTuple<'a>;
3274            type Token<'a> = <Self::Parameters<
3275                'a,
3276            > as alloy_sol_types::SolType>::Token<'a>;
3277            const SIGNATURE: &'static str = "BN254PairingProdFailed()";
3278            const SELECTOR: [u8; 4] = [194u8, 6u8, 51u8, 79u8];
3279            #[inline]
3280            fn new<'a>(
3281                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3282            ) -> Self {
3283                tuple.into()
3284            }
3285            #[inline]
3286            fn tokenize(&self) -> Self::Token<'_> {
3287                ()
3288            }
3289            #[inline]
3290            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3291                <Self::Parameters<
3292                    '_,
3293                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3294                    .map(Self::new)
3295            }
3296        }
3297    };
3298    #[derive(serde::Serialize, serde::Deserialize)]
3299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3300    /**Custom error with signature `BN254ScalarInvZero()` and selector `0xd6dbbb0d`.
3301```solidity
3302error BN254ScalarInvZero();
3303```*/
3304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3305    #[derive(Clone)]
3306    pub struct BN254ScalarInvZero;
3307    #[allow(
3308        non_camel_case_types,
3309        non_snake_case,
3310        clippy::pub_underscore_fields,
3311        clippy::style
3312    )]
3313    const _: () = {
3314        use alloy::sol_types as alloy_sol_types;
3315        #[doc(hidden)]
3316        #[allow(dead_code)]
3317        type UnderlyingSolTuple<'a> = ();
3318        #[doc(hidden)]
3319        type UnderlyingRustTuple<'a> = ();
3320        #[cfg(test)]
3321        #[allow(dead_code, unreachable_patterns)]
3322        fn _type_assertion(
3323            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3324        ) {
3325            match _t {
3326                alloy_sol_types::private::AssertTypeEq::<
3327                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3328                >(_) => {}
3329            }
3330        }
3331        #[automatically_derived]
3332        #[doc(hidden)]
3333        impl ::core::convert::From<BN254ScalarInvZero> for UnderlyingRustTuple<'_> {
3334            fn from(value: BN254ScalarInvZero) -> Self {
3335                ()
3336            }
3337        }
3338        #[automatically_derived]
3339        #[doc(hidden)]
3340        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarInvZero {
3341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3342                Self
3343            }
3344        }
3345        #[automatically_derived]
3346        impl alloy_sol_types::SolError for BN254ScalarInvZero {
3347            type Parameters<'a> = UnderlyingSolTuple<'a>;
3348            type Token<'a> = <Self::Parameters<
3349                'a,
3350            > as alloy_sol_types::SolType>::Token<'a>;
3351            const SIGNATURE: &'static str = "BN254ScalarInvZero()";
3352            const SELECTOR: [u8; 4] = [214u8, 219u8, 187u8, 13u8];
3353            #[inline]
3354            fn new<'a>(
3355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3356            ) -> Self {
3357                tuple.into()
3358            }
3359            #[inline]
3360            fn tokenize(&self) -> Self::Token<'_> {
3361                ()
3362            }
3363            #[inline]
3364            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3365                <Self::Parameters<
3366                    '_,
3367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3368                    .map(Self::new)
3369            }
3370        }
3371    };
3372    #[derive(serde::Serialize, serde::Deserialize)]
3373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3374    /**Custom error with signature `BN254ScalarMulFailed()` and selector `0x19db8a68`.
3375```solidity
3376error BN254ScalarMulFailed();
3377```*/
3378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3379    #[derive(Clone)]
3380    pub struct BN254ScalarMulFailed;
3381    #[allow(
3382        non_camel_case_types,
3383        non_snake_case,
3384        clippy::pub_underscore_fields,
3385        clippy::style
3386    )]
3387    const _: () = {
3388        use alloy::sol_types as alloy_sol_types;
3389        #[doc(hidden)]
3390        #[allow(dead_code)]
3391        type UnderlyingSolTuple<'a> = ();
3392        #[doc(hidden)]
3393        type UnderlyingRustTuple<'a> = ();
3394        #[cfg(test)]
3395        #[allow(dead_code, unreachable_patterns)]
3396        fn _type_assertion(
3397            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3398        ) {
3399            match _t {
3400                alloy_sol_types::private::AssertTypeEq::<
3401                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3402                >(_) => {}
3403            }
3404        }
3405        #[automatically_derived]
3406        #[doc(hidden)]
3407        impl ::core::convert::From<BN254ScalarMulFailed> for UnderlyingRustTuple<'_> {
3408            fn from(value: BN254ScalarMulFailed) -> Self {
3409                ()
3410            }
3411        }
3412        #[automatically_derived]
3413        #[doc(hidden)]
3414        impl ::core::convert::From<UnderlyingRustTuple<'_>> for BN254ScalarMulFailed {
3415            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3416                Self
3417            }
3418        }
3419        #[automatically_derived]
3420        impl alloy_sol_types::SolError for BN254ScalarMulFailed {
3421            type Parameters<'a> = UnderlyingSolTuple<'a>;
3422            type Token<'a> = <Self::Parameters<
3423                'a,
3424            > as alloy_sol_types::SolType>::Token<'a>;
3425            const SIGNATURE: &'static str = "BN254ScalarMulFailed()";
3426            const SELECTOR: [u8; 4] = [25u8, 219u8, 138u8, 104u8];
3427            #[inline]
3428            fn new<'a>(
3429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3430            ) -> Self {
3431                tuple.into()
3432            }
3433            #[inline]
3434            fn tokenize(&self) -> Self::Token<'_> {
3435                ()
3436            }
3437            #[inline]
3438            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3439                <Self::Parameters<
3440                    '_,
3441                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3442                    .map(Self::new)
3443            }
3444        }
3445    };
3446    #[derive(serde::Serialize, serde::Deserialize)]
3447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3448    /**Custom error with signature `InvalidG1()` and selector `0x9e78d14c`.
3449```solidity
3450error InvalidG1();
3451```*/
3452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3453    #[derive(Clone)]
3454    pub struct InvalidG1;
3455    #[allow(
3456        non_camel_case_types,
3457        non_snake_case,
3458        clippy::pub_underscore_fields,
3459        clippy::style
3460    )]
3461    const _: () = {
3462        use alloy::sol_types as alloy_sol_types;
3463        #[doc(hidden)]
3464        #[allow(dead_code)]
3465        type UnderlyingSolTuple<'a> = ();
3466        #[doc(hidden)]
3467        type UnderlyingRustTuple<'a> = ();
3468        #[cfg(test)]
3469        #[allow(dead_code, unreachable_patterns)]
3470        fn _type_assertion(
3471            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3472        ) {
3473            match _t {
3474                alloy_sol_types::private::AssertTypeEq::<
3475                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3476                >(_) => {}
3477            }
3478        }
3479        #[automatically_derived]
3480        #[doc(hidden)]
3481        impl ::core::convert::From<InvalidG1> for UnderlyingRustTuple<'_> {
3482            fn from(value: InvalidG1) -> Self {
3483                ()
3484            }
3485        }
3486        #[automatically_derived]
3487        #[doc(hidden)]
3488        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidG1 {
3489            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3490                Self
3491            }
3492        }
3493        #[automatically_derived]
3494        impl alloy_sol_types::SolError for InvalidG1 {
3495            type Parameters<'a> = UnderlyingSolTuple<'a>;
3496            type Token<'a> = <Self::Parameters<
3497                'a,
3498            > as alloy_sol_types::SolType>::Token<'a>;
3499            const SIGNATURE: &'static str = "InvalidG1()";
3500            const SELECTOR: [u8; 4] = [158u8, 120u8, 209u8, 76u8];
3501            #[inline]
3502            fn new<'a>(
3503                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3504            ) -> Self {
3505                tuple.into()
3506            }
3507            #[inline]
3508            fn tokenize(&self) -> Self::Token<'_> {
3509                ()
3510            }
3511            #[inline]
3512            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3513                <Self::Parameters<
3514                    '_,
3515                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3516                    .map(Self::new)
3517            }
3518        }
3519    };
3520    #[derive(serde::Serialize, serde::Deserialize)]
3521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3522    /**Custom error with signature `InvalidPlonkArgs()` and selector `0xfd9a2d1b`.
3523```solidity
3524error InvalidPlonkArgs();
3525```*/
3526    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3527    #[derive(Clone)]
3528    pub struct InvalidPlonkArgs;
3529    #[allow(
3530        non_camel_case_types,
3531        non_snake_case,
3532        clippy::pub_underscore_fields,
3533        clippy::style
3534    )]
3535    const _: () = {
3536        use alloy::sol_types as alloy_sol_types;
3537        #[doc(hidden)]
3538        #[allow(dead_code)]
3539        type UnderlyingSolTuple<'a> = ();
3540        #[doc(hidden)]
3541        type UnderlyingRustTuple<'a> = ();
3542        #[cfg(test)]
3543        #[allow(dead_code, unreachable_patterns)]
3544        fn _type_assertion(
3545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3546        ) {
3547            match _t {
3548                alloy_sol_types::private::AssertTypeEq::<
3549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3550                >(_) => {}
3551            }
3552        }
3553        #[automatically_derived]
3554        #[doc(hidden)]
3555        impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
3556            fn from(value: InvalidPlonkArgs) -> Self {
3557                ()
3558            }
3559        }
3560        #[automatically_derived]
3561        #[doc(hidden)]
3562        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
3563            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3564                Self
3565            }
3566        }
3567        #[automatically_derived]
3568        impl alloy_sol_types::SolError for InvalidPlonkArgs {
3569            type Parameters<'a> = UnderlyingSolTuple<'a>;
3570            type Token<'a> = <Self::Parameters<
3571                'a,
3572            > as alloy_sol_types::SolType>::Token<'a>;
3573            const SIGNATURE: &'static str = "InvalidPlonkArgs()";
3574            const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
3575            #[inline]
3576            fn new<'a>(
3577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3578            ) -> Self {
3579                tuple.into()
3580            }
3581            #[inline]
3582            fn tokenize(&self) -> Self::Token<'_> {
3583                ()
3584            }
3585            #[inline]
3586            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3587                <Self::Parameters<
3588                    '_,
3589                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3590                    .map(Self::new)
3591            }
3592        }
3593    };
3594    #[derive(serde::Serialize, serde::Deserialize)]
3595    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3596    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
3597```solidity
3598error InvalidScalar();
3599```*/
3600    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3601    #[derive(Clone)]
3602    pub struct InvalidScalar;
3603    #[allow(
3604        non_camel_case_types,
3605        non_snake_case,
3606        clippy::pub_underscore_fields,
3607        clippy::style
3608    )]
3609    const _: () = {
3610        use alloy::sol_types as alloy_sol_types;
3611        #[doc(hidden)]
3612        #[allow(dead_code)]
3613        type UnderlyingSolTuple<'a> = ();
3614        #[doc(hidden)]
3615        type UnderlyingRustTuple<'a> = ();
3616        #[cfg(test)]
3617        #[allow(dead_code, unreachable_patterns)]
3618        fn _type_assertion(
3619            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3620        ) {
3621            match _t {
3622                alloy_sol_types::private::AssertTypeEq::<
3623                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3624                >(_) => {}
3625            }
3626        }
3627        #[automatically_derived]
3628        #[doc(hidden)]
3629        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
3630            fn from(value: InvalidScalar) -> Self {
3631                ()
3632            }
3633        }
3634        #[automatically_derived]
3635        #[doc(hidden)]
3636        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
3637            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3638                Self
3639            }
3640        }
3641        #[automatically_derived]
3642        impl alloy_sol_types::SolError for InvalidScalar {
3643            type Parameters<'a> = UnderlyingSolTuple<'a>;
3644            type Token<'a> = <Self::Parameters<
3645                'a,
3646            > as alloy_sol_types::SolType>::Token<'a>;
3647            const SIGNATURE: &'static str = "InvalidScalar()";
3648            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
3649            #[inline]
3650            fn new<'a>(
3651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3652            ) -> Self {
3653                tuple.into()
3654            }
3655            #[inline]
3656            fn tokenize(&self) -> Self::Token<'_> {
3657                ()
3658            }
3659            #[inline]
3660            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3661                <Self::Parameters<
3662                    '_,
3663                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3664                    .map(Self::new)
3665            }
3666        }
3667    };
3668    #[derive(serde::Serialize, serde::Deserialize)]
3669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3670    /**Custom error with signature `PowPrecompileFailed()` and selector `0x3274fa64`.
3671```solidity
3672error PowPrecompileFailed();
3673```*/
3674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3675    #[derive(Clone)]
3676    pub struct PowPrecompileFailed;
3677    #[allow(
3678        non_camel_case_types,
3679        non_snake_case,
3680        clippy::pub_underscore_fields,
3681        clippy::style
3682    )]
3683    const _: () = {
3684        use alloy::sol_types as alloy_sol_types;
3685        #[doc(hidden)]
3686        #[allow(dead_code)]
3687        type UnderlyingSolTuple<'a> = ();
3688        #[doc(hidden)]
3689        type UnderlyingRustTuple<'a> = ();
3690        #[cfg(test)]
3691        #[allow(dead_code, unreachable_patterns)]
3692        fn _type_assertion(
3693            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3694        ) {
3695            match _t {
3696                alloy_sol_types::private::AssertTypeEq::<
3697                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3698                >(_) => {}
3699            }
3700        }
3701        #[automatically_derived]
3702        #[doc(hidden)]
3703        impl ::core::convert::From<PowPrecompileFailed> for UnderlyingRustTuple<'_> {
3704            fn from(value: PowPrecompileFailed) -> Self {
3705                ()
3706            }
3707        }
3708        #[automatically_derived]
3709        #[doc(hidden)]
3710        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PowPrecompileFailed {
3711            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3712                Self
3713            }
3714        }
3715        #[automatically_derived]
3716        impl alloy_sol_types::SolError for PowPrecompileFailed {
3717            type Parameters<'a> = UnderlyingSolTuple<'a>;
3718            type Token<'a> = <Self::Parameters<
3719                'a,
3720            > as alloy_sol_types::SolType>::Token<'a>;
3721            const SIGNATURE: &'static str = "PowPrecompileFailed()";
3722            const SELECTOR: [u8; 4] = [50u8, 116u8, 250u8, 100u8];
3723            #[inline]
3724            fn new<'a>(
3725                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3726            ) -> Self {
3727                tuple.into()
3728            }
3729            #[inline]
3730            fn tokenize(&self) -> Self::Token<'_> {
3731                ()
3732            }
3733            #[inline]
3734            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3735                <Self::Parameters<
3736                    '_,
3737                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3738                    .map(Self::new)
3739            }
3740        }
3741    };
3742    #[derive(serde::Serialize, serde::Deserialize)]
3743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3744    /**Custom error with signature `UnsupportedDegree()` and selector `0xe2ef09e5`.
3745```solidity
3746error UnsupportedDegree();
3747```*/
3748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3749    #[derive(Clone)]
3750    pub struct UnsupportedDegree;
3751    #[allow(
3752        non_camel_case_types,
3753        non_snake_case,
3754        clippy::pub_underscore_fields,
3755        clippy::style
3756    )]
3757    const _: () = {
3758        use alloy::sol_types as alloy_sol_types;
3759        #[doc(hidden)]
3760        #[allow(dead_code)]
3761        type UnderlyingSolTuple<'a> = ();
3762        #[doc(hidden)]
3763        type UnderlyingRustTuple<'a> = ();
3764        #[cfg(test)]
3765        #[allow(dead_code, unreachable_patterns)]
3766        fn _type_assertion(
3767            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3768        ) {
3769            match _t {
3770                alloy_sol_types::private::AssertTypeEq::<
3771                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3772                >(_) => {}
3773            }
3774        }
3775        #[automatically_derived]
3776        #[doc(hidden)]
3777        impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
3778            fn from(value: UnsupportedDegree) -> Self {
3779                ()
3780            }
3781        }
3782        #[automatically_derived]
3783        #[doc(hidden)]
3784        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
3785            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3786                Self
3787            }
3788        }
3789        #[automatically_derived]
3790        impl alloy_sol_types::SolError for UnsupportedDegree {
3791            type Parameters<'a> = UnderlyingSolTuple<'a>;
3792            type Token<'a> = <Self::Parameters<
3793                'a,
3794            > as alloy_sol_types::SolType>::Token<'a>;
3795            const SIGNATURE: &'static str = "UnsupportedDegree()";
3796            const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
3797            #[inline]
3798            fn new<'a>(
3799                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3800            ) -> Self {
3801                tuple.into()
3802            }
3803            #[inline]
3804            fn tokenize(&self) -> Self::Token<'_> {
3805                ()
3806            }
3807            #[inline]
3808            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3809                <Self::Parameters<
3810                    '_,
3811                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3812                    .map(Self::new)
3813            }
3814        }
3815    };
3816    #[derive(serde::Serialize, serde::Deserialize)]
3817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3818    /**Custom error with signature `WrongPlonkVK()` and selector `0x41f53b12`.
3819```solidity
3820error WrongPlonkVK();
3821```*/
3822    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3823    #[derive(Clone)]
3824    pub struct WrongPlonkVK;
3825    #[allow(
3826        non_camel_case_types,
3827        non_snake_case,
3828        clippy::pub_underscore_fields,
3829        clippy::style
3830    )]
3831    const _: () = {
3832        use alloy::sol_types as alloy_sol_types;
3833        #[doc(hidden)]
3834        #[allow(dead_code)]
3835        type UnderlyingSolTuple<'a> = ();
3836        #[doc(hidden)]
3837        type UnderlyingRustTuple<'a> = ();
3838        #[cfg(test)]
3839        #[allow(dead_code, unreachable_patterns)]
3840        fn _type_assertion(
3841            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3842        ) {
3843            match _t {
3844                alloy_sol_types::private::AssertTypeEq::<
3845                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3846                >(_) => {}
3847            }
3848        }
3849        #[automatically_derived]
3850        #[doc(hidden)]
3851        impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
3852            fn from(value: WrongPlonkVK) -> Self {
3853                ()
3854            }
3855        }
3856        #[automatically_derived]
3857        #[doc(hidden)]
3858        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
3859            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3860                Self
3861            }
3862        }
3863        #[automatically_derived]
3864        impl alloy_sol_types::SolError for WrongPlonkVK {
3865            type Parameters<'a> = UnderlyingSolTuple<'a>;
3866            type Token<'a> = <Self::Parameters<
3867                'a,
3868            > as alloy_sol_types::SolType>::Token<'a>;
3869            const SIGNATURE: &'static str = "WrongPlonkVK()";
3870            const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
3871            #[inline]
3872            fn new<'a>(
3873                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3874            ) -> Self {
3875                tuple.into()
3876            }
3877            #[inline]
3878            fn tokenize(&self) -> Self::Token<'_> {
3879                ()
3880            }
3881            #[inline]
3882            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
3883                <Self::Parameters<
3884                    '_,
3885                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3886                    .map(Self::new)
3887            }
3888        }
3889    };
3890    #[derive(serde::Serialize, serde::Deserialize)]
3891    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3892    /**Function with signature `BETA_H_X0()` and selector `0x834c452a`.
3893```solidity
3894function BETA_H_X0() external view returns (uint256);
3895```*/
3896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3897    #[derive(Clone)]
3898    pub struct BETA_H_X0Call;
3899    #[derive(serde::Serialize, serde::Deserialize)]
3900    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3901    ///Container type for the return parameters of the [`BETA_H_X0()`](BETA_H_X0Call) function.
3902    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3903    #[derive(Clone)]
3904    pub struct BETA_H_X0Return {
3905        #[allow(missing_docs)]
3906        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3907    }
3908    #[allow(
3909        non_camel_case_types,
3910        non_snake_case,
3911        clippy::pub_underscore_fields,
3912        clippy::style
3913    )]
3914    const _: () = {
3915        use alloy::sol_types as alloy_sol_types;
3916        {
3917            #[doc(hidden)]
3918            #[allow(dead_code)]
3919            type UnderlyingSolTuple<'a> = ();
3920            #[doc(hidden)]
3921            type UnderlyingRustTuple<'a> = ();
3922            #[cfg(test)]
3923            #[allow(dead_code, unreachable_patterns)]
3924            fn _type_assertion(
3925                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3926            ) {
3927                match _t {
3928                    alloy_sol_types::private::AssertTypeEq::<
3929                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3930                    >(_) => {}
3931                }
3932            }
3933            #[automatically_derived]
3934            #[doc(hidden)]
3935            impl ::core::convert::From<BETA_H_X0Call> for UnderlyingRustTuple<'_> {
3936                fn from(value: BETA_H_X0Call) -> Self {
3937                    ()
3938                }
3939            }
3940            #[automatically_derived]
3941            #[doc(hidden)]
3942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Call {
3943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3944                    Self
3945                }
3946            }
3947        }
3948        {
3949            #[doc(hidden)]
3950            #[allow(dead_code)]
3951            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3952            #[doc(hidden)]
3953            type UnderlyingRustTuple<'a> = (
3954                alloy::sol_types::private::primitives::aliases::U256,
3955            );
3956            #[cfg(test)]
3957            #[allow(dead_code, unreachable_patterns)]
3958            fn _type_assertion(
3959                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3960            ) {
3961                match _t {
3962                    alloy_sol_types::private::AssertTypeEq::<
3963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3964                    >(_) => {}
3965                }
3966            }
3967            #[automatically_derived]
3968            #[doc(hidden)]
3969            impl ::core::convert::From<BETA_H_X0Return> for UnderlyingRustTuple<'_> {
3970                fn from(value: BETA_H_X0Return) -> Self {
3971                    (value._0,)
3972                }
3973            }
3974            #[automatically_derived]
3975            #[doc(hidden)]
3976            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X0Return {
3977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3978                    Self { _0: tuple.0 }
3979                }
3980            }
3981        }
3982        #[automatically_derived]
3983        impl alloy_sol_types::SolCall for BETA_H_X0Call {
3984            type Parameters<'a> = ();
3985            type Token<'a> = <Self::Parameters<
3986                'a,
3987            > as alloy_sol_types::SolType>::Token<'a>;
3988            type Return = alloy::sol_types::private::primitives::aliases::U256;
3989            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3990            type ReturnToken<'a> = <Self::ReturnTuple<
3991                'a,
3992            > as alloy_sol_types::SolType>::Token<'a>;
3993            const SIGNATURE: &'static str = "BETA_H_X0()";
3994            const SELECTOR: [u8; 4] = [131u8, 76u8, 69u8, 42u8];
3995            #[inline]
3996            fn new<'a>(
3997                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3998            ) -> Self {
3999                tuple.into()
4000            }
4001            #[inline]
4002            fn tokenize(&self) -> Self::Token<'_> {
4003                ()
4004            }
4005            #[inline]
4006            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4007                (
4008                    <alloy::sol_types::sol_data::Uint<
4009                        256,
4010                    > as alloy_sol_types::SolType>::tokenize(ret),
4011                )
4012            }
4013            #[inline]
4014            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4015                <Self::ReturnTuple<
4016                    '_,
4017                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4018                    .map(|r| {
4019                        let r: BETA_H_X0Return = r.into();
4020                        r._0
4021                    })
4022            }
4023            #[inline]
4024            fn abi_decode_returns_validate(
4025                data: &[u8],
4026            ) -> alloy_sol_types::Result<Self::Return> {
4027                <Self::ReturnTuple<
4028                    '_,
4029                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4030                    .map(|r| {
4031                        let r: BETA_H_X0Return = r.into();
4032                        r._0
4033                    })
4034            }
4035        }
4036    };
4037    #[derive(serde::Serialize, serde::Deserialize)]
4038    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4039    /**Function with signature `BETA_H_X1()` and selector `0xaf196ba2`.
4040```solidity
4041function BETA_H_X1() external view returns (uint256);
4042```*/
4043    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4044    #[derive(Clone)]
4045    pub struct BETA_H_X1Call;
4046    #[derive(serde::Serialize, serde::Deserialize)]
4047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4048    ///Container type for the return parameters of the [`BETA_H_X1()`](BETA_H_X1Call) function.
4049    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4050    #[derive(Clone)]
4051    pub struct BETA_H_X1Return {
4052        #[allow(missing_docs)]
4053        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4054    }
4055    #[allow(
4056        non_camel_case_types,
4057        non_snake_case,
4058        clippy::pub_underscore_fields,
4059        clippy::style
4060    )]
4061    const _: () = {
4062        use alloy::sol_types as alloy_sol_types;
4063        {
4064            #[doc(hidden)]
4065            #[allow(dead_code)]
4066            type UnderlyingSolTuple<'a> = ();
4067            #[doc(hidden)]
4068            type UnderlyingRustTuple<'a> = ();
4069            #[cfg(test)]
4070            #[allow(dead_code, unreachable_patterns)]
4071            fn _type_assertion(
4072                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4073            ) {
4074                match _t {
4075                    alloy_sol_types::private::AssertTypeEq::<
4076                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4077                    >(_) => {}
4078                }
4079            }
4080            #[automatically_derived]
4081            #[doc(hidden)]
4082            impl ::core::convert::From<BETA_H_X1Call> for UnderlyingRustTuple<'_> {
4083                fn from(value: BETA_H_X1Call) -> Self {
4084                    ()
4085                }
4086            }
4087            #[automatically_derived]
4088            #[doc(hidden)]
4089            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Call {
4090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4091                    Self
4092                }
4093            }
4094        }
4095        {
4096            #[doc(hidden)]
4097            #[allow(dead_code)]
4098            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4099            #[doc(hidden)]
4100            type UnderlyingRustTuple<'a> = (
4101                alloy::sol_types::private::primitives::aliases::U256,
4102            );
4103            #[cfg(test)]
4104            #[allow(dead_code, unreachable_patterns)]
4105            fn _type_assertion(
4106                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4107            ) {
4108                match _t {
4109                    alloy_sol_types::private::AssertTypeEq::<
4110                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4111                    >(_) => {}
4112                }
4113            }
4114            #[automatically_derived]
4115            #[doc(hidden)]
4116            impl ::core::convert::From<BETA_H_X1Return> for UnderlyingRustTuple<'_> {
4117                fn from(value: BETA_H_X1Return) -> Self {
4118                    (value._0,)
4119                }
4120            }
4121            #[automatically_derived]
4122            #[doc(hidden)]
4123            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_X1Return {
4124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4125                    Self { _0: tuple.0 }
4126                }
4127            }
4128        }
4129        #[automatically_derived]
4130        impl alloy_sol_types::SolCall for BETA_H_X1Call {
4131            type Parameters<'a> = ();
4132            type Token<'a> = <Self::Parameters<
4133                'a,
4134            > as alloy_sol_types::SolType>::Token<'a>;
4135            type Return = alloy::sol_types::private::primitives::aliases::U256;
4136            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4137            type ReturnToken<'a> = <Self::ReturnTuple<
4138                'a,
4139            > as alloy_sol_types::SolType>::Token<'a>;
4140            const SIGNATURE: &'static str = "BETA_H_X1()";
4141            const SELECTOR: [u8; 4] = [175u8, 25u8, 107u8, 162u8];
4142            #[inline]
4143            fn new<'a>(
4144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4145            ) -> Self {
4146                tuple.into()
4147            }
4148            #[inline]
4149            fn tokenize(&self) -> Self::Token<'_> {
4150                ()
4151            }
4152            #[inline]
4153            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4154                (
4155                    <alloy::sol_types::sol_data::Uint<
4156                        256,
4157                    > as alloy_sol_types::SolType>::tokenize(ret),
4158                )
4159            }
4160            #[inline]
4161            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4162                <Self::ReturnTuple<
4163                    '_,
4164                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4165                    .map(|r| {
4166                        let r: BETA_H_X1Return = r.into();
4167                        r._0
4168                    })
4169            }
4170            #[inline]
4171            fn abi_decode_returns_validate(
4172                data: &[u8],
4173            ) -> alloy_sol_types::Result<Self::Return> {
4174                <Self::ReturnTuple<
4175                    '_,
4176                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4177                    .map(|r| {
4178                        let r: BETA_H_X1Return = r.into();
4179                        r._0
4180                    })
4181            }
4182        }
4183    };
4184    #[derive(serde::Serialize, serde::Deserialize)]
4185    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4186    /**Function with signature `BETA_H_Y0()` and selector `0xf5144326`.
4187```solidity
4188function BETA_H_Y0() external view returns (uint256);
4189```*/
4190    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4191    #[derive(Clone)]
4192    pub struct BETA_H_Y0Call;
4193    #[derive(serde::Serialize, serde::Deserialize)]
4194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4195    ///Container type for the return parameters of the [`BETA_H_Y0()`](BETA_H_Y0Call) function.
4196    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4197    #[derive(Clone)]
4198    pub struct BETA_H_Y0Return {
4199        #[allow(missing_docs)]
4200        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4201    }
4202    #[allow(
4203        non_camel_case_types,
4204        non_snake_case,
4205        clippy::pub_underscore_fields,
4206        clippy::style
4207    )]
4208    const _: () = {
4209        use alloy::sol_types as alloy_sol_types;
4210        {
4211            #[doc(hidden)]
4212            #[allow(dead_code)]
4213            type UnderlyingSolTuple<'a> = ();
4214            #[doc(hidden)]
4215            type UnderlyingRustTuple<'a> = ();
4216            #[cfg(test)]
4217            #[allow(dead_code, unreachable_patterns)]
4218            fn _type_assertion(
4219                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4220            ) {
4221                match _t {
4222                    alloy_sol_types::private::AssertTypeEq::<
4223                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4224                    >(_) => {}
4225                }
4226            }
4227            #[automatically_derived]
4228            #[doc(hidden)]
4229            impl ::core::convert::From<BETA_H_Y0Call> for UnderlyingRustTuple<'_> {
4230                fn from(value: BETA_H_Y0Call) -> Self {
4231                    ()
4232                }
4233            }
4234            #[automatically_derived]
4235            #[doc(hidden)]
4236            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Call {
4237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4238                    Self
4239                }
4240            }
4241        }
4242        {
4243            #[doc(hidden)]
4244            #[allow(dead_code)]
4245            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4246            #[doc(hidden)]
4247            type UnderlyingRustTuple<'a> = (
4248                alloy::sol_types::private::primitives::aliases::U256,
4249            );
4250            #[cfg(test)]
4251            #[allow(dead_code, unreachable_patterns)]
4252            fn _type_assertion(
4253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4254            ) {
4255                match _t {
4256                    alloy_sol_types::private::AssertTypeEq::<
4257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4258                    >(_) => {}
4259                }
4260            }
4261            #[automatically_derived]
4262            #[doc(hidden)]
4263            impl ::core::convert::From<BETA_H_Y0Return> for UnderlyingRustTuple<'_> {
4264                fn from(value: BETA_H_Y0Return) -> Self {
4265                    (value._0,)
4266                }
4267            }
4268            #[automatically_derived]
4269            #[doc(hidden)]
4270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y0Return {
4271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4272                    Self { _0: tuple.0 }
4273                }
4274            }
4275        }
4276        #[automatically_derived]
4277        impl alloy_sol_types::SolCall for BETA_H_Y0Call {
4278            type Parameters<'a> = ();
4279            type Token<'a> = <Self::Parameters<
4280                'a,
4281            > as alloy_sol_types::SolType>::Token<'a>;
4282            type Return = alloy::sol_types::private::primitives::aliases::U256;
4283            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4284            type ReturnToken<'a> = <Self::ReturnTuple<
4285                'a,
4286            > as alloy_sol_types::SolType>::Token<'a>;
4287            const SIGNATURE: &'static str = "BETA_H_Y0()";
4288            const SELECTOR: [u8; 4] = [245u8, 20u8, 67u8, 38u8];
4289            #[inline]
4290            fn new<'a>(
4291                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4292            ) -> Self {
4293                tuple.into()
4294            }
4295            #[inline]
4296            fn tokenize(&self) -> Self::Token<'_> {
4297                ()
4298            }
4299            #[inline]
4300            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4301                (
4302                    <alloy::sol_types::sol_data::Uint<
4303                        256,
4304                    > as alloy_sol_types::SolType>::tokenize(ret),
4305                )
4306            }
4307            #[inline]
4308            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4309                <Self::ReturnTuple<
4310                    '_,
4311                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4312                    .map(|r| {
4313                        let r: BETA_H_Y0Return = r.into();
4314                        r._0
4315                    })
4316            }
4317            #[inline]
4318            fn abi_decode_returns_validate(
4319                data: &[u8],
4320            ) -> alloy_sol_types::Result<Self::Return> {
4321                <Self::ReturnTuple<
4322                    '_,
4323                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4324                    .map(|r| {
4325                        let r: BETA_H_Y0Return = r.into();
4326                        r._0
4327                    })
4328            }
4329        }
4330    };
4331    #[derive(serde::Serialize, serde::Deserialize)]
4332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4333    /**Function with signature `BETA_H_Y1()` and selector `0x4b4734e3`.
4334```solidity
4335function BETA_H_Y1() external view returns (uint256);
4336```*/
4337    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4338    #[derive(Clone)]
4339    pub struct BETA_H_Y1Call;
4340    #[derive(serde::Serialize, serde::Deserialize)]
4341    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4342    ///Container type for the return parameters of the [`BETA_H_Y1()`](BETA_H_Y1Call) function.
4343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4344    #[derive(Clone)]
4345    pub struct BETA_H_Y1Return {
4346        #[allow(missing_docs)]
4347        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4348    }
4349    #[allow(
4350        non_camel_case_types,
4351        non_snake_case,
4352        clippy::pub_underscore_fields,
4353        clippy::style
4354    )]
4355    const _: () = {
4356        use alloy::sol_types as alloy_sol_types;
4357        {
4358            #[doc(hidden)]
4359            #[allow(dead_code)]
4360            type UnderlyingSolTuple<'a> = ();
4361            #[doc(hidden)]
4362            type UnderlyingRustTuple<'a> = ();
4363            #[cfg(test)]
4364            #[allow(dead_code, unreachable_patterns)]
4365            fn _type_assertion(
4366                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4367            ) {
4368                match _t {
4369                    alloy_sol_types::private::AssertTypeEq::<
4370                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4371                    >(_) => {}
4372                }
4373            }
4374            #[automatically_derived]
4375            #[doc(hidden)]
4376            impl ::core::convert::From<BETA_H_Y1Call> for UnderlyingRustTuple<'_> {
4377                fn from(value: BETA_H_Y1Call) -> Self {
4378                    ()
4379                }
4380            }
4381            #[automatically_derived]
4382            #[doc(hidden)]
4383            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Call {
4384                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4385                    Self
4386                }
4387            }
4388        }
4389        {
4390            #[doc(hidden)]
4391            #[allow(dead_code)]
4392            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4393            #[doc(hidden)]
4394            type UnderlyingRustTuple<'a> = (
4395                alloy::sol_types::private::primitives::aliases::U256,
4396            );
4397            #[cfg(test)]
4398            #[allow(dead_code, unreachable_patterns)]
4399            fn _type_assertion(
4400                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4401            ) {
4402                match _t {
4403                    alloy_sol_types::private::AssertTypeEq::<
4404                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4405                    >(_) => {}
4406                }
4407            }
4408            #[automatically_derived]
4409            #[doc(hidden)]
4410            impl ::core::convert::From<BETA_H_Y1Return> for UnderlyingRustTuple<'_> {
4411                fn from(value: BETA_H_Y1Return) -> Self {
4412                    (value._0,)
4413                }
4414            }
4415            #[automatically_derived]
4416            #[doc(hidden)]
4417            impl ::core::convert::From<UnderlyingRustTuple<'_>> for BETA_H_Y1Return {
4418                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4419                    Self { _0: tuple.0 }
4420                }
4421            }
4422        }
4423        #[automatically_derived]
4424        impl alloy_sol_types::SolCall for BETA_H_Y1Call {
4425            type Parameters<'a> = ();
4426            type Token<'a> = <Self::Parameters<
4427                'a,
4428            > as alloy_sol_types::SolType>::Token<'a>;
4429            type Return = alloy::sol_types::private::primitives::aliases::U256;
4430            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4431            type ReturnToken<'a> = <Self::ReturnTuple<
4432                'a,
4433            > as alloy_sol_types::SolType>::Token<'a>;
4434            const SIGNATURE: &'static str = "BETA_H_Y1()";
4435            const SELECTOR: [u8; 4] = [75u8, 71u8, 52u8, 227u8];
4436            #[inline]
4437            fn new<'a>(
4438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4439            ) -> Self {
4440                tuple.into()
4441            }
4442            #[inline]
4443            fn tokenize(&self) -> Self::Token<'_> {
4444                ()
4445            }
4446            #[inline]
4447            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4448                (
4449                    <alloy::sol_types::sol_data::Uint<
4450                        256,
4451                    > as alloy_sol_types::SolType>::tokenize(ret),
4452                )
4453            }
4454            #[inline]
4455            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4456                <Self::ReturnTuple<
4457                    '_,
4458                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4459                    .map(|r| {
4460                        let r: BETA_H_Y1Return = r.into();
4461                        r._0
4462                    })
4463            }
4464            #[inline]
4465            fn abi_decode_returns_validate(
4466                data: &[u8],
4467            ) -> alloy_sol_types::Result<Self::Return> {
4468                <Self::ReturnTuple<
4469                    '_,
4470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4471                    .map(|r| {
4472                        let r: BETA_H_Y1Return = r.into();
4473                        r._0
4474                    })
4475            }
4476        }
4477    };
4478    #[derive(serde::Serialize, serde::Deserialize)]
4479    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4480    /**Function with signature `COSET_K1()` and selector `0xe3512d56`.
4481```solidity
4482function COSET_K1() external view returns (uint256);
4483```*/
4484    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4485    #[derive(Clone)]
4486    pub struct COSET_K1Call;
4487    #[derive(serde::Serialize, serde::Deserialize)]
4488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4489    ///Container type for the return parameters of the [`COSET_K1()`](COSET_K1Call) function.
4490    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4491    #[derive(Clone)]
4492    pub struct COSET_K1Return {
4493        #[allow(missing_docs)]
4494        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4495    }
4496    #[allow(
4497        non_camel_case_types,
4498        non_snake_case,
4499        clippy::pub_underscore_fields,
4500        clippy::style
4501    )]
4502    const _: () = {
4503        use alloy::sol_types as alloy_sol_types;
4504        {
4505            #[doc(hidden)]
4506            #[allow(dead_code)]
4507            type UnderlyingSolTuple<'a> = ();
4508            #[doc(hidden)]
4509            type UnderlyingRustTuple<'a> = ();
4510            #[cfg(test)]
4511            #[allow(dead_code, unreachable_patterns)]
4512            fn _type_assertion(
4513                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4514            ) {
4515                match _t {
4516                    alloy_sol_types::private::AssertTypeEq::<
4517                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4518                    >(_) => {}
4519                }
4520            }
4521            #[automatically_derived]
4522            #[doc(hidden)]
4523            impl ::core::convert::From<COSET_K1Call> for UnderlyingRustTuple<'_> {
4524                fn from(value: COSET_K1Call) -> Self {
4525                    ()
4526                }
4527            }
4528            #[automatically_derived]
4529            #[doc(hidden)]
4530            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Call {
4531                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4532                    Self
4533                }
4534            }
4535        }
4536        {
4537            #[doc(hidden)]
4538            #[allow(dead_code)]
4539            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4540            #[doc(hidden)]
4541            type UnderlyingRustTuple<'a> = (
4542                alloy::sol_types::private::primitives::aliases::U256,
4543            );
4544            #[cfg(test)]
4545            #[allow(dead_code, unreachable_patterns)]
4546            fn _type_assertion(
4547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4548            ) {
4549                match _t {
4550                    alloy_sol_types::private::AssertTypeEq::<
4551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4552                    >(_) => {}
4553                }
4554            }
4555            #[automatically_derived]
4556            #[doc(hidden)]
4557            impl ::core::convert::From<COSET_K1Return> for UnderlyingRustTuple<'_> {
4558                fn from(value: COSET_K1Return) -> Self {
4559                    (value._0,)
4560                }
4561            }
4562            #[automatically_derived]
4563            #[doc(hidden)]
4564            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K1Return {
4565                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4566                    Self { _0: tuple.0 }
4567                }
4568            }
4569        }
4570        #[automatically_derived]
4571        impl alloy_sol_types::SolCall for COSET_K1Call {
4572            type Parameters<'a> = ();
4573            type Token<'a> = <Self::Parameters<
4574                'a,
4575            > as alloy_sol_types::SolType>::Token<'a>;
4576            type Return = alloy::sol_types::private::primitives::aliases::U256;
4577            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4578            type ReturnToken<'a> = <Self::ReturnTuple<
4579                'a,
4580            > as alloy_sol_types::SolType>::Token<'a>;
4581            const SIGNATURE: &'static str = "COSET_K1()";
4582            const SELECTOR: [u8; 4] = [227u8, 81u8, 45u8, 86u8];
4583            #[inline]
4584            fn new<'a>(
4585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4586            ) -> Self {
4587                tuple.into()
4588            }
4589            #[inline]
4590            fn tokenize(&self) -> Self::Token<'_> {
4591                ()
4592            }
4593            #[inline]
4594            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4595                (
4596                    <alloy::sol_types::sol_data::Uint<
4597                        256,
4598                    > as alloy_sol_types::SolType>::tokenize(ret),
4599                )
4600            }
4601            #[inline]
4602            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4603                <Self::ReturnTuple<
4604                    '_,
4605                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4606                    .map(|r| {
4607                        let r: COSET_K1Return = r.into();
4608                        r._0
4609                    })
4610            }
4611            #[inline]
4612            fn abi_decode_returns_validate(
4613                data: &[u8],
4614            ) -> alloy_sol_types::Result<Self::Return> {
4615                <Self::ReturnTuple<
4616                    '_,
4617                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4618                    .map(|r| {
4619                        let r: COSET_K1Return = r.into();
4620                        r._0
4621                    })
4622            }
4623        }
4624    };
4625    #[derive(serde::Serialize, serde::Deserialize)]
4626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4627    /**Function with signature `COSET_K2()` and selector `0x0c551f3f`.
4628```solidity
4629function COSET_K2() external view returns (uint256);
4630```*/
4631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4632    #[derive(Clone)]
4633    pub struct COSET_K2Call;
4634    #[derive(serde::Serialize, serde::Deserialize)]
4635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4636    ///Container type for the return parameters of the [`COSET_K2()`](COSET_K2Call) function.
4637    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4638    #[derive(Clone)]
4639    pub struct COSET_K2Return {
4640        #[allow(missing_docs)]
4641        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4642    }
4643    #[allow(
4644        non_camel_case_types,
4645        non_snake_case,
4646        clippy::pub_underscore_fields,
4647        clippy::style
4648    )]
4649    const _: () = {
4650        use alloy::sol_types as alloy_sol_types;
4651        {
4652            #[doc(hidden)]
4653            #[allow(dead_code)]
4654            type UnderlyingSolTuple<'a> = ();
4655            #[doc(hidden)]
4656            type UnderlyingRustTuple<'a> = ();
4657            #[cfg(test)]
4658            #[allow(dead_code, unreachable_patterns)]
4659            fn _type_assertion(
4660                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4661            ) {
4662                match _t {
4663                    alloy_sol_types::private::AssertTypeEq::<
4664                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4665                    >(_) => {}
4666                }
4667            }
4668            #[automatically_derived]
4669            #[doc(hidden)]
4670            impl ::core::convert::From<COSET_K2Call> for UnderlyingRustTuple<'_> {
4671                fn from(value: COSET_K2Call) -> Self {
4672                    ()
4673                }
4674            }
4675            #[automatically_derived]
4676            #[doc(hidden)]
4677            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Call {
4678                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4679                    Self
4680                }
4681            }
4682        }
4683        {
4684            #[doc(hidden)]
4685            #[allow(dead_code)]
4686            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4687            #[doc(hidden)]
4688            type UnderlyingRustTuple<'a> = (
4689                alloy::sol_types::private::primitives::aliases::U256,
4690            );
4691            #[cfg(test)]
4692            #[allow(dead_code, unreachable_patterns)]
4693            fn _type_assertion(
4694                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4695            ) {
4696                match _t {
4697                    alloy_sol_types::private::AssertTypeEq::<
4698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4699                    >(_) => {}
4700                }
4701            }
4702            #[automatically_derived]
4703            #[doc(hidden)]
4704            impl ::core::convert::From<COSET_K2Return> for UnderlyingRustTuple<'_> {
4705                fn from(value: COSET_K2Return) -> Self {
4706                    (value._0,)
4707                }
4708            }
4709            #[automatically_derived]
4710            #[doc(hidden)]
4711            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K2Return {
4712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4713                    Self { _0: tuple.0 }
4714                }
4715            }
4716        }
4717        #[automatically_derived]
4718        impl alloy_sol_types::SolCall for COSET_K2Call {
4719            type Parameters<'a> = ();
4720            type Token<'a> = <Self::Parameters<
4721                'a,
4722            > as alloy_sol_types::SolType>::Token<'a>;
4723            type Return = alloy::sol_types::private::primitives::aliases::U256;
4724            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4725            type ReturnToken<'a> = <Self::ReturnTuple<
4726                'a,
4727            > as alloy_sol_types::SolType>::Token<'a>;
4728            const SIGNATURE: &'static str = "COSET_K2()";
4729            const SELECTOR: [u8; 4] = [12u8, 85u8, 31u8, 63u8];
4730            #[inline]
4731            fn new<'a>(
4732                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4733            ) -> Self {
4734                tuple.into()
4735            }
4736            #[inline]
4737            fn tokenize(&self) -> Self::Token<'_> {
4738                ()
4739            }
4740            #[inline]
4741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4742                (
4743                    <alloy::sol_types::sol_data::Uint<
4744                        256,
4745                    > as alloy_sol_types::SolType>::tokenize(ret),
4746                )
4747            }
4748            #[inline]
4749            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4750                <Self::ReturnTuple<
4751                    '_,
4752                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4753                    .map(|r| {
4754                        let r: COSET_K2Return = r.into();
4755                        r._0
4756                    })
4757            }
4758            #[inline]
4759            fn abi_decode_returns_validate(
4760                data: &[u8],
4761            ) -> alloy_sol_types::Result<Self::Return> {
4762                <Self::ReturnTuple<
4763                    '_,
4764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4765                    .map(|r| {
4766                        let r: COSET_K2Return = r.into();
4767                        r._0
4768                    })
4769            }
4770        }
4771    };
4772    #[derive(serde::Serialize, serde::Deserialize)]
4773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4774    /**Function with signature `COSET_K3()` and selector `0x5a14c0fe`.
4775```solidity
4776function COSET_K3() external view returns (uint256);
4777```*/
4778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4779    #[derive(Clone)]
4780    pub struct COSET_K3Call;
4781    #[derive(serde::Serialize, serde::Deserialize)]
4782    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4783    ///Container type for the return parameters of the [`COSET_K3()`](COSET_K3Call) function.
4784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4785    #[derive(Clone)]
4786    pub struct COSET_K3Return {
4787        #[allow(missing_docs)]
4788        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4789    }
4790    #[allow(
4791        non_camel_case_types,
4792        non_snake_case,
4793        clippy::pub_underscore_fields,
4794        clippy::style
4795    )]
4796    const _: () = {
4797        use alloy::sol_types as alloy_sol_types;
4798        {
4799            #[doc(hidden)]
4800            #[allow(dead_code)]
4801            type UnderlyingSolTuple<'a> = ();
4802            #[doc(hidden)]
4803            type UnderlyingRustTuple<'a> = ();
4804            #[cfg(test)]
4805            #[allow(dead_code, unreachable_patterns)]
4806            fn _type_assertion(
4807                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4808            ) {
4809                match _t {
4810                    alloy_sol_types::private::AssertTypeEq::<
4811                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4812                    >(_) => {}
4813                }
4814            }
4815            #[automatically_derived]
4816            #[doc(hidden)]
4817            impl ::core::convert::From<COSET_K3Call> for UnderlyingRustTuple<'_> {
4818                fn from(value: COSET_K3Call) -> Self {
4819                    ()
4820                }
4821            }
4822            #[automatically_derived]
4823            #[doc(hidden)]
4824            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Call {
4825                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4826                    Self
4827                }
4828            }
4829        }
4830        {
4831            #[doc(hidden)]
4832            #[allow(dead_code)]
4833            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4834            #[doc(hidden)]
4835            type UnderlyingRustTuple<'a> = (
4836                alloy::sol_types::private::primitives::aliases::U256,
4837            );
4838            #[cfg(test)]
4839            #[allow(dead_code, unreachable_patterns)]
4840            fn _type_assertion(
4841                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4842            ) {
4843                match _t {
4844                    alloy_sol_types::private::AssertTypeEq::<
4845                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4846                    >(_) => {}
4847                }
4848            }
4849            #[automatically_derived]
4850            #[doc(hidden)]
4851            impl ::core::convert::From<COSET_K3Return> for UnderlyingRustTuple<'_> {
4852                fn from(value: COSET_K3Return) -> Self {
4853                    (value._0,)
4854                }
4855            }
4856            #[automatically_derived]
4857            #[doc(hidden)]
4858            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K3Return {
4859                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4860                    Self { _0: tuple.0 }
4861                }
4862            }
4863        }
4864        #[automatically_derived]
4865        impl alloy_sol_types::SolCall for COSET_K3Call {
4866            type Parameters<'a> = ();
4867            type Token<'a> = <Self::Parameters<
4868                'a,
4869            > as alloy_sol_types::SolType>::Token<'a>;
4870            type Return = alloy::sol_types::private::primitives::aliases::U256;
4871            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4872            type ReturnToken<'a> = <Self::ReturnTuple<
4873                'a,
4874            > as alloy_sol_types::SolType>::Token<'a>;
4875            const SIGNATURE: &'static str = "COSET_K3()";
4876            const SELECTOR: [u8; 4] = [90u8, 20u8, 192u8, 254u8];
4877            #[inline]
4878            fn new<'a>(
4879                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4880            ) -> Self {
4881                tuple.into()
4882            }
4883            #[inline]
4884            fn tokenize(&self) -> Self::Token<'_> {
4885                ()
4886            }
4887            #[inline]
4888            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4889                (
4890                    <alloy::sol_types::sol_data::Uint<
4891                        256,
4892                    > as alloy_sol_types::SolType>::tokenize(ret),
4893                )
4894            }
4895            #[inline]
4896            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4897                <Self::ReturnTuple<
4898                    '_,
4899                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4900                    .map(|r| {
4901                        let r: COSET_K3Return = r.into();
4902                        r._0
4903                    })
4904            }
4905            #[inline]
4906            fn abi_decode_returns_validate(
4907                data: &[u8],
4908            ) -> alloy_sol_types::Result<Self::Return> {
4909                <Self::ReturnTuple<
4910                    '_,
4911                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4912                    .map(|r| {
4913                        let r: COSET_K3Return = r.into();
4914                        r._0
4915                    })
4916            }
4917        }
4918    };
4919    #[derive(serde::Serialize, serde::Deserialize)]
4920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4921    /**Function with signature `COSET_K4()` and selector `0xde24ac0f`.
4922```solidity
4923function COSET_K4() external view returns (uint256);
4924```*/
4925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4926    #[derive(Clone)]
4927    pub struct COSET_K4Call;
4928    #[derive(serde::Serialize, serde::Deserialize)]
4929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4930    ///Container type for the return parameters of the [`COSET_K4()`](COSET_K4Call) function.
4931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4932    #[derive(Clone)]
4933    pub struct COSET_K4Return {
4934        #[allow(missing_docs)]
4935        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4936    }
4937    #[allow(
4938        non_camel_case_types,
4939        non_snake_case,
4940        clippy::pub_underscore_fields,
4941        clippy::style
4942    )]
4943    const _: () = {
4944        use alloy::sol_types as alloy_sol_types;
4945        {
4946            #[doc(hidden)]
4947            #[allow(dead_code)]
4948            type UnderlyingSolTuple<'a> = ();
4949            #[doc(hidden)]
4950            type UnderlyingRustTuple<'a> = ();
4951            #[cfg(test)]
4952            #[allow(dead_code, unreachable_patterns)]
4953            fn _type_assertion(
4954                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4955            ) {
4956                match _t {
4957                    alloy_sol_types::private::AssertTypeEq::<
4958                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4959                    >(_) => {}
4960                }
4961            }
4962            #[automatically_derived]
4963            #[doc(hidden)]
4964            impl ::core::convert::From<COSET_K4Call> for UnderlyingRustTuple<'_> {
4965                fn from(value: COSET_K4Call) -> Self {
4966                    ()
4967                }
4968            }
4969            #[automatically_derived]
4970            #[doc(hidden)]
4971            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Call {
4972                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4973                    Self
4974                }
4975            }
4976        }
4977        {
4978            #[doc(hidden)]
4979            #[allow(dead_code)]
4980            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4981            #[doc(hidden)]
4982            type UnderlyingRustTuple<'a> = (
4983                alloy::sol_types::private::primitives::aliases::U256,
4984            );
4985            #[cfg(test)]
4986            #[allow(dead_code, unreachable_patterns)]
4987            fn _type_assertion(
4988                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4989            ) {
4990                match _t {
4991                    alloy_sol_types::private::AssertTypeEq::<
4992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4993                    >(_) => {}
4994                }
4995            }
4996            #[automatically_derived]
4997            #[doc(hidden)]
4998            impl ::core::convert::From<COSET_K4Return> for UnderlyingRustTuple<'_> {
4999                fn from(value: COSET_K4Return) -> Self {
5000                    (value._0,)
5001                }
5002            }
5003            #[automatically_derived]
5004            #[doc(hidden)]
5005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for COSET_K4Return {
5006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5007                    Self { _0: tuple.0 }
5008                }
5009            }
5010        }
5011        #[automatically_derived]
5012        impl alloy_sol_types::SolCall for COSET_K4Call {
5013            type Parameters<'a> = ();
5014            type Token<'a> = <Self::Parameters<
5015                'a,
5016            > as alloy_sol_types::SolType>::Token<'a>;
5017            type Return = alloy::sol_types::private::primitives::aliases::U256;
5018            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5019            type ReturnToken<'a> = <Self::ReturnTuple<
5020                'a,
5021            > as alloy_sol_types::SolType>::Token<'a>;
5022            const SIGNATURE: &'static str = "COSET_K4()";
5023            const SELECTOR: [u8; 4] = [222u8, 36u8, 172u8, 15u8];
5024            #[inline]
5025            fn new<'a>(
5026                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5027            ) -> Self {
5028                tuple.into()
5029            }
5030            #[inline]
5031            fn tokenize(&self) -> Self::Token<'_> {
5032                ()
5033            }
5034            #[inline]
5035            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5036                (
5037                    <alloy::sol_types::sol_data::Uint<
5038                        256,
5039                    > as alloy_sol_types::SolType>::tokenize(ret),
5040                )
5041            }
5042            #[inline]
5043            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5044                <Self::ReturnTuple<
5045                    '_,
5046                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5047                    .map(|r| {
5048                        let r: COSET_K4Return = r.into();
5049                        r._0
5050                    })
5051            }
5052            #[inline]
5053            fn abi_decode_returns_validate(
5054                data: &[u8],
5055            ) -> alloy_sol_types::Result<Self::Return> {
5056                <Self::ReturnTuple<
5057                    '_,
5058                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5059                    .map(|r| {
5060                        let r: COSET_K4Return = r.into();
5061                        r._0
5062                    })
5063            }
5064        }
5065    };
5066    #[derive(serde::Serialize, serde::Deserialize)]
5067    #[derive()]
5068    /**Function with signature `verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(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 `0xab959ee3`.
5069```solidity
5070function verify(IPlonkVerifier.VerifyingKey memory verifyingKey, uint256[11] memory publicInput, IPlonkVerifier.PlonkProof memory proof) external view returns (bool);
5071```*/
5072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5073    #[derive(Clone)]
5074    pub struct verifyCall {
5075        #[allow(missing_docs)]
5076        pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
5077        #[allow(missing_docs)]
5078        pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
5079        #[allow(missing_docs)]
5080        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
5081    }
5082    #[derive(serde::Serialize, serde::Deserialize)]
5083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5084    ///Container type for the return parameters of the [`verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](verifyCall) function.
5085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5086    #[derive(Clone)]
5087    pub struct verifyReturn {
5088        #[allow(missing_docs)]
5089        pub _0: bool,
5090    }
5091    #[allow(
5092        non_camel_case_types,
5093        non_snake_case,
5094        clippy::pub_underscore_fields,
5095        clippy::style
5096    )]
5097    const _: () = {
5098        use alloy::sol_types as alloy_sol_types;
5099        {
5100            #[doc(hidden)]
5101            #[allow(dead_code)]
5102            type UnderlyingSolTuple<'a> = (
5103                IPlonkVerifier::VerifyingKey,
5104                alloy::sol_types::sol_data::FixedArray<
5105                    alloy::sol_types::sol_data::Uint<256>,
5106                    11usize,
5107                >,
5108                IPlonkVerifier::PlonkProof,
5109            );
5110            #[doc(hidden)]
5111            type UnderlyingRustTuple<'a> = (
5112                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
5113                [alloy::sol_types::private::primitives::aliases::U256; 11usize],
5114                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
5115            );
5116            #[cfg(test)]
5117            #[allow(dead_code, unreachable_patterns)]
5118            fn _type_assertion(
5119                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5120            ) {
5121                match _t {
5122                    alloy_sol_types::private::AssertTypeEq::<
5123                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5124                    >(_) => {}
5125                }
5126            }
5127            #[automatically_derived]
5128            #[doc(hidden)]
5129            impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
5130                fn from(value: verifyCall) -> Self {
5131                    (value.verifyingKey, value.publicInput, value.proof)
5132                }
5133            }
5134            #[automatically_derived]
5135            #[doc(hidden)]
5136            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
5137                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5138                    Self {
5139                        verifyingKey: tuple.0,
5140                        publicInput: tuple.1,
5141                        proof: tuple.2,
5142                    }
5143                }
5144            }
5145        }
5146        {
5147            #[doc(hidden)]
5148            #[allow(dead_code)]
5149            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5150            #[doc(hidden)]
5151            type UnderlyingRustTuple<'a> = (bool,);
5152            #[cfg(test)]
5153            #[allow(dead_code, unreachable_patterns)]
5154            fn _type_assertion(
5155                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5156            ) {
5157                match _t {
5158                    alloy_sol_types::private::AssertTypeEq::<
5159                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5160                    >(_) => {}
5161                }
5162            }
5163            #[automatically_derived]
5164            #[doc(hidden)]
5165            impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
5166                fn from(value: verifyReturn) -> Self {
5167                    (value._0,)
5168                }
5169            }
5170            #[automatically_derived]
5171            #[doc(hidden)]
5172            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
5173                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5174                    Self { _0: tuple.0 }
5175                }
5176            }
5177        }
5178        #[automatically_derived]
5179        impl alloy_sol_types::SolCall for verifyCall {
5180            type Parameters<'a> = (
5181                IPlonkVerifier::VerifyingKey,
5182                alloy::sol_types::sol_data::FixedArray<
5183                    alloy::sol_types::sol_data::Uint<256>,
5184                    11usize,
5185                >,
5186                IPlonkVerifier::PlonkProof,
5187            );
5188            type Token<'a> = <Self::Parameters<
5189                'a,
5190            > as alloy_sol_types::SolType>::Token<'a>;
5191            type Return = bool;
5192            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5193            type ReturnToken<'a> = <Self::ReturnTuple<
5194                'a,
5195            > as alloy_sol_types::SolType>::Token<'a>;
5196            const SIGNATURE: &'static str = "verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[11],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
5197            const SELECTOR: [u8; 4] = [171u8, 149u8, 158u8, 227u8];
5198            #[inline]
5199            fn new<'a>(
5200                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5201            ) -> Self {
5202                tuple.into()
5203            }
5204            #[inline]
5205            fn tokenize(&self) -> Self::Token<'_> {
5206                (
5207                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
5208                        &self.verifyingKey,
5209                    ),
5210                    <alloy::sol_types::sol_data::FixedArray<
5211                        alloy::sol_types::sol_data::Uint<256>,
5212                        11usize,
5213                    > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
5214                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
5215                        &self.proof,
5216                    ),
5217                )
5218            }
5219            #[inline]
5220            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5221                (
5222                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5223                        ret,
5224                    ),
5225                )
5226            }
5227            #[inline]
5228            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5229                <Self::ReturnTuple<
5230                    '_,
5231                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5232                    .map(|r| {
5233                        let r: verifyReturn = r.into();
5234                        r._0
5235                    })
5236            }
5237            #[inline]
5238            fn abi_decode_returns_validate(
5239                data: &[u8],
5240            ) -> alloy_sol_types::Result<Self::Return> {
5241                <Self::ReturnTuple<
5242                    '_,
5243                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5244                    .map(|r| {
5245                        let r: verifyReturn = r.into();
5246                        r._0
5247                    })
5248            }
5249        }
5250    };
5251    ///Container for all the [`PlonkVerifierV2`](self) function calls.
5252    #[derive(serde::Serialize, serde::Deserialize)]
5253    #[derive()]
5254    pub enum PlonkVerifierV2Calls {
5255        #[allow(missing_docs)]
5256        BETA_H_X0(BETA_H_X0Call),
5257        #[allow(missing_docs)]
5258        BETA_H_X1(BETA_H_X1Call),
5259        #[allow(missing_docs)]
5260        BETA_H_Y0(BETA_H_Y0Call),
5261        #[allow(missing_docs)]
5262        BETA_H_Y1(BETA_H_Y1Call),
5263        #[allow(missing_docs)]
5264        COSET_K1(COSET_K1Call),
5265        #[allow(missing_docs)]
5266        COSET_K2(COSET_K2Call),
5267        #[allow(missing_docs)]
5268        COSET_K3(COSET_K3Call),
5269        #[allow(missing_docs)]
5270        COSET_K4(COSET_K4Call),
5271        #[allow(missing_docs)]
5272        verify(verifyCall),
5273    }
5274    #[automatically_derived]
5275    impl PlonkVerifierV2Calls {
5276        /// All the selectors of this enum.
5277        ///
5278        /// Note that the selectors might not be in the same order as the variants.
5279        /// No guarantees are made about the order of the selectors.
5280        ///
5281        /// Prefer using `SolInterface` methods instead.
5282        pub const SELECTORS: &'static [[u8; 4usize]] = &[
5283            [12u8, 85u8, 31u8, 63u8],
5284            [75u8, 71u8, 52u8, 227u8],
5285            [90u8, 20u8, 192u8, 254u8],
5286            [131u8, 76u8, 69u8, 42u8],
5287            [171u8, 149u8, 158u8, 227u8],
5288            [175u8, 25u8, 107u8, 162u8],
5289            [222u8, 36u8, 172u8, 15u8],
5290            [227u8, 81u8, 45u8, 86u8],
5291            [245u8, 20u8, 67u8, 38u8],
5292        ];
5293    }
5294    #[automatically_derived]
5295    impl alloy_sol_types::SolInterface for PlonkVerifierV2Calls {
5296        const NAME: &'static str = "PlonkVerifierV2Calls";
5297        const MIN_DATA_LENGTH: usize = 0usize;
5298        const COUNT: usize = 9usize;
5299        #[inline]
5300        fn selector(&self) -> [u8; 4] {
5301            match self {
5302                Self::BETA_H_X0(_) => {
5303                    <BETA_H_X0Call as alloy_sol_types::SolCall>::SELECTOR
5304                }
5305                Self::BETA_H_X1(_) => {
5306                    <BETA_H_X1Call as alloy_sol_types::SolCall>::SELECTOR
5307                }
5308                Self::BETA_H_Y0(_) => {
5309                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::SELECTOR
5310                }
5311                Self::BETA_H_Y1(_) => {
5312                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::SELECTOR
5313                }
5314                Self::COSET_K1(_) => <COSET_K1Call as alloy_sol_types::SolCall>::SELECTOR,
5315                Self::COSET_K2(_) => <COSET_K2Call as alloy_sol_types::SolCall>::SELECTOR,
5316                Self::COSET_K3(_) => <COSET_K3Call as alloy_sol_types::SolCall>::SELECTOR,
5317                Self::COSET_K4(_) => <COSET_K4Call as alloy_sol_types::SolCall>::SELECTOR,
5318                Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
5319            }
5320        }
5321        #[inline]
5322        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
5323            Self::SELECTORS.get(i).copied()
5324        }
5325        #[inline]
5326        fn valid_selector(selector: [u8; 4]) -> bool {
5327            Self::SELECTORS.binary_search(&selector).is_ok()
5328        }
5329        #[inline]
5330        #[allow(non_snake_case)]
5331        fn abi_decode_raw(
5332            selector: [u8; 4],
5333            data: &[u8],
5334        ) -> alloy_sol_types::Result<Self> {
5335            static DECODE_SHIMS: &[fn(
5336                &[u8],
5337            ) -> alloy_sol_types::Result<PlonkVerifierV2Calls>] = &[
5338                {
5339                    fn COSET_K2(
5340                        data: &[u8],
5341                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5342                        <COSET_K2Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5343                            .map(PlonkVerifierV2Calls::COSET_K2)
5344                    }
5345                    COSET_K2
5346                },
5347                {
5348                    fn BETA_H_Y1(
5349                        data: &[u8],
5350                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5351                        <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5352                            .map(PlonkVerifierV2Calls::BETA_H_Y1)
5353                    }
5354                    BETA_H_Y1
5355                },
5356                {
5357                    fn COSET_K3(
5358                        data: &[u8],
5359                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5360                        <COSET_K3Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5361                            .map(PlonkVerifierV2Calls::COSET_K3)
5362                    }
5363                    COSET_K3
5364                },
5365                {
5366                    fn BETA_H_X0(
5367                        data: &[u8],
5368                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5369                        <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5370                            .map(PlonkVerifierV2Calls::BETA_H_X0)
5371                    }
5372                    BETA_H_X0
5373                },
5374                {
5375                    fn verify(
5376                        data: &[u8],
5377                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5378                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
5379                            .map(PlonkVerifierV2Calls::verify)
5380                    }
5381                    verify
5382                },
5383                {
5384                    fn BETA_H_X1(
5385                        data: &[u8],
5386                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5387                        <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5388                            .map(PlonkVerifierV2Calls::BETA_H_X1)
5389                    }
5390                    BETA_H_X1
5391                },
5392                {
5393                    fn COSET_K4(
5394                        data: &[u8],
5395                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5396                        <COSET_K4Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5397                            .map(PlonkVerifierV2Calls::COSET_K4)
5398                    }
5399                    COSET_K4
5400                },
5401                {
5402                    fn COSET_K1(
5403                        data: &[u8],
5404                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5405                        <COSET_K1Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5406                            .map(PlonkVerifierV2Calls::COSET_K1)
5407                    }
5408                    COSET_K1
5409                },
5410                {
5411                    fn BETA_H_Y0(
5412                        data: &[u8],
5413                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5414                        <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
5415                            .map(PlonkVerifierV2Calls::BETA_H_Y0)
5416                    }
5417                    BETA_H_Y0
5418                },
5419            ];
5420            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5421                return Err(
5422                    alloy_sol_types::Error::unknown_selector(
5423                        <Self as alloy_sol_types::SolInterface>::NAME,
5424                        selector,
5425                    ),
5426                );
5427            };
5428            DECODE_SHIMS[idx](data)
5429        }
5430        #[inline]
5431        #[allow(non_snake_case)]
5432        fn abi_decode_raw_validate(
5433            selector: [u8; 4],
5434            data: &[u8],
5435        ) -> alloy_sol_types::Result<Self> {
5436            static DECODE_VALIDATE_SHIMS: &[fn(
5437                &[u8],
5438            ) -> alloy_sol_types::Result<PlonkVerifierV2Calls>] = &[
5439                {
5440                    fn COSET_K2(
5441                        data: &[u8],
5442                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5443                        <COSET_K2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5444                                data,
5445                            )
5446                            .map(PlonkVerifierV2Calls::COSET_K2)
5447                    }
5448                    COSET_K2
5449                },
5450                {
5451                    fn BETA_H_Y1(
5452                        data: &[u8],
5453                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5454                        <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5455                                data,
5456                            )
5457                            .map(PlonkVerifierV2Calls::BETA_H_Y1)
5458                    }
5459                    BETA_H_Y1
5460                },
5461                {
5462                    fn COSET_K3(
5463                        data: &[u8],
5464                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5465                        <COSET_K3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5466                                data,
5467                            )
5468                            .map(PlonkVerifierV2Calls::COSET_K3)
5469                    }
5470                    COSET_K3
5471                },
5472                {
5473                    fn BETA_H_X0(
5474                        data: &[u8],
5475                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5476                        <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5477                                data,
5478                            )
5479                            .map(PlonkVerifierV2Calls::BETA_H_X0)
5480                    }
5481                    BETA_H_X0
5482                },
5483                {
5484                    fn verify(
5485                        data: &[u8],
5486                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5487                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5488                                data,
5489                            )
5490                            .map(PlonkVerifierV2Calls::verify)
5491                    }
5492                    verify
5493                },
5494                {
5495                    fn BETA_H_X1(
5496                        data: &[u8],
5497                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5498                        <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5499                                data,
5500                            )
5501                            .map(PlonkVerifierV2Calls::BETA_H_X1)
5502                    }
5503                    BETA_H_X1
5504                },
5505                {
5506                    fn COSET_K4(
5507                        data: &[u8],
5508                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5509                        <COSET_K4Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5510                                data,
5511                            )
5512                            .map(PlonkVerifierV2Calls::COSET_K4)
5513                    }
5514                    COSET_K4
5515                },
5516                {
5517                    fn COSET_K1(
5518                        data: &[u8],
5519                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5520                        <COSET_K1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5521                                data,
5522                            )
5523                            .map(PlonkVerifierV2Calls::COSET_K1)
5524                    }
5525                    COSET_K1
5526                },
5527                {
5528                    fn BETA_H_Y0(
5529                        data: &[u8],
5530                    ) -> alloy_sol_types::Result<PlonkVerifierV2Calls> {
5531                        <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
5532                                data,
5533                            )
5534                            .map(PlonkVerifierV2Calls::BETA_H_Y0)
5535                    }
5536                    BETA_H_Y0
5537                },
5538            ];
5539            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5540                return Err(
5541                    alloy_sol_types::Error::unknown_selector(
5542                        <Self as alloy_sol_types::SolInterface>::NAME,
5543                        selector,
5544                    ),
5545                );
5546            };
5547            DECODE_VALIDATE_SHIMS[idx](data)
5548        }
5549        #[inline]
5550        fn abi_encoded_size(&self) -> usize {
5551            match self {
5552                Self::BETA_H_X0(inner) => {
5553                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5554                }
5555                Self::BETA_H_X1(inner) => {
5556                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5557                }
5558                Self::BETA_H_Y0(inner) => {
5559                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5560                }
5561                Self::BETA_H_Y1(inner) => {
5562                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5563                }
5564                Self::COSET_K1(inner) => {
5565                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5566                }
5567                Self::COSET_K2(inner) => {
5568                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5569                }
5570                Self::COSET_K3(inner) => {
5571                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5572                }
5573                Self::COSET_K4(inner) => {
5574                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5575                }
5576                Self::verify(inner) => {
5577                    <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
5578                }
5579            }
5580        }
5581        #[inline]
5582        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
5583            match self {
5584                Self::BETA_H_X0(inner) => {
5585                    <BETA_H_X0Call as alloy_sol_types::SolCall>::abi_encode_raw(
5586                        inner,
5587                        out,
5588                    )
5589                }
5590                Self::BETA_H_X1(inner) => {
5591                    <BETA_H_X1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5592                        inner,
5593                        out,
5594                    )
5595                }
5596                Self::BETA_H_Y0(inner) => {
5597                    <BETA_H_Y0Call as alloy_sol_types::SolCall>::abi_encode_raw(
5598                        inner,
5599                        out,
5600                    )
5601                }
5602                Self::BETA_H_Y1(inner) => {
5603                    <BETA_H_Y1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5604                        inner,
5605                        out,
5606                    )
5607                }
5608                Self::COSET_K1(inner) => {
5609                    <COSET_K1Call as alloy_sol_types::SolCall>::abi_encode_raw(
5610                        inner,
5611                        out,
5612                    )
5613                }
5614                Self::COSET_K2(inner) => {
5615                    <COSET_K2Call as alloy_sol_types::SolCall>::abi_encode_raw(
5616                        inner,
5617                        out,
5618                    )
5619                }
5620                Self::COSET_K3(inner) => {
5621                    <COSET_K3Call as alloy_sol_types::SolCall>::abi_encode_raw(
5622                        inner,
5623                        out,
5624                    )
5625                }
5626                Self::COSET_K4(inner) => {
5627                    <COSET_K4Call as alloy_sol_types::SolCall>::abi_encode_raw(
5628                        inner,
5629                        out,
5630                    )
5631                }
5632                Self::verify(inner) => {
5633                    <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
5634                }
5635            }
5636        }
5637    }
5638    ///Container for all the [`PlonkVerifierV2`](self) custom errors.
5639    #[derive(serde::Serialize, serde::Deserialize)]
5640    #[derive(Debug, PartialEq, Eq, Hash)]
5641    pub enum PlonkVerifierV2Errors {
5642        #[allow(missing_docs)]
5643        BN254G1AddFailed(BN254G1AddFailed),
5644        #[allow(missing_docs)]
5645        BN254PairingProdFailed(BN254PairingProdFailed),
5646        #[allow(missing_docs)]
5647        BN254ScalarInvZero(BN254ScalarInvZero),
5648        #[allow(missing_docs)]
5649        BN254ScalarMulFailed(BN254ScalarMulFailed),
5650        #[allow(missing_docs)]
5651        InvalidG1(InvalidG1),
5652        #[allow(missing_docs)]
5653        InvalidPlonkArgs(InvalidPlonkArgs),
5654        #[allow(missing_docs)]
5655        InvalidScalar(InvalidScalar),
5656        #[allow(missing_docs)]
5657        PowPrecompileFailed(PowPrecompileFailed),
5658        #[allow(missing_docs)]
5659        UnsupportedDegree(UnsupportedDegree),
5660        #[allow(missing_docs)]
5661        WrongPlonkVK(WrongPlonkVK),
5662    }
5663    #[automatically_derived]
5664    impl PlonkVerifierV2Errors {
5665        /// All the selectors of this enum.
5666        ///
5667        /// Note that the selectors might not be in the same order as the variants.
5668        /// No guarantees are made about the order of the selectors.
5669        ///
5670        /// Prefer using `SolInterface` methods instead.
5671        pub const SELECTORS: &'static [[u8; 4usize]] = &[
5672            [5u8, 176u8, 92u8, 204u8],
5673            [25u8, 219u8, 138u8, 104u8],
5674            [50u8, 116u8, 250u8, 100u8],
5675            [65u8, 245u8, 59u8, 18u8],
5676            [96u8, 85u8, 219u8, 106u8],
5677            [158u8, 120u8, 209u8, 76u8],
5678            [194u8, 6u8, 51u8, 79u8],
5679            [214u8, 219u8, 187u8, 13u8],
5680            [226u8, 239u8, 9u8, 229u8],
5681            [253u8, 154u8, 45u8, 27u8],
5682        ];
5683    }
5684    #[automatically_derived]
5685    impl alloy_sol_types::SolInterface for PlonkVerifierV2Errors {
5686        const NAME: &'static str = "PlonkVerifierV2Errors";
5687        const MIN_DATA_LENGTH: usize = 0usize;
5688        const COUNT: usize = 10usize;
5689        #[inline]
5690        fn selector(&self) -> [u8; 4] {
5691            match self {
5692                Self::BN254G1AddFailed(_) => {
5693                    <BN254G1AddFailed as alloy_sol_types::SolError>::SELECTOR
5694                }
5695                Self::BN254PairingProdFailed(_) => {
5696                    <BN254PairingProdFailed as alloy_sol_types::SolError>::SELECTOR
5697                }
5698                Self::BN254ScalarInvZero(_) => {
5699                    <BN254ScalarInvZero as alloy_sol_types::SolError>::SELECTOR
5700                }
5701                Self::BN254ScalarMulFailed(_) => {
5702                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::SELECTOR
5703                }
5704                Self::InvalidG1(_) => <InvalidG1 as alloy_sol_types::SolError>::SELECTOR,
5705                Self::InvalidPlonkArgs(_) => {
5706                    <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
5707                }
5708                Self::InvalidScalar(_) => {
5709                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
5710                }
5711                Self::PowPrecompileFailed(_) => {
5712                    <PowPrecompileFailed as alloy_sol_types::SolError>::SELECTOR
5713                }
5714                Self::UnsupportedDegree(_) => {
5715                    <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
5716                }
5717                Self::WrongPlonkVK(_) => {
5718                    <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR
5719                }
5720            }
5721        }
5722        #[inline]
5723        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
5724            Self::SELECTORS.get(i).copied()
5725        }
5726        #[inline]
5727        fn valid_selector(selector: [u8; 4]) -> bool {
5728            Self::SELECTORS.binary_search(&selector).is_ok()
5729        }
5730        #[inline]
5731        #[allow(non_snake_case)]
5732        fn abi_decode_raw(
5733            selector: [u8; 4],
5734            data: &[u8],
5735        ) -> alloy_sol_types::Result<Self> {
5736            static DECODE_SHIMS: &[fn(
5737                &[u8],
5738            ) -> alloy_sol_types::Result<PlonkVerifierV2Errors>] = &[
5739                {
5740                    fn InvalidScalar(
5741                        data: &[u8],
5742                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5743                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
5744                                data,
5745                            )
5746                            .map(PlonkVerifierV2Errors::InvalidScalar)
5747                    }
5748                    InvalidScalar
5749                },
5750                {
5751                    fn BN254ScalarMulFailed(
5752                        data: &[u8],
5753                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5754                        <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw(
5755                                data,
5756                            )
5757                            .map(PlonkVerifierV2Errors::BN254ScalarMulFailed)
5758                    }
5759                    BN254ScalarMulFailed
5760                },
5761                {
5762                    fn PowPrecompileFailed(
5763                        data: &[u8],
5764                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5765                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw(
5766                                data,
5767                            )
5768                            .map(PlonkVerifierV2Errors::PowPrecompileFailed)
5769                    }
5770                    PowPrecompileFailed
5771                },
5772                {
5773                    fn WrongPlonkVK(
5774                        data: &[u8],
5775                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5776                        <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data)
5777                            .map(PlonkVerifierV2Errors::WrongPlonkVK)
5778                    }
5779                    WrongPlonkVK
5780                },
5781                {
5782                    fn BN254G1AddFailed(
5783                        data: &[u8],
5784                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5785                        <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw(
5786                                data,
5787                            )
5788                            .map(PlonkVerifierV2Errors::BN254G1AddFailed)
5789                    }
5790                    BN254G1AddFailed
5791                },
5792                {
5793                    fn InvalidG1(
5794                        data: &[u8],
5795                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5796                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw(data)
5797                            .map(PlonkVerifierV2Errors::InvalidG1)
5798                    }
5799                    InvalidG1
5800                },
5801                {
5802                    fn BN254PairingProdFailed(
5803                        data: &[u8],
5804                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5805                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw(
5806                                data,
5807                            )
5808                            .map(PlonkVerifierV2Errors::BN254PairingProdFailed)
5809                    }
5810                    BN254PairingProdFailed
5811                },
5812                {
5813                    fn BN254ScalarInvZero(
5814                        data: &[u8],
5815                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5816                        <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw(
5817                                data,
5818                            )
5819                            .map(PlonkVerifierV2Errors::BN254ScalarInvZero)
5820                    }
5821                    BN254ScalarInvZero
5822                },
5823                {
5824                    fn UnsupportedDegree(
5825                        data: &[u8],
5826                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5827                        <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
5828                                data,
5829                            )
5830                            .map(PlonkVerifierV2Errors::UnsupportedDegree)
5831                    }
5832                    UnsupportedDegree
5833                },
5834                {
5835                    fn InvalidPlonkArgs(
5836                        data: &[u8],
5837                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5838                        <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
5839                                data,
5840                            )
5841                            .map(PlonkVerifierV2Errors::InvalidPlonkArgs)
5842                    }
5843                    InvalidPlonkArgs
5844                },
5845            ];
5846            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5847                return Err(
5848                    alloy_sol_types::Error::unknown_selector(
5849                        <Self as alloy_sol_types::SolInterface>::NAME,
5850                        selector,
5851                    ),
5852                );
5853            };
5854            DECODE_SHIMS[idx](data)
5855        }
5856        #[inline]
5857        #[allow(non_snake_case)]
5858        fn abi_decode_raw_validate(
5859            selector: [u8; 4],
5860            data: &[u8],
5861        ) -> alloy_sol_types::Result<Self> {
5862            static DECODE_VALIDATE_SHIMS: &[fn(
5863                &[u8],
5864            ) -> alloy_sol_types::Result<PlonkVerifierV2Errors>] = &[
5865                {
5866                    fn InvalidScalar(
5867                        data: &[u8],
5868                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5869                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
5870                                data,
5871                            )
5872                            .map(PlonkVerifierV2Errors::InvalidScalar)
5873                    }
5874                    InvalidScalar
5875                },
5876                {
5877                    fn BN254ScalarMulFailed(
5878                        data: &[u8],
5879                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5880                        <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5881                                data,
5882                            )
5883                            .map(PlonkVerifierV2Errors::BN254ScalarMulFailed)
5884                    }
5885                    BN254ScalarMulFailed
5886                },
5887                {
5888                    fn PowPrecompileFailed(
5889                        data: &[u8],
5890                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5891                        <PowPrecompileFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5892                                data,
5893                            )
5894                            .map(PlonkVerifierV2Errors::PowPrecompileFailed)
5895                    }
5896                    PowPrecompileFailed
5897                },
5898                {
5899                    fn WrongPlonkVK(
5900                        data: &[u8],
5901                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5902                        <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw_validate(
5903                                data,
5904                            )
5905                            .map(PlonkVerifierV2Errors::WrongPlonkVK)
5906                    }
5907                    WrongPlonkVK
5908                },
5909                {
5910                    fn BN254G1AddFailed(
5911                        data: &[u8],
5912                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5913                        <BN254G1AddFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5914                                data,
5915                            )
5916                            .map(PlonkVerifierV2Errors::BN254G1AddFailed)
5917                    }
5918                    BN254G1AddFailed
5919                },
5920                {
5921                    fn InvalidG1(
5922                        data: &[u8],
5923                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5924                        <InvalidG1 as alloy_sol_types::SolError>::abi_decode_raw_validate(
5925                                data,
5926                            )
5927                            .map(PlonkVerifierV2Errors::InvalidG1)
5928                    }
5929                    InvalidG1
5930                },
5931                {
5932                    fn BN254PairingProdFailed(
5933                        data: &[u8],
5934                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5935                        <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
5936                                data,
5937                            )
5938                            .map(PlonkVerifierV2Errors::BN254PairingProdFailed)
5939                    }
5940                    BN254PairingProdFailed
5941                },
5942                {
5943                    fn BN254ScalarInvZero(
5944                        data: &[u8],
5945                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5946                        <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_decode_raw_validate(
5947                                data,
5948                            )
5949                            .map(PlonkVerifierV2Errors::BN254ScalarInvZero)
5950                    }
5951                    BN254ScalarInvZero
5952                },
5953                {
5954                    fn UnsupportedDegree(
5955                        data: &[u8],
5956                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5957                        <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw_validate(
5958                                data,
5959                            )
5960                            .map(PlonkVerifierV2Errors::UnsupportedDegree)
5961                    }
5962                    UnsupportedDegree
5963                },
5964                {
5965                    fn InvalidPlonkArgs(
5966                        data: &[u8],
5967                    ) -> alloy_sol_types::Result<PlonkVerifierV2Errors> {
5968                        <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
5969                                data,
5970                            )
5971                            .map(PlonkVerifierV2Errors::InvalidPlonkArgs)
5972                    }
5973                    InvalidPlonkArgs
5974                },
5975            ];
5976            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
5977                return Err(
5978                    alloy_sol_types::Error::unknown_selector(
5979                        <Self as alloy_sol_types::SolInterface>::NAME,
5980                        selector,
5981                    ),
5982                );
5983            };
5984            DECODE_VALIDATE_SHIMS[idx](data)
5985        }
5986        #[inline]
5987        fn abi_encoded_size(&self) -> usize {
5988            match self {
5989                Self::BN254G1AddFailed(inner) => {
5990                    <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encoded_size(
5991                        inner,
5992                    )
5993                }
5994                Self::BN254PairingProdFailed(inner) => {
5995                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encoded_size(
5996                        inner,
5997                    )
5998                }
5999                Self::BN254ScalarInvZero(inner) => {
6000                    <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encoded_size(
6001                        inner,
6002                    )
6003                }
6004                Self::BN254ScalarMulFailed(inner) => {
6005                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encoded_size(
6006                        inner,
6007                    )
6008                }
6009                Self::InvalidG1(inner) => {
6010                    <InvalidG1 as alloy_sol_types::SolError>::abi_encoded_size(inner)
6011                }
6012                Self::InvalidPlonkArgs(inner) => {
6013                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(
6014                        inner,
6015                    )
6016                }
6017                Self::InvalidScalar(inner) => {
6018                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
6019                }
6020                Self::PowPrecompileFailed(inner) => {
6021                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encoded_size(
6022                        inner,
6023                    )
6024                }
6025                Self::UnsupportedDegree(inner) => {
6026                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(
6027                        inner,
6028                    )
6029                }
6030                Self::WrongPlonkVK(inner) => {
6031                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
6032                }
6033            }
6034        }
6035        #[inline]
6036        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
6037            match self {
6038                Self::BN254G1AddFailed(inner) => {
6039                    <BN254G1AddFailed as alloy_sol_types::SolError>::abi_encode_raw(
6040                        inner,
6041                        out,
6042                    )
6043                }
6044                Self::BN254PairingProdFailed(inner) => {
6045                    <BN254PairingProdFailed as alloy_sol_types::SolError>::abi_encode_raw(
6046                        inner,
6047                        out,
6048                    )
6049                }
6050                Self::BN254ScalarInvZero(inner) => {
6051                    <BN254ScalarInvZero as alloy_sol_types::SolError>::abi_encode_raw(
6052                        inner,
6053                        out,
6054                    )
6055                }
6056                Self::BN254ScalarMulFailed(inner) => {
6057                    <BN254ScalarMulFailed as alloy_sol_types::SolError>::abi_encode_raw(
6058                        inner,
6059                        out,
6060                    )
6061                }
6062                Self::InvalidG1(inner) => {
6063                    <InvalidG1 as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
6064                }
6065                Self::InvalidPlonkArgs(inner) => {
6066                    <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(
6067                        inner,
6068                        out,
6069                    )
6070                }
6071                Self::InvalidScalar(inner) => {
6072                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
6073                        inner,
6074                        out,
6075                    )
6076                }
6077                Self::PowPrecompileFailed(inner) => {
6078                    <PowPrecompileFailed as alloy_sol_types::SolError>::abi_encode_raw(
6079                        inner,
6080                        out,
6081                    )
6082                }
6083                Self::UnsupportedDegree(inner) => {
6084                    <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(
6085                        inner,
6086                        out,
6087                    )
6088                }
6089                Self::WrongPlonkVK(inner) => {
6090                    <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(
6091                        inner,
6092                        out,
6093                    )
6094                }
6095            }
6096        }
6097    }
6098    use alloy::contract as alloy_contract;
6099    /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
6100
6101See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
6102    #[inline]
6103    pub const fn new<
6104        P: alloy_contract::private::Provider<N>,
6105        N: alloy_contract::private::Network,
6106    >(
6107        address: alloy_sol_types::private::Address,
6108        __provider: P,
6109    ) -> PlonkVerifierV2Instance<P, N> {
6110        PlonkVerifierV2Instance::<P, N>::new(address, __provider)
6111    }
6112    /**Deploys this contract using the given `provider` and constructor arguments, if any.
6113
6114Returns a new instance of the contract, if the deployment was successful.
6115
6116For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
6117    #[inline]
6118    pub fn deploy<
6119        P: alloy_contract::private::Provider<N>,
6120        N: alloy_contract::private::Network,
6121    >(
6122        __provider: P,
6123    ) -> impl ::core::future::Future<
6124        Output = alloy_contract::Result<PlonkVerifierV2Instance<P, N>>,
6125    > {
6126        PlonkVerifierV2Instance::<P, N>::deploy(__provider)
6127    }
6128    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
6129and constructor arguments, if any.
6130
6131This is a simple wrapper around creating a `RawCallBuilder` with the data set to
6132the bytecode concatenated with the constructor's ABI-encoded arguments.*/
6133    #[inline]
6134    pub fn deploy_builder<
6135        P: alloy_contract::private::Provider<N>,
6136        N: alloy_contract::private::Network,
6137    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
6138        PlonkVerifierV2Instance::<P, N>::deploy_builder(__provider)
6139    }
6140    /**A [`PlonkVerifierV2`](self) instance.
6141
6142Contains type-safe methods for interacting with an on-chain instance of the
6143[`PlonkVerifierV2`](self) contract located at a given `address`, using a given
6144provider `P`.
6145
6146If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
6147documentation on how to provide it), the `deploy` and `deploy_builder` methods can
6148be used to deploy a new instance of the contract.
6149
6150See the [module-level documentation](self) for all the available methods.*/
6151    #[derive(Clone)]
6152    pub struct PlonkVerifierV2Instance<P, N = alloy_contract::private::Ethereum> {
6153        address: alloy_sol_types::private::Address,
6154        provider: P,
6155        _network: ::core::marker::PhantomData<N>,
6156    }
6157    #[automatically_derived]
6158    impl<P, N> ::core::fmt::Debug for PlonkVerifierV2Instance<P, N> {
6159        #[inline]
6160        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
6161            f.debug_tuple("PlonkVerifierV2Instance").field(&self.address).finish()
6162        }
6163    }
6164    /// Instantiation and getters/setters.
6165    #[automatically_derived]
6166    impl<
6167        P: alloy_contract::private::Provider<N>,
6168        N: alloy_contract::private::Network,
6169    > PlonkVerifierV2Instance<P, N> {
6170        /**Creates a new wrapper around an on-chain [`PlonkVerifierV2`](self) contract instance.
6171
6172See the [wrapper's documentation](`PlonkVerifierV2Instance`) for more details.*/
6173        #[inline]
6174        pub const fn new(
6175            address: alloy_sol_types::private::Address,
6176            __provider: P,
6177        ) -> Self {
6178            Self {
6179                address,
6180                provider: __provider,
6181                _network: ::core::marker::PhantomData,
6182            }
6183        }
6184        /**Deploys this contract using the given `provider` and constructor arguments, if any.
6185
6186Returns a new instance of the contract, if the deployment was successful.
6187
6188For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
6189        #[inline]
6190        pub async fn deploy(
6191            __provider: P,
6192        ) -> alloy_contract::Result<PlonkVerifierV2Instance<P, N>> {
6193            let call_builder = Self::deploy_builder(__provider);
6194            let contract_address = call_builder.deploy().await?;
6195            Ok(Self::new(contract_address, call_builder.provider))
6196        }
6197        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
6198and constructor arguments, if any.
6199
6200This is a simple wrapper around creating a `RawCallBuilder` with the data set to
6201the bytecode concatenated with the constructor's ABI-encoded arguments.*/
6202        #[inline]
6203        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
6204            alloy_contract::RawCallBuilder::new_raw_deploy(
6205                __provider,
6206                ::core::clone::Clone::clone(&BYTECODE),
6207            )
6208        }
6209        /// Returns a reference to the address.
6210        #[inline]
6211        pub const fn address(&self) -> &alloy_sol_types::private::Address {
6212            &self.address
6213        }
6214        /// Sets the address.
6215        #[inline]
6216        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
6217            self.address = address;
6218        }
6219        /// Sets the address and returns `self`.
6220        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
6221            self.set_address(address);
6222            self
6223        }
6224        /// Returns a reference to the provider.
6225        #[inline]
6226        pub const fn provider(&self) -> &P {
6227            &self.provider
6228        }
6229    }
6230    impl<P: ::core::clone::Clone, N> PlonkVerifierV2Instance<&P, N> {
6231        /// Clones the provider and returns a new instance with the cloned provider.
6232        #[inline]
6233        pub fn with_cloned_provider(self) -> PlonkVerifierV2Instance<P, N> {
6234            PlonkVerifierV2Instance {
6235                address: self.address,
6236                provider: ::core::clone::Clone::clone(&self.provider),
6237                _network: ::core::marker::PhantomData,
6238            }
6239        }
6240    }
6241    /// Function calls.
6242    #[automatically_derived]
6243    impl<
6244        P: alloy_contract::private::Provider<N>,
6245        N: alloy_contract::private::Network,
6246    > PlonkVerifierV2Instance<P, N> {
6247        /// Creates a new call builder using this contract instance's provider and address.
6248        ///
6249        /// Note that the call can be any function call, not just those defined in this
6250        /// contract. Prefer using the other methods for building type-safe contract calls.
6251        pub fn call_builder<C: alloy_sol_types::SolCall>(
6252            &self,
6253            call: &C,
6254        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
6255            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
6256        }
6257        ///Creates a new call builder for the [`BETA_H_X0`] function.
6258        pub fn BETA_H_X0(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_X0Call, N> {
6259            self.call_builder(&BETA_H_X0Call)
6260        }
6261        ///Creates a new call builder for the [`BETA_H_X1`] function.
6262        pub fn BETA_H_X1(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_X1Call, N> {
6263            self.call_builder(&BETA_H_X1Call)
6264        }
6265        ///Creates a new call builder for the [`BETA_H_Y0`] function.
6266        pub fn BETA_H_Y0(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_Y0Call, N> {
6267            self.call_builder(&BETA_H_Y0Call)
6268        }
6269        ///Creates a new call builder for the [`BETA_H_Y1`] function.
6270        pub fn BETA_H_Y1(&self) -> alloy_contract::SolCallBuilder<&P, BETA_H_Y1Call, N> {
6271            self.call_builder(&BETA_H_Y1Call)
6272        }
6273        ///Creates a new call builder for the [`COSET_K1`] function.
6274        pub fn COSET_K1(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K1Call, N> {
6275            self.call_builder(&COSET_K1Call)
6276        }
6277        ///Creates a new call builder for the [`COSET_K2`] function.
6278        pub fn COSET_K2(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K2Call, N> {
6279            self.call_builder(&COSET_K2Call)
6280        }
6281        ///Creates a new call builder for the [`COSET_K3`] function.
6282        pub fn COSET_K3(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K3Call, N> {
6283            self.call_builder(&COSET_K3Call)
6284        }
6285        ///Creates a new call builder for the [`COSET_K4`] function.
6286        pub fn COSET_K4(&self) -> alloy_contract::SolCallBuilder<&P, COSET_K4Call, N> {
6287            self.call_builder(&COSET_K4Call)
6288        }
6289        ///Creates a new call builder for the [`verify`] function.
6290        pub fn verify(
6291            &self,
6292            verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6293            publicInput: [alloy::sol_types::private::primitives::aliases::U256; 11usize],
6294            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
6295        ) -> alloy_contract::SolCallBuilder<&P, verifyCall, N> {
6296            self.call_builder(
6297                &verifyCall {
6298                    verifyingKey,
6299                    publicInput,
6300                    proof,
6301                },
6302            )
6303        }
6304    }
6305    /// Event filters.
6306    #[automatically_derived]
6307    impl<
6308        P: alloy_contract::private::Provider<N>,
6309        N: alloy_contract::private::Network,
6310    > PlonkVerifierV2Instance<P, N> {
6311        /// Creates a new event filter using this contract instance's provider and address.
6312        ///
6313        /// Note that the type can be any event, not just those defined in this contract.
6314        /// Prefer using the other methods for building type-safe event filters.
6315        pub fn event_filter<E: alloy_sol_types::SolEvent>(
6316            &self,
6317        ) -> alloy_contract::Event<&P, E, N> {
6318            alloy_contract::Event::new_sol(&self.provider, &self.address)
6319        }
6320    }
6321}