hotshot_contract_adapter/bindings/
plonk_verifier_v3.rs

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