1#[allow(
12 non_camel_case_types,
13 non_snake_case,
14 clippy::pub_underscore_fields,
15 clippy::style,
16 clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19 use alloy::sol_types as alloy_sol_types;
20
21 use super::*;
22 #[derive(Default, Debug, PartialEq, Eq, Hash)]
23 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24 #[derive(Clone)]
25 pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26 const _: () = {
27 use alloy::sol_types as alloy_sol_types;
28 #[automatically_derived]
29 impl alloy_sol_types::private::SolTypeValue<BaseField>
30 for alloy::sol_types::private::primitives::aliases::U256
31 {
32 #[inline]
33 fn stv_to_tokens(
34 &self,
35 ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36 {
37 alloy_sol_types::private::SolTypeValue::<
38 alloy::sol_types::sol_data::Uint<256>,
39 >::stv_to_tokens(self)
40 }
41 #[inline]
42 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44 .0
45 }
46 #[inline]
47 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48 <alloy::sol_types::sol_data::Uint<
49 256,
50 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51 }
52 #[inline]
53 fn stv_abi_packed_encoded_size(&self) -> usize {
54 <alloy::sol_types::sol_data::Uint<
55 256,
56 > as alloy_sol_types::SolType>::abi_encoded_size(self)
57 }
58 }
59 #[automatically_derived]
60 impl BaseField {
61 pub const NAME: &'static str = stringify!(@ name);
63 #[inline]
65 pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66 Self(value)
67 }
68 #[inline]
70 pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71 self.0
72 }
73 #[inline]
76 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78 }
79 #[inline]
82 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84 }
85 }
86 #[automatically_derived]
87 impl alloy_sol_types::SolType for BaseField {
88 type RustType = alloy::sol_types::private::primitives::aliases::U256;
89 type Token<'a> =
90 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91 const SOL_NAME: &'static str = Self::NAME;
92 const ENCODED_SIZE: Option<usize> =
93 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95 256,
96 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97 #[inline]
98 fn valid_token(token: &Self::Token<'_>) -> bool {
99 Self::type_check(token).is_ok()
100 }
101 #[inline]
102 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104 token,
105 )
106 }
107 #[inline]
108 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110 token,
111 )
112 }
113 }
114 #[automatically_derived]
115 impl alloy_sol_types::EventTopic for BaseField {
116 #[inline]
117 fn topic_preimage_length(rust: &Self::RustType) -> usize {
118 <alloy::sol_types::sol_data::Uint<
119 256,
120 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121 }
122 #[inline]
123 fn encode_topic_preimage(
124 rust: &Self::RustType,
125 out: &mut alloy_sol_types::private::Vec<u8>,
126 ) {
127 <alloy::sol_types::sol_data::Uint<
128 256,
129 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130 }
131 #[inline]
132 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134 rust,
135 )
136 }
137 }
138 };
139 #[derive(Default, Debug, PartialEq, Eq, Hash)]
140 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141 #[derive(Clone)]
142 pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143 const _: () = {
144 use alloy::sol_types as alloy_sol_types;
145 #[automatically_derived]
146 impl alloy_sol_types::private::SolTypeValue<ScalarField>
147 for alloy::sol_types::private::primitives::aliases::U256
148 {
149 #[inline]
150 fn stv_to_tokens(
151 &self,
152 ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153 {
154 alloy_sol_types::private::SolTypeValue::<
155 alloy::sol_types::sol_data::Uint<256>,
156 >::stv_to_tokens(self)
157 }
158 #[inline]
159 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161 .0
162 }
163 #[inline]
164 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165 <alloy::sol_types::sol_data::Uint<
166 256,
167 > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168 }
169 #[inline]
170 fn stv_abi_packed_encoded_size(&self) -> usize {
171 <alloy::sol_types::sol_data::Uint<
172 256,
173 > as alloy_sol_types::SolType>::abi_encoded_size(self)
174 }
175 }
176 #[automatically_derived]
177 impl ScalarField {
178 pub const NAME: &'static str = stringify!(@ name);
180 #[inline]
182 pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183 Self(value)
184 }
185 #[inline]
187 pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188 self.0
189 }
190 #[inline]
193 pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194 <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195 }
196 #[inline]
199 pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200 <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201 }
202 }
203 #[automatically_derived]
204 impl alloy_sol_types::SolType for ScalarField {
205 type RustType = alloy::sol_types::private::primitives::aliases::U256;
206 type Token<'a> =
207 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208 const SOL_NAME: &'static str = Self::NAME;
209 const ENCODED_SIZE: Option<usize> =
210 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211 const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212 256,
213 > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214 #[inline]
215 fn valid_token(token: &Self::Token<'_>) -> bool {
216 Self::type_check(token).is_ok()
217 }
218 #[inline]
219 fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221 token,
222 )
223 }
224 #[inline]
225 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227 token,
228 )
229 }
230 }
231 #[automatically_derived]
232 impl alloy_sol_types::EventTopic for ScalarField {
233 #[inline]
234 fn topic_preimage_length(rust: &Self::RustType) -> usize {
235 <alloy::sol_types::sol_data::Uint<
236 256,
237 > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238 }
239 #[inline]
240 fn encode_topic_preimage(
241 rust: &Self::RustType,
242 out: &mut alloy_sol_types::private::Vec<u8>,
243 ) {
244 <alloy::sol_types::sol_data::Uint<
245 256,
246 > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247 }
248 #[inline]
249 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250 <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251 rust,
252 )
253 }
254 }
255 };
256 #[derive(Default, Debug, PartialEq, Eq, Hash)]
257 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261 #[derive(Clone)]
262 pub struct G1Point {
263 #[allow(missing_docs)]
264 pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265 #[allow(missing_docs)]
266 pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267 }
268 #[allow(
269 non_camel_case_types,
270 non_snake_case,
271 clippy::pub_underscore_fields,
272 clippy::style
273 )]
274 const _: () = {
275 use alloy::sol_types as alloy_sol_types;
276 #[doc(hidden)]
277 type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278 #[doc(hidden)]
279 type UnderlyingRustTuple<'a> = (
280 <BaseField as alloy::sol_types::SolType>::RustType,
281 <BaseField as alloy::sol_types::SolType>::RustType,
282 );
283 #[cfg(test)]
284 #[allow(dead_code, unreachable_patterns)]
285 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286 match _t {
287 alloy_sol_types::private::AssertTypeEq::<
288 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289 >(_) => {},
290 }
291 }
292 #[automatically_derived]
293 #[doc(hidden)]
294 impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295 fn from(value: G1Point) -> Self {
296 (value.x, value.y)
297 }
298 }
299 #[automatically_derived]
300 #[doc(hidden)]
301 impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303 Self {
304 x: tuple.0,
305 y: tuple.1,
306 }
307 }
308 }
309 #[automatically_derived]
310 impl alloy_sol_types::SolValue for G1Point {
311 type SolType = Self;
312 }
313 #[automatically_derived]
314 impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315 #[inline]
316 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317 (
318 <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319 <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320 )
321 }
322 #[inline]
323 fn stv_abi_encoded_size(&self) -> usize {
324 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325 return size;
326 }
327 let tuple =
328 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330 }
331 #[inline]
332 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334 }
335 #[inline]
336 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337 let tuple =
338 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340 &tuple, out,
341 )
342 }
343 #[inline]
344 fn stv_abi_packed_encoded_size(&self) -> usize {
345 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346 return size;
347 }
348 let tuple =
349 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351 &tuple,
352 )
353 }
354 }
355 #[automatically_derived]
356 impl alloy_sol_types::SolType for G1Point {
357 type RustType = Self;
358 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360 const ENCODED_SIZE: Option<usize> =
361 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362 const PACKED_ENCODED_SIZE: Option<usize> =
363 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364 #[inline]
365 fn valid_token(token: &Self::Token<'_>) -> bool {
366 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367 }
368 #[inline]
369 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372 }
373 }
374 #[automatically_derived]
375 impl alloy_sol_types::SolStruct for G1Point {
376 const NAME: &'static str = "G1Point";
377 #[inline]
378 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379 alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380 }
381 #[inline]
382 fn eip712_components(
383 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384 {
385 alloy_sol_types::private::Vec::new()
386 }
387 #[inline]
388 fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389 <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390 }
391 #[inline]
392 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393 [
394 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395 <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396 ]
397 .concat()
398 }
399 }
400 #[automatically_derived]
401 impl alloy_sol_types::EventTopic for G1Point {
402 #[inline]
403 fn topic_preimage_length(rust: &Self::RustType) -> usize {
404 0usize
405 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406 + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407 }
408 #[inline]
409 fn encode_topic_preimage(
410 rust: &Self::RustType,
411 out: &mut alloy_sol_types::private::Vec<u8>,
412 ) {
413 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415 <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416 }
417 #[inline]
418 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419 let mut out = alloy_sol_types::private::Vec::new();
420 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422 }
423 }
424 };
425 use alloy::contract as alloy_contract;
426 #[inline]
430 pub const fn new<
431 T: alloy_contract::private::Transport + ::core::clone::Clone,
432 P: alloy_contract::private::Provider<T, N>,
433 N: alloy_contract::private::Network,
434 >(
435 address: alloy_sol_types::private::Address,
436 provider: P,
437 ) -> BN254Instance<T, P, N> {
438 BN254Instance::<T, P, N>::new(address, provider)
439 }
440 #[derive(Clone)]
452 pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453 address: alloy_sol_types::private::Address,
454 provider: P,
455 _network_transport: ::core::marker::PhantomData<(N, T)>,
456 }
457 #[automatically_derived]
458 impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459 #[inline]
460 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461 f.debug_tuple("BN254Instance").field(&self.address).finish()
462 }
463 }
464 #[automatically_derived]
466 impl<
467 T: alloy_contract::private::Transport + ::core::clone::Clone,
468 P: alloy_contract::private::Provider<T, N>,
469 N: alloy_contract::private::Network,
470 > BN254Instance<T, P, N>
471 {
472 #[inline]
476 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477 Self {
478 address,
479 provider,
480 _network_transport: ::core::marker::PhantomData,
481 }
482 }
483 #[inline]
485 pub const fn address(&self) -> &alloy_sol_types::private::Address {
486 &self.address
487 }
488 #[inline]
490 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491 self.address = address;
492 }
493 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495 self.set_address(address);
496 self
497 }
498 #[inline]
500 pub const fn provider(&self) -> &P {
501 &self.provider
502 }
503 }
504 impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505 #[inline]
507 pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508 BN254Instance {
509 address: self.address,
510 provider: ::core::clone::Clone::clone(&self.provider),
511 _network_transport: ::core::marker::PhantomData,
512 }
513 }
514 }
515 #[automatically_derived]
517 impl<
518 T: alloy_contract::private::Transport + ::core::clone::Clone,
519 P: alloy_contract::private::Provider<T, N>,
520 N: alloy_contract::private::Network,
521 > BN254Instance<T, P, N>
522 {
523 pub fn call_builder<C: alloy_sol_types::SolCall>(
528 &self,
529 call: &C,
530 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532 }
533 }
534 #[automatically_derived]
536 impl<
537 T: alloy_contract::private::Transport + ::core::clone::Clone,
538 P: alloy_contract::private::Provider<T, N>,
539 N: alloy_contract::private::Network,
540 > BN254Instance<T, P, N>
541 {
542 pub fn event_filter<E: alloy_sol_types::SolEvent>(
547 &self,
548 ) -> alloy_contract::Event<T, &P, E, N> {
549 alloy_contract::Event::new_sol(&self.provider, &self.address)
550 }
551 }
552}
553#[allow(
563 non_camel_case_types,
564 non_snake_case,
565 clippy::pub_underscore_fields,
566 clippy::style,
567 clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570 use alloy::sol_types as alloy_sol_types;
571
572 use super::*;
573 #[derive()]
574 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578 #[derive(Clone)]
579 pub struct PlonkProof {
580 #[allow(missing_docs)]
581 pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582 #[allow(missing_docs)]
583 pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584 #[allow(missing_docs)]
585 pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586 #[allow(missing_docs)]
587 pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588 #[allow(missing_docs)]
589 pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590 #[allow(missing_docs)]
591 pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592 #[allow(missing_docs)]
593 pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594 #[allow(missing_docs)]
595 pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596 #[allow(missing_docs)]
597 pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598 #[allow(missing_docs)]
599 pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600 #[allow(missing_docs)]
601 pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602 #[allow(missing_docs)]
603 pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604 #[allow(missing_docs)]
605 pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606 #[allow(missing_docs)]
607 pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608 #[allow(missing_docs)]
609 pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610 #[allow(missing_docs)]
611 pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612 #[allow(missing_docs)]
613 pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614 #[allow(missing_docs)]
615 pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616 #[allow(missing_docs)]
617 pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618 #[allow(missing_docs)]
619 pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620 #[allow(missing_docs)]
621 pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622 #[allow(missing_docs)]
623 pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624 #[allow(missing_docs)]
625 pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626 }
627 #[allow(
628 non_camel_case_types,
629 non_snake_case,
630 clippy::pub_underscore_fields,
631 clippy::style
632 )]
633 const _: () = {
634 use alloy::sol_types as alloy_sol_types;
635 #[doc(hidden)]
636 type UnderlyingSolTuple<'a> = (
637 BN254::G1Point,
638 BN254::G1Point,
639 BN254::G1Point,
640 BN254::G1Point,
641 BN254::G1Point,
642 BN254::G1Point,
643 BN254::G1Point,
644 BN254::G1Point,
645 BN254::G1Point,
646 BN254::G1Point,
647 BN254::G1Point,
648 BN254::G1Point,
649 BN254::G1Point,
650 BN254::ScalarField,
651 BN254::ScalarField,
652 BN254::ScalarField,
653 BN254::ScalarField,
654 BN254::ScalarField,
655 BN254::ScalarField,
656 BN254::ScalarField,
657 BN254::ScalarField,
658 BN254::ScalarField,
659 BN254::ScalarField,
660 );
661 #[doc(hidden)]
662 type UnderlyingRustTuple<'a> = (
663 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685 <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686 );
687 #[cfg(test)]
688 #[allow(dead_code, unreachable_patterns)]
689 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690 match _t {
691 alloy_sol_types::private::AssertTypeEq::<
692 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693 >(_) => {},
694 }
695 }
696 #[automatically_derived]
697 #[doc(hidden)]
698 impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699 fn from(value: PlonkProof) -> Self {
700 (
701 value.wire0,
702 value.wire1,
703 value.wire2,
704 value.wire3,
705 value.wire4,
706 value.prodPerm,
707 value.split0,
708 value.split1,
709 value.split2,
710 value.split3,
711 value.split4,
712 value.zeta,
713 value.zetaOmega,
714 value.wireEval0,
715 value.wireEval1,
716 value.wireEval2,
717 value.wireEval3,
718 value.wireEval4,
719 value.sigmaEval0,
720 value.sigmaEval1,
721 value.sigmaEval2,
722 value.sigmaEval3,
723 value.prodPermZetaOmegaEval,
724 )
725 }
726 }
727 #[automatically_derived]
728 #[doc(hidden)]
729 impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731 Self {
732 wire0: tuple.0,
733 wire1: tuple.1,
734 wire2: tuple.2,
735 wire3: tuple.3,
736 wire4: tuple.4,
737 prodPerm: tuple.5,
738 split0: tuple.6,
739 split1: tuple.7,
740 split2: tuple.8,
741 split3: tuple.9,
742 split4: tuple.10,
743 zeta: tuple.11,
744 zetaOmega: tuple.12,
745 wireEval0: tuple.13,
746 wireEval1: tuple.14,
747 wireEval2: tuple.15,
748 wireEval3: tuple.16,
749 wireEval4: tuple.17,
750 sigmaEval0: tuple.18,
751 sigmaEval1: tuple.19,
752 sigmaEval2: tuple.20,
753 sigmaEval3: tuple.21,
754 prodPermZetaOmegaEval: tuple.22,
755 }
756 }
757 }
758 #[automatically_derived]
759 impl alloy_sol_types::SolValue for PlonkProof {
760 type SolType = Self;
761 }
762 #[automatically_derived]
763 impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764 #[inline]
765 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766 (
767 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789 <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790 &self.prodPermZetaOmegaEval,
791 ),
792 )
793 }
794 #[inline]
795 fn stv_abi_encoded_size(&self) -> usize {
796 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797 return size;
798 }
799 let tuple =
800 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802 }
803 #[inline]
804 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806 }
807 #[inline]
808 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809 let tuple =
810 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812 &tuple, out,
813 )
814 }
815 #[inline]
816 fn stv_abi_packed_encoded_size(&self) -> usize {
817 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818 return size;
819 }
820 let tuple =
821 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823 &tuple,
824 )
825 }
826 }
827 #[automatically_derived]
828 impl alloy_sol_types::SolType for PlonkProof {
829 type RustType = Self;
830 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832 const ENCODED_SIZE: Option<usize> =
833 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834 const PACKED_ENCODED_SIZE: Option<usize> =
835 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836 #[inline]
837 fn valid_token(token: &Self::Token<'_>) -> bool {
838 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839 }
840 #[inline]
841 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844 }
845 }
846 #[automatically_derived]
847 impl alloy_sol_types::SolStruct for PlonkProof {
848 const NAME: &'static str = "PlonkProof";
849 #[inline]
850 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851 alloy_sol_types::private::Cow::Borrowed(
852 "PlonkProof(BN254.G1Point wire0,BN254.G1Point wire1,BN254.G1Point wire2,BN254.G1Point wire3,BN254.G1Point wire4,BN254.G1Point prodPerm,BN254.G1Point split0,BN254.G1Point split1,BN254.G1Point split2,BN254.G1Point split3,BN254.G1Point split4,BN254.G1Point zeta,BN254.G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
853 )
854 }
855 #[inline]
856 fn eip712_components(
857 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858 {
859 let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861 components
862 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864 components
865 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867 components
868 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870 components
871 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873 components
874 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876 components
877 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879 components
880 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882 components
883 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885 components
886 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888 components
889 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891 components
892 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894 components
895 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897 components
898 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899 components
900 }
901 #[inline]
902 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903 [
904 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910 .0,
911 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918 .0,
919 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920 &self.wireEval0,
921 )
922 .0,
923 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924 &self.wireEval1,
925 )
926 .0,
927 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928 &self.wireEval2,
929 )
930 .0,
931 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932 &self.wireEval3,
933 )
934 .0,
935 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936 &self.wireEval4,
937 )
938 .0,
939 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940 &self.sigmaEval0,
941 )
942 .0,
943 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944 &self.sigmaEval1,
945 )
946 .0,
947 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948 &self.sigmaEval2,
949 )
950 .0,
951 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952 &self.sigmaEval3,
953 )
954 .0,
955 <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956 &self.prodPermZetaOmegaEval,
957 )
958 .0,
959 ]
960 .concat()
961 }
962 }
963 #[automatically_derived]
964 impl alloy_sol_types::EventTopic for PlonkProof {
965 #[inline]
966 fn topic_preimage_length(rust: &Self::RustType) -> usize {
967 0usize
968 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969 &rust.wire0,
970 )
971 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972 &rust.wire1,
973 )
974 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975 &rust.wire2,
976 )
977 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978 &rust.wire3,
979 )
980 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981 &rust.wire4,
982 )
983 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984 &rust.prodPerm,
985 )
986 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987 &rust.split0,
988 )
989 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990 &rust.split1,
991 )
992 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993 &rust.split2,
994 )
995 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996 &rust.split3,
997 )
998 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999 &rust.split4,
1000 )
1001 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002 &rust.zeta,
1003 )
1004 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005 &rust.zetaOmega,
1006 )
1007 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008 &rust.wireEval0,
1009 )
1010 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011 &rust.wireEval1,
1012 )
1013 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014 &rust.wireEval2,
1015 )
1016 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017 &rust.wireEval3,
1018 )
1019 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020 &rust.wireEval4,
1021 )
1022 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023 &rust.sigmaEval0,
1024 )
1025 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026 &rust.sigmaEval1,
1027 )
1028 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029 &rust.sigmaEval2,
1030 )
1031 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032 &rust.sigmaEval3,
1033 )
1034 + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035 &rust.prodPermZetaOmegaEval,
1036 )
1037 }
1038 #[inline]
1039 fn encode_topic_preimage(
1040 rust: &Self::RustType,
1041 out: &mut alloy_sol_types::private::Vec<u8>,
1042 ) {
1043 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045 &rust.wire0,
1046 out,
1047 );
1048 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049 &rust.wire1,
1050 out,
1051 );
1052 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053 &rust.wire2,
1054 out,
1055 );
1056 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057 &rust.wire3,
1058 out,
1059 );
1060 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061 &rust.wire4,
1062 out,
1063 );
1064 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065 &rust.prodPerm,
1066 out,
1067 );
1068 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069 &rust.split0,
1070 out,
1071 );
1072 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073 &rust.split1,
1074 out,
1075 );
1076 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077 &rust.split2,
1078 out,
1079 );
1080 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081 &rust.split3,
1082 out,
1083 );
1084 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085 &rust.split4,
1086 out,
1087 );
1088 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089 &rust.zeta, out,
1090 );
1091 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092 &rust.zetaOmega,
1093 out,
1094 );
1095 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096 &rust.wireEval0,
1097 out,
1098 );
1099 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100 &rust.wireEval1,
1101 out,
1102 );
1103 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104 &rust.wireEval2,
1105 out,
1106 );
1107 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108 &rust.wireEval3,
1109 out,
1110 );
1111 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112 &rust.wireEval4,
1113 out,
1114 );
1115 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116 &rust.sigmaEval0,
1117 out,
1118 );
1119 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120 &rust.sigmaEval1,
1121 out,
1122 );
1123 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124 &rust.sigmaEval2,
1125 out,
1126 );
1127 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128 &rust.sigmaEval3,
1129 out,
1130 );
1131 <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132 &rust.prodPermZetaOmegaEval,
1133 out,
1134 );
1135 }
1136 #[inline]
1137 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138 let mut out = alloy_sol_types::private::Vec::new();
1139 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141 }
1142 }
1143 };
1144 #[derive()]
1145 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149 #[derive(Clone)]
1150 pub struct VerifyingKey {
1151 #[allow(missing_docs)]
1152 pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153 #[allow(missing_docs)]
1154 pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155 #[allow(missing_docs)]
1156 pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157 #[allow(missing_docs)]
1158 pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159 #[allow(missing_docs)]
1160 pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161 #[allow(missing_docs)]
1162 pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163 #[allow(missing_docs)]
1164 pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165 #[allow(missing_docs)]
1166 pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167 #[allow(missing_docs)]
1168 pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169 #[allow(missing_docs)]
1170 pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171 #[allow(missing_docs)]
1172 pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173 #[allow(missing_docs)]
1174 pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175 #[allow(missing_docs)]
1176 pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177 #[allow(missing_docs)]
1178 pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179 #[allow(missing_docs)]
1180 pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181 #[allow(missing_docs)]
1182 pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183 #[allow(missing_docs)]
1184 pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185 #[allow(missing_docs)]
1186 pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187 #[allow(missing_docs)]
1188 pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189 #[allow(missing_docs)]
1190 pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191 #[allow(missing_docs)]
1192 pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193 #[allow(missing_docs)]
1194 pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195 }
1196 #[allow(
1197 non_camel_case_types,
1198 non_snake_case,
1199 clippy::pub_underscore_fields,
1200 clippy::style
1201 )]
1202 const _: () = {
1203 use alloy::sol_types as alloy_sol_types;
1204 #[doc(hidden)]
1205 type UnderlyingSolTuple<'a> = (
1206 alloy::sol_types::sol_data::Uint<256>,
1207 alloy::sol_types::sol_data::Uint<256>,
1208 BN254::G1Point,
1209 BN254::G1Point,
1210 BN254::G1Point,
1211 BN254::G1Point,
1212 BN254::G1Point,
1213 BN254::G1Point,
1214 BN254::G1Point,
1215 BN254::G1Point,
1216 BN254::G1Point,
1217 BN254::G1Point,
1218 BN254::G1Point,
1219 BN254::G1Point,
1220 BN254::G1Point,
1221 BN254::G1Point,
1222 BN254::G1Point,
1223 BN254::G1Point,
1224 BN254::G1Point,
1225 BN254::G1Point,
1226 alloy::sol_types::sol_data::FixedBytes<32>,
1227 alloy::sol_types::sol_data::FixedBytes<32>,
1228 );
1229 #[doc(hidden)]
1230 type UnderlyingRustTuple<'a> = (
1231 alloy::sol_types::private::primitives::aliases::U256,
1232 alloy::sol_types::private::primitives::aliases::U256,
1233 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250 <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251 alloy::sol_types::private::FixedBytes<32>,
1252 alloy::sol_types::private::FixedBytes<32>,
1253 );
1254 #[cfg(test)]
1255 #[allow(dead_code, unreachable_patterns)]
1256 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257 match _t {
1258 alloy_sol_types::private::AssertTypeEq::<
1259 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260 >(_) => {},
1261 }
1262 }
1263 #[automatically_derived]
1264 #[doc(hidden)]
1265 impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266 fn from(value: VerifyingKey) -> Self {
1267 (
1268 value.domainSize,
1269 value.numInputs,
1270 value.sigma0,
1271 value.sigma1,
1272 value.sigma2,
1273 value.sigma3,
1274 value.sigma4,
1275 value.q1,
1276 value.q2,
1277 value.q3,
1278 value.q4,
1279 value.qM12,
1280 value.qM34,
1281 value.qO,
1282 value.qC,
1283 value.qH1,
1284 value.qH2,
1285 value.qH3,
1286 value.qH4,
1287 value.qEcc,
1288 value.g2LSB,
1289 value.g2MSB,
1290 )
1291 }
1292 }
1293 #[automatically_derived]
1294 #[doc(hidden)]
1295 impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297 Self {
1298 domainSize: tuple.0,
1299 numInputs: tuple.1,
1300 sigma0: tuple.2,
1301 sigma1: tuple.3,
1302 sigma2: tuple.4,
1303 sigma3: tuple.5,
1304 sigma4: tuple.6,
1305 q1: tuple.7,
1306 q2: tuple.8,
1307 q3: tuple.9,
1308 q4: tuple.10,
1309 qM12: tuple.11,
1310 qM34: tuple.12,
1311 qO: tuple.13,
1312 qC: tuple.14,
1313 qH1: tuple.15,
1314 qH2: tuple.16,
1315 qH3: tuple.17,
1316 qH4: tuple.18,
1317 qEcc: tuple.19,
1318 g2LSB: tuple.20,
1319 g2MSB: tuple.21,
1320 }
1321 }
1322 }
1323 #[automatically_derived]
1324 impl alloy_sol_types::SolValue for VerifyingKey {
1325 type SolType = Self;
1326 }
1327 #[automatically_derived]
1328 impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329 #[inline]
1330 fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331 (
1332 <alloy::sol_types::sol_data::Uint<
1333 256,
1334 > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335 <alloy::sol_types::sol_data::Uint<
1336 256,
1337 > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355 <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356 <alloy::sol_types::sol_data::FixedBytes<
1357 32,
1358 > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359 <alloy::sol_types::sol_data::FixedBytes<
1360 32,
1361 > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362 )
1363 }
1364 #[inline]
1365 fn stv_abi_encoded_size(&self) -> usize {
1366 if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367 return size;
1368 }
1369 let tuple =
1370 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372 }
1373 #[inline]
1374 fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375 <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376 }
1377 #[inline]
1378 fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379 let tuple =
1380 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382 &tuple, out,
1383 )
1384 }
1385 #[inline]
1386 fn stv_abi_packed_encoded_size(&self) -> usize {
1387 if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388 return size;
1389 }
1390 let tuple =
1391 <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393 &tuple,
1394 )
1395 }
1396 }
1397 #[automatically_derived]
1398 impl alloy_sol_types::SolType for VerifyingKey {
1399 type RustType = Self;
1400 type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401 const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402 const ENCODED_SIZE: Option<usize> =
1403 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404 const PACKED_ENCODED_SIZE: Option<usize> =
1405 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406 #[inline]
1407 fn valid_token(token: &Self::Token<'_>) -> bool {
1408 <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409 }
1410 #[inline]
1411 fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412 let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413 <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414 }
1415 }
1416 #[automatically_derived]
1417 impl alloy_sol_types::SolStruct for VerifyingKey {
1418 const NAME: &'static str = "VerifyingKey";
1419 #[inline]
1420 fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421 alloy_sol_types::private::Cow::Borrowed(
1422 "VerifyingKey(uint256 domainSize,uint256 numInputs,BN254.G1Point sigma0,BN254.G1Point sigma1,BN254.G1Point sigma2,BN254.G1Point sigma3,BN254.G1Point sigma4,BN254.G1Point q1,BN254.G1Point q2,BN254.G1Point q3,BN254.G1Point q4,BN254.G1Point qM12,BN254.G1Point qM34,BN254.G1Point qO,BN254.G1Point qC,BN254.G1Point qH1,BN254.G1Point qH2,BN254.G1Point qH3,BN254.G1Point qH4,BN254.G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1423 )
1424 }
1425 #[inline]
1426 fn eip712_components(
1427 ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428 {
1429 let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431 components
1432 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434 components
1435 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437 components
1438 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440 components
1441 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443 components
1444 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446 components
1447 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449 components
1450 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452 components
1453 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455 components
1456 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458 components
1459 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461 components
1462 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464 components
1465 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467 components
1468 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470 components
1471 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473 components
1474 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476 components
1477 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479 components
1480 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481 components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482 components
1483 .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484 components
1485 }
1486 #[inline]
1487 fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488 [
1489 <alloy::sol_types::sol_data::Uint<
1490 256,
1491 > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492 .0,
1493 <alloy::sol_types::sol_data::Uint<
1494 256,
1495 > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496 .0,
1497 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498 &self.sigma0,
1499 )
1500 .0,
1501 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502 &self.sigma1,
1503 )
1504 .0,
1505 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506 &self.sigma2,
1507 )
1508 .0,
1509 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510 &self.sigma3,
1511 )
1512 .0,
1513 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514 &self.sigma4,
1515 )
1516 .0,
1517 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518 &self.q1,
1519 )
1520 .0,
1521 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522 &self.q2,
1523 )
1524 .0,
1525 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526 &self.q3,
1527 )
1528 .0,
1529 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530 &self.q4,
1531 )
1532 .0,
1533 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534 &self.qM12,
1535 )
1536 .0,
1537 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538 &self.qM34,
1539 )
1540 .0,
1541 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542 &self.qO,
1543 )
1544 .0,
1545 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546 &self.qC,
1547 )
1548 .0,
1549 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550 &self.qH1,
1551 )
1552 .0,
1553 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554 &self.qH2,
1555 )
1556 .0,
1557 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558 &self.qH3,
1559 )
1560 .0,
1561 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562 &self.qH4,
1563 )
1564 .0,
1565 <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566 &self.qEcc,
1567 )
1568 .0,
1569 <alloy::sol_types::sol_data::FixedBytes<
1570 32,
1571 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572 .0,
1573 <alloy::sol_types::sol_data::FixedBytes<
1574 32,
1575 > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576 .0,
1577 ]
1578 .concat()
1579 }
1580 }
1581 #[automatically_derived]
1582 impl alloy_sol_types::EventTopic for VerifyingKey {
1583 #[inline]
1584 fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585 0usize
1586 + <alloy::sol_types::sol_data::Uint<
1587 256,
1588 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589 &rust.domainSize,
1590 )
1591 + <alloy::sol_types::sol_data::Uint<
1592 256,
1593 > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594 &rust.numInputs,
1595 )
1596 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597 &rust.sigma0,
1598 )
1599 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600 &rust.sigma1,
1601 )
1602 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603 &rust.sigma2,
1604 )
1605 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606 &rust.sigma3,
1607 )
1608 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609 &rust.sigma4,
1610 )
1611 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612 &rust.q1,
1613 )
1614 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615 &rust.q2,
1616 )
1617 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618 &rust.q3,
1619 )
1620 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621 &rust.q4,
1622 )
1623 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624 &rust.qM12,
1625 )
1626 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627 &rust.qM34,
1628 )
1629 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630 &rust.qO,
1631 )
1632 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633 &rust.qC,
1634 )
1635 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636 &rust.qH1,
1637 )
1638 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639 &rust.qH2,
1640 )
1641 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642 &rust.qH3,
1643 )
1644 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645 &rust.qH4,
1646 )
1647 + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648 &rust.qEcc,
1649 )
1650 + <alloy::sol_types::sol_data::FixedBytes<
1651 32,
1652 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653 + <alloy::sol_types::sol_data::FixedBytes<
1654 32,
1655 > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656 }
1657 #[inline]
1658 fn encode_topic_preimage(
1659 rust: &Self::RustType,
1660 out: &mut alloy_sol_types::private::Vec<u8>,
1661 ) {
1662 out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663 <alloy::sol_types::sol_data::Uint<
1664 256,
1665 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666 &rust.domainSize,
1667 out,
1668 );
1669 <alloy::sol_types::sol_data::Uint<
1670 256,
1671 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672 &rust.numInputs,
1673 out,
1674 );
1675 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676 &rust.sigma0,
1677 out,
1678 );
1679 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680 &rust.sigma1,
1681 out,
1682 );
1683 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684 &rust.sigma2,
1685 out,
1686 );
1687 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688 &rust.sigma3,
1689 out,
1690 );
1691 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692 &rust.sigma4,
1693 out,
1694 );
1695 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696 &rust.q1, out,
1697 );
1698 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699 &rust.q2, out,
1700 );
1701 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702 &rust.q3, out,
1703 );
1704 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705 &rust.q4, out,
1706 );
1707 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708 &rust.qM12, out,
1709 );
1710 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711 &rust.qM34, out,
1712 );
1713 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714 &rust.qO, out,
1715 );
1716 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717 &rust.qC, out,
1718 );
1719 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720 &rust.qH1, out,
1721 );
1722 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723 &rust.qH2, out,
1724 );
1725 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726 &rust.qH3, out,
1727 );
1728 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729 &rust.qH4, out,
1730 );
1731 <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732 &rust.qEcc, out,
1733 );
1734 <alloy::sol_types::sol_data::FixedBytes<
1735 32,
1736 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737 &rust.g2LSB,
1738 out,
1739 );
1740 <alloy::sol_types::sol_data::FixedBytes<
1741 32,
1742 > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743 &rust.g2MSB,
1744 out,
1745 );
1746 }
1747 #[inline]
1748 fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749 let mut out = alloy_sol_types::private::Vec::new();
1750 <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751 alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752 }
1753 }
1754 };
1755 use alloy::contract as alloy_contract;
1756 #[inline]
1760 pub const fn new<
1761 T: alloy_contract::private::Transport + ::core::clone::Clone,
1762 P: alloy_contract::private::Provider<T, N>,
1763 N: alloy_contract::private::Network,
1764 >(
1765 address: alloy_sol_types::private::Address,
1766 provider: P,
1767 ) -> IPlonkVerifierInstance<T, P, N> {
1768 IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769 }
1770 #[derive(Clone)]
1782 pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783 address: alloy_sol_types::private::Address,
1784 provider: P,
1785 _network_transport: ::core::marker::PhantomData<(N, T)>,
1786 }
1787 #[automatically_derived]
1788 impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789 #[inline]
1790 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791 f.debug_tuple("IPlonkVerifierInstance")
1792 .field(&self.address)
1793 .finish()
1794 }
1795 }
1796 #[automatically_derived]
1798 impl<
1799 T: alloy_contract::private::Transport + ::core::clone::Clone,
1800 P: alloy_contract::private::Provider<T, N>,
1801 N: alloy_contract::private::Network,
1802 > IPlonkVerifierInstance<T, P, N>
1803 {
1804 #[inline]
1808 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809 Self {
1810 address,
1811 provider,
1812 _network_transport: ::core::marker::PhantomData,
1813 }
1814 }
1815 #[inline]
1817 pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818 &self.address
1819 }
1820 #[inline]
1822 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823 self.address = address;
1824 }
1825 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827 self.set_address(address);
1828 self
1829 }
1830 #[inline]
1832 pub const fn provider(&self) -> &P {
1833 &self.provider
1834 }
1835 }
1836 impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837 #[inline]
1839 pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840 IPlonkVerifierInstance {
1841 address: self.address,
1842 provider: ::core::clone::Clone::clone(&self.provider),
1843 _network_transport: ::core::marker::PhantomData,
1844 }
1845 }
1846 }
1847 #[automatically_derived]
1849 impl<
1850 T: alloy_contract::private::Transport + ::core::clone::Clone,
1851 P: alloy_contract::private::Provider<T, N>,
1852 N: alloy_contract::private::Network,
1853 > IPlonkVerifierInstance<T, P, N>
1854 {
1855 pub fn call_builder<C: alloy_sol_types::SolCall>(
1860 &self,
1861 call: &C,
1862 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864 }
1865 }
1866 #[automatically_derived]
1868 impl<
1869 T: alloy_contract::private::Transport + ::core::clone::Clone,
1870 P: alloy_contract::private::Provider<T, N>,
1871 N: alloy_contract::private::Network,
1872 > IPlonkVerifierInstance<T, P, N>
1873 {
1874 pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879 &self,
1880 ) -> alloy_contract::Event<T, &P, E, N> {
1881 alloy_contract::Event::new_sol(&self.provider, &self.address)
1882 }
1883 }
1884}
1885#[allow(
2610 non_camel_case_types,
2611 non_snake_case,
2612 clippy::pub_underscore_fields,
2613 clippy::style,
2614 clippy::empty_structs_with_brackets
2615)]
2616pub mod PlonkVerifier {
2617 use alloy::sol_types as alloy_sol_types;
2618
2619 use super::*;
2620 #[rustfmt::skip]
2626 #[allow(clippy::all)]
2627 pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2628 b"a\"\x9Da\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\x004W_5`\xE0\x1C\x80c\xCESzw\x14a\08W[__\xFD[a\0Ka\0F6`\x04a 1V[a\0_V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0i\x82a\0\xD0V[a\0y\x83_[` \x02\x01Qa\x02\x0BV[a\0\x84\x83`\x01a\0oV[a\0\x8F\x83`\x02a\0oV[a\0\x9A\x83`\x03a\0oV[a\0\xA5\x83`\x04a\0oV[a\0\xB0\x83`\x05a\0oV[a\0\xBB\x83`\x06a\0oV[a\0\xC6\x84\x84\x84a\x02qV[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x04eV[a\0\xE8\x81` \x01Qa\x04eV[a\0\xF5\x81`@\x01Qa\x04eV[a\x01\x02\x81``\x01Qa\x04eV[a\x01\x0F\x81`\x80\x01Qa\x04eV[a\x01\x1C\x81`\xA0\x01Qa\x04eV[a\x01)\x81`\xC0\x01Qa\x04eV[a\x016\x81`\xE0\x01Qa\x04eV[a\x01D\x81a\x01\0\x01Qa\x04eV[a\x01R\x81a\x01 \x01Qa\x04eV[a\x01`\x81a\x01@\x01Qa\x04eV[a\x01n\x81a\x01`\x01Qa\x04eV[a\x01|\x81a\x01\x80\x01Qa\x04eV[a\x01\x8A\x81a\x01\xA0\x01Qa\x02\x0BV[a\x01\x98\x81a\x01\xC0\x01Qa\x02\x0BV[a\x01\xA6\x81a\x01\xE0\x01Qa\x02\x0BV[a\x01\xB4\x81a\x02\0\x01Qa\x02\x0BV[a\x01\xC2\x81a\x02 \x01Qa\x02\x0BV[a\x01\xD0\x81a\x02@\x01Qa\x02\x0BV[a\x01\xDE\x81a\x02`\x01Qa\x02\x0BV[a\x01\xEC\x81a\x02\x80\x01Qa\x02\x0BV[a\x01\xFA\x81a\x02\xA0\x01Qa\x02\x0BV[a\x02\x08\x81a\x02\xC0\x01Qa\x02\x0BV[PV[_Q` a\"q_9_Q\x90_R\x81\x10\x80a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02\x97W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02\xA3\x85\x85\x85a\x05\x13V[\x90P_a\x02\xB2\x86_\x01Qa\nsV[\x90P_a\x02\xC4\x82\x84`\xA0\x01Q\x88a\x0EQV[\x90Pa\x02\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\x15\x87a\x01`\x01Qa\x03\x10\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0E\xAEV[a\x0FOV[\x91P__a\x03%\x8B\x88\x87\x8Ca\x0F\xF3V[\x91P\x91Pa\x036\x81a\x03\x10\x84a\x12+V[\x92Pa\x03O\x83a\x03\x10\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0E\xAEV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a\"q_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03\x92\x85a\x03\x10\x8Da\x01\x80\x01Q\x84a\x0E\xAEV[\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\x04S\x87\x82a\x04F\x89a\x12+V[a\x04Na\x12\xC8V[a\x13\x95V[\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\x04\x9EWPPPV[\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\x05\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PPPV[a\x05S`@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\"q_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R\x84Q\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``\x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`\x80\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP_\x82Ra\x07\xC0\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\n{a\x1D\x0EV[\x81b\x01\0\0\x03a\x0B\xBAW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0C\xFAW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x0E8W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0Er`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E|\x84\x84a\x14uV[\x80\x82Ra\x0E\x8C\x90\x85\x90\x85\x90a\x14\xC6V[` \x82\x01R\x80Qa\x0E\xA2\x90\x85\x90\x84\x90\x86\x90a\x155V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0E\xC9a\x1D2V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0E\xF9W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Fja\x1DPV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0F\xA5W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x10&\x87\x87\x87\x87a\x16\x83V[\x90P_Q` a\"q_9_Q\x90_R_a\x10B\x88\x87\x89a\x1BMV[\x90Pa\x10N\x81\x83a\"\x1EV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x10z\x85a\x03\x10\x8A_\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xA2\x86a\x03\x10\x8A` \x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xCA\x86a\x03\x10\x8A`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xF2\x86a\x03\x10\x8A``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x1A\x86a\x03\x10\x8A`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x11B\x86a\x03\x10\x8D`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x11j\x86a\x03\x10\x8D``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x92\x86a\x03\x10\x8D`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\xBA\x86a\x03\x10\x8D`\xA0\x01Q\x84a\x0E\xAEV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\xE4\x87a\x03\x10\x8B`\xA0\x01Q\x84a\x0E\xAEV[\x96Pa\x12\x1Aa\x12\x14`@\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\xAEV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12RWP\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\x12\x96\x91\x90a\"QV[a\x12\xC0\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\"\x1EV[\x90R\x92\x91PPV[a\x12\xEF`@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\x14gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x02dV[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a\"q_9_Q\x90_R\x90\x83\x80\x15a\x14\xB6W\x84\x93P_[\x82\x81\x10\x15a\x14\xAAW\x83\x85\x86\t\x94P`\x01\x01a\x14\x94V[P`\x01\x84\x03\x93Pa\x14\xBDV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x14\xD7WP`\x01a\0\xC9V[\x81_\x03a\x14\xE5WP_a\0\xC9V[` \x84\x01Q_Q` a\"q_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x15\x13W`\x01\x87\x03\x92Pa\x15\x1AV[`\x01\x84\x03\x92P[Pa\x15$\x82a\x1C8V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a\"q_9_Q\x90_R\x82\x82\x03a\x15\xAEW`\x01_[`\x07\x81\x10\x15a\x15\xA3W\x81\x86\x03a\x15\x80W\x86\x81`\x07\x81\x10a\x15qWa\x15qa\"\nV[` \x02\x01Q\x93PPPPa\x14mV[\x82\x80a\x15\x8EWa\x15\x8Ea\"=V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x15OV[P_\x92PPPa\x14mV[a\x15\xB6a\x1DnV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x15\xF7W` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x15\xCAV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x16KW\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\x16\x0BV[PPPP\x80\x92PP_a\x16]\x83a\x1C8V[\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\"q_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\xF0\x87`\xA0\x01Q\x86a\x0E\xAEV[\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\x18\xB7\x86a\x03\x10\x8C`\xC0\x01Q\x88\x85a\x18\xB2\x91\x90a\"\x1EV[a\x0E\xAEV[\x95Pa\x18\xD0\x86a\x03\x10\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0E\xAEV[\x95Pa\x18\xEA\x86a\x03\x10\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0E\xAEV[\x95Pa\x19\x04\x86a\x03\x10\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0E\xAEV[\x95Pa\x19\x1E\x86a\x03\x10\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0E\xAEV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x19C\x86a\x03\x10\x8Ca\x01`\x01Q\x86a\x0E\xAEV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x19h\x86a\x03\x10\x8Ca\x01\x80\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x97\x86a\x03\x10\x8Ca\x01\xE0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xC6\x86a\x03\x10\x8Ca\x02\0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xF5\x86a\x03\x10\x8Ca\x02 \x01Q\x86a\x0E\xAEV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1A$\x86a\x03\x10\x8Ca\x02@\x01Q\x86a\x0E\xAEV[\x95Pa\x1AA\x86a\x03\x10\x8Ca\x01\xA0\x01Qa\x18\xB2\x8Ba\x02 \x01Qa\x1C\xD9V[\x95Pa\x1AR\x86\x8Ba\x01\xC0\x01Qa\x0FOV[\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\x98\x86a\x03\x10\x8Ca\x02`\x01Q\x86a\x0E\xAEV[\x95Pa\x1A\xA6\x88_\x01Qa\x1C\xD9V[\x94Pa\x1A\xBA\x86a\x03\x10\x89`\xC0\x01Q\x88a\x0E\xAEV[\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\xEE\x86a\x03\x10\x89`\xE0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B\t\x86a\x03\x10\x89a\x01\0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B$\x86a\x03\x10\x89a\x01 \x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B?\x86a\x03\x10\x89a\x01@\x01Q\x88a\x0E\xAEV[\x9A\x99PPPPPPPPPPV[___Q` a\"q_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[____Q` a\"q_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\x1C\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x91\x90PV[_a\x1C\xF1_Q` a\"q_9_Q\x90_R\x83a\"QV[a\x1D\x08\x90_Q` a\"q_9_Q\x90_Ra\"\x1EV[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1D-a\x1DnV[\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`\xE0\x01`@R\x80`\x07\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\xC4Wa\x1D\xC4a\x1D\x8CV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[_`@\x82\x84\x03\x12\x15a\x1D\xFEW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E!Wa\x1E!a\x1D\x8CV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1EJW__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1EmWa\x1Ema\x1D\x8CV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1E\x81W__\xFD[\x84[\x81\x81\x10\x15a\x1E\x9BW\x805\x83R` \x92\x83\x01\x92\x01a\x1E\x83V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1E\xB7W__\xFD[a\x1E\xBFa\x1D\xA0V[\x90Pa\x1E\xCB\x83\x83a\x1D\xEEV[\x81Ra\x1E\xDA\x83`@\x84\x01a\x1D\xEEV[` \x82\x01Ra\x1E\xEC\x83`\x80\x84\x01a\x1D\xEEV[`@\x82\x01Ra\x1E\xFE\x83`\xC0\x84\x01a\x1D\xEEV[``\x82\x01Ra\x1F\x11\x83a\x01\0\x84\x01a\x1D\xEEV[`\x80\x82\x01Ra\x1F$\x83a\x01@\x84\x01a\x1D\xEEV[`\xA0\x82\x01Ra\x1F7\x83a\x01\x80\x84\x01a\x1D\xEEV[`\xC0\x82\x01Ra\x1FJ\x83a\x01\xC0\x84\x01a\x1D\xEEV[`\xE0\x82\x01Ra\x1F]\x83a\x02\0\x84\x01a\x1D\xEEV[a\x01\0\x82\x01Ra\x1Fq\x83a\x02@\x84\x01a\x1D\xEEV[a\x01 \x82\x01Ra\x1F\x85\x83a\x02\x80\x84\x01a\x1D\xEEV[a\x01@\x82\x01Ra\x1F\x99\x83a\x02\xC0\x84\x01a\x1D\xEEV[a\x01`\x82\x01Ra\x1F\xAD\x83a\x03\0\x84\x01a\x1D\xEEV[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 EW__\xFD[a\x05\0\x81\x12\x15a SW__\xFD[Pa \\a\x1D\xCAV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra w\x86`@\x87\x01a\x1D\xEEV[`@\x82\x01Ra \x89\x86`\x80\x87\x01a\x1D\xEEV[``\x82\x01Ra \x9B\x86`\xC0\x87\x01a\x1D\xEEV[`\x80\x82\x01Ra \xAE\x86a\x01\0\x87\x01a\x1D\xEEV[`\xA0\x82\x01Ra \xC1\x86a\x01@\x87\x01a\x1D\xEEV[`\xC0\x82\x01Ra \xD4\x86a\x01\x80\x87\x01a\x1D\xEEV[`\xE0\x82\x01Ra \xE7\x86a\x01\xC0\x87\x01a\x1D\xEEV[a\x01\0\x82\x01Ra \xFB\x86a\x02\0\x87\x01a\x1D\xEEV[a\x01 \x82\x01Ra!\x0F\x86a\x02@\x87\x01a\x1D\xEEV[a\x01@\x82\x01Ra!#\x86a\x02\x80\x87\x01a\x1D\xEEV[a\x01`\x82\x01Ra!7\x86a\x02\xC0\x87\x01a\x1D\xEEV[a\x01\x80\x82\x01Ra!K\x86a\x03\0\x87\x01a\x1D\xEEV[a\x01\xA0\x82\x01Ra!_\x86a\x03@\x87\x01a\x1D\xEEV[a\x01\xC0\x82\x01Ra!s\x86a\x03\x80\x87\x01a\x1D\xEEV[a\x01\xE0\x82\x01Ra!\x87\x86a\x03\xC0\x87\x01a\x1D\xEEV[a\x02\0\x82\x01Ra!\x9B\x86a\x04\0\x87\x01a\x1D\xEEV[a\x02 \x82\x01Ra!\xAF\x86a\x04@\x87\x01a\x1D\xEEV[a\x02@\x82\x01Ra!\xC3\x86a\x04\x80\x87\x01a\x1D\xEEV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa!\xF1\x85a\x05\0\x86\x01a\x1E;V[\x91Pa\"\x01\x85a\x05\xE0\x86\x01a\x1E\xA6V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1D\x08WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a\"kWcNH{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",
2629 );
2630 #[rustfmt::skip]
2636 #[allow(clippy::all)]
2637 pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
2638 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\x004W_5`\xE0\x1C\x80c\xCESzw\x14a\08W[__\xFD[a\0Ka\0F6`\x04a 1V[a\0_V[`@Q\x90\x15\x15\x81R` \x01`@Q\x80\x91\x03\x90\xF3[_a\0i\x82a\0\xD0V[a\0y\x83_[` \x02\x01Qa\x02\x0BV[a\0\x84\x83`\x01a\0oV[a\0\x8F\x83`\x02a\0oV[a\0\x9A\x83`\x03a\0oV[a\0\xA5\x83`\x04a\0oV[a\0\xB0\x83`\x05a\0oV[a\0\xBB\x83`\x06a\0oV[a\0\xC6\x84\x84\x84a\x02qV[\x90P[\x93\x92PPPV[\x80Qa\0\xDB\x90a\x04eV[a\0\xE8\x81` \x01Qa\x04eV[a\0\xF5\x81`@\x01Qa\x04eV[a\x01\x02\x81``\x01Qa\x04eV[a\x01\x0F\x81`\x80\x01Qa\x04eV[a\x01\x1C\x81`\xA0\x01Qa\x04eV[a\x01)\x81`\xC0\x01Qa\x04eV[a\x016\x81`\xE0\x01Qa\x04eV[a\x01D\x81a\x01\0\x01Qa\x04eV[a\x01R\x81a\x01 \x01Qa\x04eV[a\x01`\x81a\x01@\x01Qa\x04eV[a\x01n\x81a\x01`\x01Qa\x04eV[a\x01|\x81a\x01\x80\x01Qa\x04eV[a\x01\x8A\x81a\x01\xA0\x01Qa\x02\x0BV[a\x01\x98\x81a\x01\xC0\x01Qa\x02\x0BV[a\x01\xA6\x81a\x01\xE0\x01Qa\x02\x0BV[a\x01\xB4\x81a\x02\0\x01Qa\x02\x0BV[a\x01\xC2\x81a\x02 \x01Qa\x02\x0BV[a\x01\xD0\x81a\x02@\x01Qa\x02\x0BV[a\x01\xDE\x81a\x02`\x01Qa\x02\x0BV[a\x01\xEC\x81a\x02\x80\x01Qa\x02\x0BV[a\x01\xFA\x81a\x02\xA0\x01Qa\x02\x0BV[a\x02\x08\x81a\x02\xC0\x01Qa\x02\x0BV[PV[_Q` a\"q_9_Q\x90_R\x81\x10\x80a\x02mW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[PPV[_\x83` \x01Q`\x07\x14a\x02\x97W`@Qc \xFA\x9D\x89`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x02\xA3\x85\x85\x85a\x05\x13V[\x90P_a\x02\xB2\x86_\x01Qa\nsV[\x90P_a\x02\xC4\x82\x84`\xA0\x01Q\x88a\x0EQV[\x90Pa\x02\xE1`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x03\x15\x87a\x01`\x01Qa\x03\x10\x89a\x01\x80\x01Q\x88`\xE0\x01Qa\x0E\xAEV[a\x0FOV[\x91P__a\x03%\x8B\x88\x87\x8Ca\x0F\xF3V[\x91P\x91Pa\x036\x81a\x03\x10\x84a\x12+V[\x92Pa\x03O\x83a\x03\x10\x8Ba\x01`\x01Q\x8A`\xA0\x01Qa\x0E\xAEV[`\xA0\x88\x01Q`@\x88\x01Q` \x01Q\x91\x94P_Q` a\"q_9_Q\x90_R\x91\x82\x90\x82\t\x90P\x81`\xE0\x8A\x01Q\x82\t\x90Pa\x03\x92\x85a\x03\x10\x8Da\x01\x80\x01Q\x84a\x0E\xAEV[\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\x04S\x87\x82a\x04F\x89a\x12+V[a\x04Na\x12\xC8V[a\x13\x95V[\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\x04\x9EWPPPV[\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\x05\x0EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FBn254: invalid G1 point\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PPPV[a\x05S`@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\"q_9_Q\x90_R\x90P`@Q` \x81\x01_\x81R`\xFE`\xE0\x1B\x81R\x86Q`\xC0\x1B`\x04\x82\x01R` \x87\x01Q`\xC0\x1B`\x0C\x82\x01Ra\x02\x80\x87\x01Q` \x82\x01Ra\x02\xA0\x87\x01Q`@\x82\x01R`\x01``\x82\x01R\x7F/\x8D\xD1\xF1\xA7X<B\xC4\xE1*D\xE1\x10@Ls\xCAl\x94\x81?\x85\x83]\xA4\xFB{\xB10\x1DJ`\x80\x82\x01R\x7F\x1E\xE6x\xA0G\nu\xA6\xEA\xA8\xFE\x83p`I\x8B\xA8(\xA3p;1\x1D\x0Fw\xF0\x10BJ\xFE\xB0%`\xA0\x82\x01R\x7F B\xA5\x87\xA9\x0C\x18{\n\x08|\x03\xE2\x9C\x96\x8B\x95\x0B\x1D\xB2m\\\x82\xD6f\x90Zh\x95y\x0C\n`\xC0\x82\x01R\x7F.+\x91Ea\x03i\x8A\xDFW\xB7\x99\x96\x9D\xEA\x1C\x8Fs\x9D\xA5\xD8\xD4\r\xD3\xEB\x92\"\xDB|\x81\xE8\x81`\xE0\x82\x01R`\xE0\x87\x01Q\x80Qa\x01\0\x83\x01R` \x81\x01Qa\x01 \x83\x01RPa\x01\0\x87\x01Q\x80Qa\x01@\x83\x01R` \x81\x01Qa\x01`\x83\x01RPa\x01 \x87\x01Q\x80Qa\x01\x80\x83\x01R` \x81\x01Qa\x01\xA0\x83\x01RPa\x01@\x87\x01Q\x80Qa\x01\xC0\x83\x01R` \x81\x01Qa\x01\xE0\x83\x01RPa\x01`\x87\x01Q\x80Qa\x02\0\x83\x01R` \x81\x01Qa\x02 \x83\x01RPa\x01\x80\x87\x01Q\x80Qa\x02@\x83\x01R` \x81\x01Qa\x02`\x83\x01RPa\x01\xE0\x87\x01Q\x80Qa\x02\x80\x83\x01R` \x81\x01Qa\x02\xA0\x83\x01RPa\x02\0\x87\x01Q\x80Qa\x02\xC0\x83\x01R` \x81\x01Qa\x02\xE0\x83\x01RPa\x02 \x87\x01Q\x80Qa\x03\0\x83\x01R` \x81\x01Qa\x03 \x83\x01RPa\x02@\x87\x01Q\x80Qa\x03@\x83\x01R` \x81\x01Qa\x03`\x83\x01RPa\x01\xA0\x87\x01Q\x80Qa\x03\x80\x83\x01R` \x81\x01Qa\x03\xA0\x83\x01RPa\x01\xC0\x87\x01Q\x80Qa\x03\xC0\x83\x01R` \x81\x01Qa\x03\xE0\x83\x01RPa\x02`\x87\x01Q\x80Qa\x04\0\x83\x01R` \x81\x01Qa\x04 \x83\x01RP`@\x87\x01Q\x80Qa\x04@\x83\x01R` \x81\x01Qa\x04`\x83\x01RP``\x87\x01Q\x80Qa\x04\x80\x83\x01R` \x81\x01Qa\x04\xA0\x83\x01RP`\x80\x87\x01Q\x80Qa\x04\xC0\x83\x01R` \x81\x01Qa\x04\xE0\x83\x01RP`\xA0\x87\x01Q\x80Qa\x05\0\x83\x01R` \x81\x01Qa\x05 \x83\x01RP`\xC0\x87\x01Q\x80Qa\x05@\x83\x01R` \x81\x01Qa\x05`\x83\x01RP\x85Qa\x05\x80\x82\x01R` \x86\x01Qa\x05\xA0\x82\x01R`@\x86\x01Qa\x05\xC0\x82\x01R``\x86\x01Qa\x05\xE0\x82\x01R`\x80\x86\x01Qa\x06\0\x82\x01R`\xA0\x86\x01Qa\x06 \x82\x01R`\xC0\x86\x01Qa\x06@\x82\x01R\x84Q\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``\x85\x01Q\x80Qa\x07 \x83\x01R` \x81\x01Qa\x07@\x83\x01RP`\x80\x85\x01Q\x80Qa\x07`\x83\x01R` \x81\x01Qa\x07\x80\x83\x01RP_\x82Ra\x07\xC0\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\n{a\x1D\x0EV[\x81b\x01\0\0\x03a\x0B\xBAW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01~\xEE\xB2\xCBY\x81\xEDEd\x9A\xBE\xBD\xE0\x81\xDC\xFF\x16\xC8`\x1D\xE44~}\xD1b\x8B\xA2\xDA\xACC\xB7\x81R` \x01\x7F-\x1B\xA6oYA\xDC\x91\x01qq\xFAi\xEC+\xD0\x02**-A\x15\xA0\t\xA94X\xFDN&\xEC\xFB\x81R` \x01\x7F\x08h\x12\xA0\n\xC4>\xA8\x01f\x9Cd\x01q <A\xA4\x96g\x1B\xFB\xC0e\xAC\x8D\xB2MR\xCF1\xE5\x81R` \x01\x7F-\x96VQ\xCD\xD9\xE4\x81\x1FNQ\xB8\r\xDC\xA8\xA8\xB4\xA9>\xE1t \xAA\xE6\xAD\xAA\x01\xC2a|n\x85\x81R` \x01\x7F\x12YzV\xC2\xE48b\x0B\x90A\xB9\x89\x92\xAE\rNp[x\0W\xBFwf\xA2v|\xEC\xE1n\x1D\x81R` \x01\x7F\x02\xD9A\x17\xCD\x17\xBC\xF1)\x0F\xD6|\x01\x15]\xD4\x08\x07\x85}\xFFJZ\x0BM\xC6{\xEF\xA8\xAA4\xFD\x81RP\x81RP\x90P\x91\x90PV[\x81b\x10\0\0\x03a\x0C\xFAW`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F&\x12]\xA1\n\x0E\xD0c'P\x8A\xBA\x06\xD1\xE3\x03\xACaf2\xDB\xED4\x9FSB-\xA9S3xW\x81R` \x01\x7F\"`\xE7$\x84K\xCARQ\x82\x93S\x96\x8EI\x150RXA\x83WG:\\\x1DY\x7Fa?l\xBD\x81R` \x01\x7F \x87\xEA,\xD6d'\x86\x08\xFB\x0E\xBD\xB8 \x90\x7FY\x85\x02\xC8\x1Bf\x90\xC1\x85\xE2\xBF\x15\xCB\x93_B\x81R` \x01\x7F\x19\xDD\xBC\xAF:\x8DF\xC1\\\x01v\xFB\xB5\xB9^M\xC5p\x88\xFF\x13\xF4\xD1\xBD\x84\xC6\xBF\xA5}\xCD\xC0\xE0\x81R` \x01\x7F\x05\xA2\xC8\\\xFCY\x17\x89`\\\xAE\x81\x8E7\xDDAa\xEE\xF9\xAAfk\xECo\xE4(\x8D\t\xE6\xD24\x18\x81R` \x01\x7F\x11\xF7\x0ESc%\x8F\xF4\xF0\xD7\x16\xA6S\xE1\xDCA\xF1\xC6D\x84\xD7\xF4\xB6\xE2\x19\xD67v\x14\xA3\x90\\\x81RP\x81RP\x90P\x91\x90PV[\x81` \x03a\x0E8W`@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`\xE0\x01`@R\x80`\x01\x81R` \x01\x7F\t\xC52\xC60k\x93\xD2\x96x \rG\xC0\xB2\xA9\x9C\x18\xD5\x1B\x83\x8E\xEB\x1D>\xEDLS;\xB5\x12\xD0\x81R` \x01\x7F!\x08,\xA2\x16\xCB\xBFN\x1CnOE\x94\xDDP\x8C\x99m\xFB\xE1\x17N\xFB\x98\xB1\x15\t\xC6\xE3\x06F\x0B\x81R` \x01\x7F\x12w\xAEd\x15\xF0\xEF\x18\xF2\xBA_\xB1b\xC3\x9E\xB71\x1F8n-&\xD6D\x01\xF4\xA2]\xA7|%;\x81R` \x01\x7F+3}\xE1\xC8\xC1O\"\xEC\x9B\x9E/\x96\xAF\xEF6Rbsf\xF8\x17\n\n\x94\x8D\xADJ\xC1\xBD^\x80\x81R` \x01\x7F/\xBDM\xD2\x97k\xE5]\x1A\x16:\xA9\x82\x0F\xB8\x8D\xFA\xC5\xDD\xCEw\xE1\x87.\x90c '2z^\xBE\x81R` \x01\x7F\x10z\xABI\xE6Zg\xF9\xDA\x9C\xD2\xAB\xF7\x8B\xE3\x8B\xD9\xDC\x1D]\xB3\x9F\x81\xDE6\xBC\xFA[K\x03\x90C\x81RP\x81RP\x90P\x91\x90PV[`@Qc\xE2\xEF\t\xE5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0Er`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01_\x81RP\x90V[a\x0E|\x84\x84a\x14uV[\x80\x82Ra\x0E\x8C\x90\x85\x90\x85\x90a\x14\xC6V[` \x82\x01R\x80Qa\x0E\xA2\x90\x85\x90\x84\x90\x86\x90a\x155V[`@\x82\x01R\x93\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0E\xC9a\x1D2V[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x81\x01\x83\x90R_``\x83`\x80\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0E\xF9W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x19`$\x82\x01R\x7FBn254: scalar mul failed!\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x0Fja\x1DPV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x83\x01R\x83\x01Q``\x80\x83\x01\x91\x90\x91R_\x90\x83`\xC0\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x0F\xA5W__\xFD[P\x80a\x0FGW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: group addition failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_a\x10&\x87\x87\x87\x87a\x16\x83V[\x90P_Q` a\"q_9_Q\x90_R_a\x10B\x88\x87\x89a\x1BMV[\x90Pa\x10N\x81\x83a\"\x1EV[`\xC0\x89\x01Qa\x01\xA0\x88\x01Q\x91\x92P\x90\x81\x90\x84\x90\x81\x90\x83\t\x84\x08\x92Pa\x10z\x85a\x03\x10\x8A_\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xC0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xA2\x86a\x03\x10\x8A` \x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x01\xE0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xCA\x86a\x03\x10\x8A`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\0\x8A\x01Q\x83\t\x84\x08\x92Pa\x10\xF2\x86a\x03\x10\x8A``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02 \x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x1A\x86a\x03\x10\x8A`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02@\x8A\x01Q\x83\t\x84\x08\x92Pa\x11B\x86a\x03\x10\x8D`@\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02`\x8A\x01Q\x83\t\x84\x08\x92Pa\x11j\x86a\x03\x10\x8D``\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\x80\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\x92\x86a\x03\x10\x8D`\x80\x01Q\x84a\x0E\xAEV[\x95P\x83\x82\x82\t\x90P\x83\x84a\x02\xA0\x8A\x01Q\x83\t\x84\x08\x92Pa\x11\xBA\x86a\x03\x10\x8D`\xA0\x01Q\x84a\x0E\xAEV[\x95P_\x8A`\xE0\x01Q\x90P\x84\x85a\x02\xC0\x8B\x01Q\x83\t\x85\x08\x93Pa\x11\xE4\x87a\x03\x10\x8B`\xA0\x01Q\x84a\x0E\xAEV[\x96Pa\x12\x1Aa\x12\x14`@\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\xAEV[\x97PPPPPPP\x94P\x94\x92PPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q` \x83\x01Q\x15\x90\x15\x16\x15a\x12RWP\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\x12\x96\x91\x90a\"QV[a\x12\xC0\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\"\x1EV[\x90R\x92\x91PPV[a\x12\xEF`@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\x14gW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FBn254: Pairing check failed!\0\0\0\0`D\x82\x01R`d\x01a\x02dV[P\x15\x15\x90P[\x94\x93PPPPV[\x81Q_\x90_Q` a\"q_9_Q\x90_R\x90\x83\x80\x15a\x14\xB6W\x84\x93P_[\x82\x81\x10\x15a\x14\xAAW\x83\x85\x86\t\x94P`\x01\x01a\x14\x94V[P`\x01\x84\x03\x93Pa\x14\xBDV[`\x01\x83\x03\x93P[PPP\x92\x91PPV[_\x82`\x01\x03a\x14\xD7WP`\x01a\0\xC9V[\x81_\x03a\x14\xE5WP_a\0\xC9V[` \x84\x01Q_Q` a\"q_9_Q\x90_R\x90_\x90\x82\x81\x86\t\x90P\x85\x80\x15a\x15\x13W`\x01\x87\x03\x92Pa\x15\x1AV[`\x01\x84\x03\x92P[Pa\x15$\x82a\x1C8V[\x91P\x82\x82\x82\t\x97\x96PPPPPPPV[__Q` a\"q_9_Q\x90_R\x82\x82\x03a\x15\xAEW`\x01_[`\x07\x81\x10\x15a\x15\xA3W\x81\x86\x03a\x15\x80W\x86\x81`\x07\x81\x10a\x15qWa\x15qa\"\nV[` \x02\x01Q\x93PPPPa\x14mV[\x82\x80a\x15\x8EWa\x15\x8Ea\"=V[`@\x89\x01Q` \x01Q\x83\t\x91P`\x01\x01a\x15OV[P_\x92PPPa\x14mV[a\x15\xB6a\x1DnV[`@\x87\x01Q`\x01`\xC0\x83\x81\x01\x82\x81R\x92\x01\x90\x80[`\x07\x81\x10\x15a\x15\xF7W` \x84\x03\x93P\x85\x86\x8A\x85Q\x89\x03\x08\x83\t\x80\x85R`\x1F\x19\x90\x93\x01\x92\x91P`\x01\x01a\x15\xCAV[PPPP___\x90P`\x01\x83\x89`@\x8C\x01Q_[`\x07\x81\x10\x15a\x16KW\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\x16\x0BV[PPPP\x80\x92PP_a\x16]\x83a\x1C8V[\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\"q_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\xF0\x87`\xA0\x01Q\x86a\x0E\xAEV[\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\x18\xB7\x86a\x03\x10\x8C`\xC0\x01Q\x88\x85a\x18\xB2\x91\x90a\"\x1EV[a\x0E\xAEV[\x95Pa\x18\xD0\x86a\x03\x10\x8C`\xE0\x01Q\x8Aa\x01\xA0\x01Qa\x0E\xAEV[\x95Pa\x18\xEA\x86a\x03\x10\x8Ca\x01\0\x01Q\x8Aa\x01\xC0\x01Qa\x0E\xAEV[\x95Pa\x19\x04\x86a\x03\x10\x8Ca\x01 \x01Q\x8Aa\x01\xE0\x01Qa\x0E\xAEV[\x95Pa\x19\x1E\x86a\x03\x10\x8Ca\x01@\x01Q\x8Aa\x02\0\x01Qa\x0E\xAEV[\x95P\x80a\x01\xC0\x88\x01Qa\x01\xA0\x89\x01Q\t\x92Pa\x19C\x86a\x03\x10\x8Ca\x01`\x01Q\x86a\x0E\xAEV[\x95P\x80a\x02\0\x88\x01Qa\x01\xE0\x89\x01Q\t\x92Pa\x19h\x86a\x03\x10\x8Ca\x01\x80\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xA0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\x97\x86a\x03\x10\x8Ca\x01\xE0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xC0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xC6\x86a\x03\x10\x8Ca\x02\0\x01Q\x86a\x0E\xAEV[\x95Pa\x01\xE0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x19\xF5\x86a\x03\x10\x8Ca\x02 \x01Q\x86a\x0E\xAEV[\x95Pa\x02\0\x87\x01Q\x92P\x80\x83\x84\t\x91P\x80\x82\x83\t\x91P\x80\x82\x84\t\x92Pa\x1A$\x86a\x03\x10\x8Ca\x02@\x01Q\x86a\x0E\xAEV[\x95Pa\x1AA\x86a\x03\x10\x8Ca\x01\xA0\x01Qa\x18\xB2\x8Ba\x02 \x01Qa\x1C\xD9V[\x95Pa\x1AR\x86\x8Ba\x01\xC0\x01Qa\x0FOV[\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\x98\x86a\x03\x10\x8Ca\x02`\x01Q\x86a\x0E\xAEV[\x95Pa\x1A\xA6\x88_\x01Qa\x1C\xD9V[\x94Pa\x1A\xBA\x86a\x03\x10\x89`\xC0\x01Q\x88a\x0E\xAEV[\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\xEE\x86a\x03\x10\x89`\xE0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B\t\x86a\x03\x10\x89a\x01\0\x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B$\x86a\x03\x10\x89a\x01 \x01Q\x88a\x0E\xAEV[\x95P\x80\x83\x86\t\x94Pa\x1B?\x86a\x03\x10\x89a\x01@\x01Q\x88a\x0E\xAEV[\x9A\x99PPPPPPPPPPV[___Q` a\"q_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[____Q` a\"q_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\x1C\xD2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FBn254: pow precompile failed!\0\0\0`D\x82\x01R`d\x01a\x02dV[PP\x91\x90PV[_a\x1C\xF1_Q` a\"q_9_Q\x90_R\x83a\"QV[a\x1D\x08\x90_Q` a\"q_9_Q\x90_Ra\"\x1EV[\x92\x91PPV[`@Q\x80``\x01`@R\x80_\x81R` \x01_\x81R` \x01a\x1D-a\x1DnV[\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`\xE0\x01`@R\x80`\x07\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\xC4Wa\x1D\xC4a\x1D\x8CV[`@R\x90V[`@Qa\x02\xC0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1D\xC4Wa\x1D\xC4a\x1D\x8CV[_`@\x82\x84\x03\x12\x15a\x1D\xFEW__\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1E!Wa\x1E!a\x1D\x8CV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x1EJW__\xFD[`@Q`\xE0\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x1EmWa\x1Ema\x1D\x8CV[`@R\x80`\xE0\x84\x01\x85\x81\x11\x15a\x1E\x81W__\xFD[\x84[\x81\x81\x10\x15a\x1E\x9BW\x805\x83R` \x92\x83\x01\x92\x01a\x1E\x83V[P\x91\x95\x94PPPPPV[_a\x04\x80\x82\x84\x03\x12\x15a\x1E\xB7W__\xFD[a\x1E\xBFa\x1D\xA0V[\x90Pa\x1E\xCB\x83\x83a\x1D\xEEV[\x81Ra\x1E\xDA\x83`@\x84\x01a\x1D\xEEV[` \x82\x01Ra\x1E\xEC\x83`\x80\x84\x01a\x1D\xEEV[`@\x82\x01Ra\x1E\xFE\x83`\xC0\x84\x01a\x1D\xEEV[``\x82\x01Ra\x1F\x11\x83a\x01\0\x84\x01a\x1D\xEEV[`\x80\x82\x01Ra\x1F$\x83a\x01@\x84\x01a\x1D\xEEV[`\xA0\x82\x01Ra\x1F7\x83a\x01\x80\x84\x01a\x1D\xEEV[`\xC0\x82\x01Ra\x1FJ\x83a\x01\xC0\x84\x01a\x1D\xEEV[`\xE0\x82\x01Ra\x1F]\x83a\x02\0\x84\x01a\x1D\xEEV[a\x01\0\x82\x01Ra\x1Fq\x83a\x02@\x84\x01a\x1D\xEEV[a\x01 \x82\x01Ra\x1F\x85\x83a\x02\x80\x84\x01a\x1D\xEEV[a\x01@\x82\x01Ra\x1F\x99\x83a\x02\xC0\x84\x01a\x1D\xEEV[a\x01`\x82\x01Ra\x1F\xAD\x83a\x03\0\x84\x01a\x1D\xEEV[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 EW__\xFD[a\x05\0\x81\x12\x15a SW__\xFD[Pa \\a\x1D\xCAV[\x845\x81R` \x80\x86\x015\x90\x82\x01Ra w\x86`@\x87\x01a\x1D\xEEV[`@\x82\x01Ra \x89\x86`\x80\x87\x01a\x1D\xEEV[``\x82\x01Ra \x9B\x86`\xC0\x87\x01a\x1D\xEEV[`\x80\x82\x01Ra \xAE\x86a\x01\0\x87\x01a\x1D\xEEV[`\xA0\x82\x01Ra \xC1\x86a\x01@\x87\x01a\x1D\xEEV[`\xC0\x82\x01Ra \xD4\x86a\x01\x80\x87\x01a\x1D\xEEV[`\xE0\x82\x01Ra \xE7\x86a\x01\xC0\x87\x01a\x1D\xEEV[a\x01\0\x82\x01Ra \xFB\x86a\x02\0\x87\x01a\x1D\xEEV[a\x01 \x82\x01Ra!\x0F\x86a\x02@\x87\x01a\x1D\xEEV[a\x01@\x82\x01Ra!#\x86a\x02\x80\x87\x01a\x1D\xEEV[a\x01`\x82\x01Ra!7\x86a\x02\xC0\x87\x01a\x1D\xEEV[a\x01\x80\x82\x01Ra!K\x86a\x03\0\x87\x01a\x1D\xEEV[a\x01\xA0\x82\x01Ra!_\x86a\x03@\x87\x01a\x1D\xEEV[a\x01\xC0\x82\x01Ra!s\x86a\x03\x80\x87\x01a\x1D\xEEV[a\x01\xE0\x82\x01Ra!\x87\x86a\x03\xC0\x87\x01a\x1D\xEEV[a\x02\0\x82\x01Ra!\x9B\x86a\x04\0\x87\x01a\x1D\xEEV[a\x02 \x82\x01Ra!\xAF\x86a\x04@\x87\x01a\x1D\xEEV[a\x02@\x82\x01Ra!\xC3\x86a\x04\x80\x87\x01a\x1D\xEEV[a\x02`\x82\x01Ra\x04\xC0\x85\x015a\x02\x80\x82\x01Ra\x04\xE0\x85\x015a\x02\xA0\x82\x01R\x92Pa!\xF1\x85a\x05\0\x86\x01a\x1E;V[\x91Pa\"\x01\x85a\x05\xE0\x86\x01a\x1E\xA6V[\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x1D\x08WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_\x82a\"kWcNH{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",
2639 );
2640 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2641 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2646 #[derive(Clone)]
2647 pub struct InvalidPlonkArgs {}
2648 #[allow(
2649 non_camel_case_types,
2650 non_snake_case,
2651 clippy::pub_underscore_fields,
2652 clippy::style
2653 )]
2654 const _: () = {
2655 use alloy::sol_types as alloy_sol_types;
2656 #[doc(hidden)]
2657 type UnderlyingSolTuple<'a> = ();
2658 #[doc(hidden)]
2659 type UnderlyingRustTuple<'a> = ();
2660 #[cfg(test)]
2661 #[allow(dead_code, unreachable_patterns)]
2662 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2663 match _t {
2664 alloy_sol_types::private::AssertTypeEq::<
2665 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2666 >(_) => {},
2667 }
2668 }
2669 #[automatically_derived]
2670 #[doc(hidden)]
2671 impl ::core::convert::From<InvalidPlonkArgs> for UnderlyingRustTuple<'_> {
2672 fn from(value: InvalidPlonkArgs) -> Self {
2673 ()
2674 }
2675 }
2676 #[automatically_derived]
2677 #[doc(hidden)]
2678 impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidPlonkArgs {
2679 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2680 Self {}
2681 }
2682 }
2683 #[automatically_derived]
2684 impl alloy_sol_types::SolError for InvalidPlonkArgs {
2685 type Parameters<'a> = UnderlyingSolTuple<'a>;
2686 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2687 const SIGNATURE: &'static str = "InvalidPlonkArgs()";
2688 const SELECTOR: [u8; 4] = [253u8, 154u8, 45u8, 27u8];
2689 #[inline]
2690 fn new<'a>(
2691 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2692 ) -> Self {
2693 tuple.into()
2694 }
2695 #[inline]
2696 fn tokenize(&self) -> Self::Token<'_> {
2697 ()
2698 }
2699 }
2700 };
2701 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2702 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2707 #[derive(Clone)]
2708 pub struct UnsupportedDegree {}
2709 #[allow(
2710 non_camel_case_types,
2711 non_snake_case,
2712 clippy::pub_underscore_fields,
2713 clippy::style
2714 )]
2715 const _: () = {
2716 use alloy::sol_types as alloy_sol_types;
2717 #[doc(hidden)]
2718 type UnderlyingSolTuple<'a> = ();
2719 #[doc(hidden)]
2720 type UnderlyingRustTuple<'a> = ();
2721 #[cfg(test)]
2722 #[allow(dead_code, unreachable_patterns)]
2723 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2724 match _t {
2725 alloy_sol_types::private::AssertTypeEq::<
2726 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2727 >(_) => {},
2728 }
2729 }
2730 #[automatically_derived]
2731 #[doc(hidden)]
2732 impl ::core::convert::From<UnsupportedDegree> for UnderlyingRustTuple<'_> {
2733 fn from(value: UnsupportedDegree) -> Self {
2734 ()
2735 }
2736 }
2737 #[automatically_derived]
2738 #[doc(hidden)]
2739 impl ::core::convert::From<UnderlyingRustTuple<'_>> for UnsupportedDegree {
2740 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2741 Self {}
2742 }
2743 }
2744 #[automatically_derived]
2745 impl alloy_sol_types::SolError for UnsupportedDegree {
2746 type Parameters<'a> = UnderlyingSolTuple<'a>;
2747 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2748 const SIGNATURE: &'static str = "UnsupportedDegree()";
2749 const SELECTOR: [u8; 4] = [226u8, 239u8, 9u8, 229u8];
2750 #[inline]
2751 fn new<'a>(
2752 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2753 ) -> Self {
2754 tuple.into()
2755 }
2756 #[inline]
2757 fn tokenize(&self) -> Self::Token<'_> {
2758 ()
2759 }
2760 }
2761 };
2762 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2763 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2768 #[derive(Clone)]
2769 pub struct WrongPlonkVK {}
2770 #[allow(
2771 non_camel_case_types,
2772 non_snake_case,
2773 clippy::pub_underscore_fields,
2774 clippy::style
2775 )]
2776 const _: () = {
2777 use alloy::sol_types as alloy_sol_types;
2778 #[doc(hidden)]
2779 type UnderlyingSolTuple<'a> = ();
2780 #[doc(hidden)]
2781 type UnderlyingRustTuple<'a> = ();
2782 #[cfg(test)]
2783 #[allow(dead_code, unreachable_patterns)]
2784 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2785 match _t {
2786 alloy_sol_types::private::AssertTypeEq::<
2787 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2788 >(_) => {},
2789 }
2790 }
2791 #[automatically_derived]
2792 #[doc(hidden)]
2793 impl ::core::convert::From<WrongPlonkVK> for UnderlyingRustTuple<'_> {
2794 fn from(value: WrongPlonkVK) -> Self {
2795 ()
2796 }
2797 }
2798 #[automatically_derived]
2799 #[doc(hidden)]
2800 impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongPlonkVK {
2801 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2802 Self {}
2803 }
2804 }
2805 #[automatically_derived]
2806 impl alloy_sol_types::SolError for WrongPlonkVK {
2807 type Parameters<'a> = UnderlyingSolTuple<'a>;
2808 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2809 const SIGNATURE: &'static str = "WrongPlonkVK()";
2810 const SELECTOR: [u8; 4] = [65u8, 245u8, 59u8, 18u8];
2811 #[inline]
2812 fn new<'a>(
2813 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2814 ) -> Self {
2815 tuple.into()
2816 }
2817 #[inline]
2818 fn tokenize(&self) -> Self::Token<'_> {
2819 ()
2820 }
2821 }
2822 };
2823 #[derive()]
2824 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2829 #[derive(Clone)]
2830 pub struct verifyCall {
2831 #[allow(missing_docs)]
2832 pub verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
2833 #[allow(missing_docs)]
2834 pub publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
2835 #[allow(missing_docs)]
2836 pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
2837 }
2838 #[derive(Default, Debug, PartialEq, Eq, Hash)]
2839 #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2841 #[derive(Clone)]
2842 pub struct verifyReturn {
2843 #[allow(missing_docs)]
2844 pub _0: bool,
2845 }
2846 #[allow(
2847 non_camel_case_types,
2848 non_snake_case,
2849 clippy::pub_underscore_fields,
2850 clippy::style
2851 )]
2852 const _: () = {
2853 use alloy::sol_types as alloy_sol_types;
2854 {
2855 #[doc(hidden)]
2856 type UnderlyingSolTuple<'a> = (
2857 IPlonkVerifier::VerifyingKey,
2858 alloy::sol_types::sol_data::FixedArray<
2859 alloy::sol_types::sol_data::Uint<256>,
2860 7usize,
2861 >,
2862 IPlonkVerifier::PlonkProof,
2863 );
2864 #[doc(hidden)]
2865 type UnderlyingRustTuple<'a> = (
2866 <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
2867 [alloy::sol_types::private::primitives::aliases::U256; 7usize],
2868 <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
2869 );
2870 #[cfg(test)]
2871 #[allow(dead_code, unreachable_patterns)]
2872 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2873 match _t {
2874 alloy_sol_types::private::AssertTypeEq::<
2875 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2876 >(_) => {},
2877 }
2878 }
2879 #[automatically_derived]
2880 #[doc(hidden)]
2881 impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
2882 fn from(value: verifyCall) -> Self {
2883 (value.verifyingKey, value.publicInput, value.proof)
2884 }
2885 }
2886 #[automatically_derived]
2887 #[doc(hidden)]
2888 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
2889 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2890 Self {
2891 verifyingKey: tuple.0,
2892 publicInput: tuple.1,
2893 proof: tuple.2,
2894 }
2895 }
2896 }
2897 }
2898 {
2899 #[doc(hidden)]
2900 type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2901 #[doc(hidden)]
2902 type UnderlyingRustTuple<'a> = (bool,);
2903 #[cfg(test)]
2904 #[allow(dead_code, unreachable_patterns)]
2905 fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2906 match _t {
2907 alloy_sol_types::private::AssertTypeEq::<
2908 <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2909 >(_) => {},
2910 }
2911 }
2912 #[automatically_derived]
2913 #[doc(hidden)]
2914 impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
2915 fn from(value: verifyReturn) -> Self {
2916 (value._0,)
2917 }
2918 }
2919 #[automatically_derived]
2920 #[doc(hidden)]
2921 impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
2922 fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2923 Self { _0: tuple.0 }
2924 }
2925 }
2926 }
2927 #[automatically_derived]
2928 impl alloy_sol_types::SolCall for verifyCall {
2929 type Parameters<'a> = (
2930 IPlonkVerifier::VerifyingKey,
2931 alloy::sol_types::sol_data::FixedArray<
2932 alloy::sol_types::sol_data::Uint<256>,
2933 7usize,
2934 >,
2935 IPlonkVerifier::PlonkProof,
2936 );
2937 type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
2938 type Return = verifyReturn;
2939 type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2940 type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2941 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[7],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
2942 const SELECTOR: [u8; 4] = [119u8, 174u8, 63u8, 7u8];
2943 #[inline]
2944 fn new<'a>(
2945 tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2946 ) -> Self {
2947 tuple.into()
2948 }
2949 #[inline]
2950 fn tokenize(&self) -> Self::Token<'_> {
2951 (
2952 <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
2953 &self.verifyingKey,
2954 ),
2955 <alloy::sol_types::sol_data::FixedArray<
2956 alloy::sol_types::sol_data::Uint<256>,
2957 7usize,
2958 > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
2959 <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
2960 )
2961 }
2962 #[inline]
2963 fn abi_decode_returns(
2964 data: &[u8],
2965 validate: bool,
2966 ) -> alloy_sol_types::Result<Self::Return> {
2967 <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
2968 data, validate,
2969 )
2970 .map(Into::into)
2971 }
2972 }
2973 };
2974 #[derive()]
2976 pub enum PlonkVerifierCalls {
2977 #[allow(missing_docs)]
2978 verify(verifyCall),
2979 }
2980 #[automatically_derived]
2981 impl PlonkVerifierCalls {
2982 pub const SELECTORS: &'static [[u8; 4usize]] = &[[119u8, 174u8, 63u8, 7u8]];
2989 }
2990 #[automatically_derived]
2991 impl alloy_sol_types::SolInterface for PlonkVerifierCalls {
2992 const NAME: &'static str = "PlonkVerifierCalls";
2993 const MIN_DATA_LENGTH: usize = 672usize;
2994 const COUNT: usize = 1usize;
2995 #[inline]
2996 fn selector(&self) -> [u8; 4] {
2997 match self {
2998 Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
2999 }
3000 }
3001 #[inline]
3002 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3003 Self::SELECTORS.get(i).copied()
3004 }
3005 #[inline]
3006 fn valid_selector(selector: [u8; 4]) -> bool {
3007 Self::SELECTORS.binary_search(&selector).is_ok()
3008 }
3009 #[inline]
3010 #[allow(non_snake_case)]
3011 fn abi_decode_raw(
3012 selector: [u8; 4],
3013 data: &[u8],
3014 validate: bool,
3015 ) -> alloy_sol_types::Result<Self> {
3016 static DECODE_SHIMS: &[fn(
3017 &[u8],
3018 bool,
3019 )
3020 -> alloy_sol_types::Result<PlonkVerifierCalls>] = &[{
3021 fn verify(
3022 data: &[u8],
3023 validate: bool,
3024 ) -> alloy_sol_types::Result<PlonkVerifierCalls> {
3025 <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
3026 .map(PlonkVerifierCalls::verify)
3027 }
3028 verify
3029 }];
3030 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3031 return Err(alloy_sol_types::Error::unknown_selector(
3032 <Self as alloy_sol_types::SolInterface>::NAME,
3033 selector,
3034 ));
3035 };
3036 DECODE_SHIMS[idx](data, validate)
3037 }
3038 #[inline]
3039 fn abi_encoded_size(&self) -> usize {
3040 match self {
3041 Self::verify(inner) => {
3042 <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
3043 },
3044 }
3045 }
3046 #[inline]
3047 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3048 match self {
3049 Self::verify(inner) => {
3050 <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
3051 },
3052 }
3053 }
3054 }
3055 #[derive(Debug, PartialEq, Eq, Hash)]
3057 pub enum PlonkVerifierErrors {
3058 #[allow(missing_docs)]
3059 InvalidPlonkArgs(InvalidPlonkArgs),
3060 #[allow(missing_docs)]
3061 UnsupportedDegree(UnsupportedDegree),
3062 #[allow(missing_docs)]
3063 WrongPlonkVK(WrongPlonkVK),
3064 }
3065 #[automatically_derived]
3066 impl PlonkVerifierErrors {
3067 pub const SELECTORS: &'static [[u8; 4usize]] = &[
3074 [65u8, 245u8, 59u8, 18u8],
3075 [226u8, 239u8, 9u8, 229u8],
3076 [253u8, 154u8, 45u8, 27u8],
3077 ];
3078 }
3079 #[automatically_derived]
3080 impl alloy_sol_types::SolInterface for PlonkVerifierErrors {
3081 const NAME: &'static str = "PlonkVerifierErrors";
3082 const MIN_DATA_LENGTH: usize = 0usize;
3083 const COUNT: usize = 3usize;
3084 #[inline]
3085 fn selector(&self) -> [u8; 4] {
3086 match self {
3087 Self::InvalidPlonkArgs(_) => {
3088 <InvalidPlonkArgs as alloy_sol_types::SolError>::SELECTOR
3089 },
3090 Self::UnsupportedDegree(_) => {
3091 <UnsupportedDegree as alloy_sol_types::SolError>::SELECTOR
3092 },
3093 Self::WrongPlonkVK(_) => <WrongPlonkVK as alloy_sol_types::SolError>::SELECTOR,
3094 }
3095 }
3096 #[inline]
3097 fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3098 Self::SELECTORS.get(i).copied()
3099 }
3100 #[inline]
3101 fn valid_selector(selector: [u8; 4]) -> bool {
3102 Self::SELECTORS.binary_search(&selector).is_ok()
3103 }
3104 #[inline]
3105 #[allow(non_snake_case)]
3106 fn abi_decode_raw(
3107 selector: [u8; 4],
3108 data: &[u8],
3109 validate: bool,
3110 ) -> alloy_sol_types::Result<Self> {
3111 static DECODE_SHIMS: &[fn(
3112 &[u8],
3113 bool,
3114 )
3115 -> alloy_sol_types::Result<PlonkVerifierErrors>] = &[
3116 {
3117 fn WrongPlonkVK(
3118 data: &[u8],
3119 validate: bool,
3120 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3121 <WrongPlonkVK as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
3122 .map(PlonkVerifierErrors::WrongPlonkVK)
3123 }
3124 WrongPlonkVK
3125 },
3126 {
3127 fn UnsupportedDegree(
3128 data: &[u8],
3129 validate: bool,
3130 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3131 <UnsupportedDegree as alloy_sol_types::SolError>::abi_decode_raw(
3132 data, validate,
3133 )
3134 .map(PlonkVerifierErrors::UnsupportedDegree)
3135 }
3136 UnsupportedDegree
3137 },
3138 {
3139 fn InvalidPlonkArgs(
3140 data: &[u8],
3141 validate: bool,
3142 ) -> alloy_sol_types::Result<PlonkVerifierErrors> {
3143 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_decode_raw(
3144 data, validate,
3145 )
3146 .map(PlonkVerifierErrors::InvalidPlonkArgs)
3147 }
3148 InvalidPlonkArgs
3149 },
3150 ];
3151 let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3152 return Err(alloy_sol_types::Error::unknown_selector(
3153 <Self as alloy_sol_types::SolInterface>::NAME,
3154 selector,
3155 ));
3156 };
3157 DECODE_SHIMS[idx](data, validate)
3158 }
3159 #[inline]
3160 fn abi_encoded_size(&self) -> usize {
3161 match self {
3162 Self::InvalidPlonkArgs(inner) => {
3163 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
3164 },
3165 Self::UnsupportedDegree(inner) => {
3166 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encoded_size(inner)
3167 },
3168 Self::WrongPlonkVK(inner) => {
3169 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encoded_size(inner)
3170 },
3171 }
3172 }
3173 #[inline]
3174 fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3175 match self {
3176 Self::InvalidPlonkArgs(inner) => {
3177 <InvalidPlonkArgs as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3178 },
3179 Self::UnsupportedDegree(inner) => {
3180 <UnsupportedDegree as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3181 },
3182 Self::WrongPlonkVK(inner) => {
3183 <WrongPlonkVK as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
3184 },
3185 }
3186 }
3187 }
3188 use alloy::contract as alloy_contract;
3189 #[inline]
3193 pub const fn new<
3194 T: alloy_contract::private::Transport + ::core::clone::Clone,
3195 P: alloy_contract::private::Provider<T, N>,
3196 N: alloy_contract::private::Network,
3197 >(
3198 address: alloy_sol_types::private::Address,
3199 provider: P,
3200 ) -> PlonkVerifierInstance<T, P, N> {
3201 PlonkVerifierInstance::<T, P, N>::new(address, provider)
3202 }
3203 #[inline]
3209 pub fn deploy<
3210 T: alloy_contract::private::Transport + ::core::clone::Clone,
3211 P: alloy_contract::private::Provider<T, N>,
3212 N: alloy_contract::private::Network,
3213 >(
3214 provider: P,
3215 ) -> impl ::core::future::Future<Output = alloy_contract::Result<PlonkVerifierInstance<T, P, N>>>
3216 {
3217 PlonkVerifierInstance::<T, P, N>::deploy(provider)
3218 }
3219 #[inline]
3225 pub fn deploy_builder<
3226 T: alloy_contract::private::Transport + ::core::clone::Clone,
3227 P: alloy_contract::private::Provider<T, N>,
3228 N: alloy_contract::private::Network,
3229 >(
3230 provider: P,
3231 ) -> alloy_contract::RawCallBuilder<T, P, N> {
3232 PlonkVerifierInstance::<T, P, N>::deploy_builder(provider)
3233 }
3234 #[derive(Clone)]
3246 pub struct PlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
3247 address: alloy_sol_types::private::Address,
3248 provider: P,
3249 _network_transport: ::core::marker::PhantomData<(N, T)>,
3250 }
3251 #[automatically_derived]
3252 impl<T, P, N> ::core::fmt::Debug for PlonkVerifierInstance<T, P, N> {
3253 #[inline]
3254 fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3255 f.debug_tuple("PlonkVerifierInstance")
3256 .field(&self.address)
3257 .finish()
3258 }
3259 }
3260 #[automatically_derived]
3262 impl<
3263 T: alloy_contract::private::Transport + ::core::clone::Clone,
3264 P: alloy_contract::private::Provider<T, N>,
3265 N: alloy_contract::private::Network,
3266 > PlonkVerifierInstance<T, P, N>
3267 {
3268 #[inline]
3272 pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
3273 Self {
3274 address,
3275 provider,
3276 _network_transport: ::core::marker::PhantomData,
3277 }
3278 }
3279 #[inline]
3285 pub async fn deploy(provider: P) -> alloy_contract::Result<PlonkVerifierInstance<T, P, N>> {
3286 let call_builder = Self::deploy_builder(provider);
3287 let contract_address = call_builder.deploy().await?;
3288 Ok(Self::new(contract_address, call_builder.provider))
3289 }
3290 #[inline]
3296 pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
3297 alloy_contract::RawCallBuilder::new_raw_deploy(
3298 provider,
3299 ::core::clone::Clone::clone(&BYTECODE),
3300 )
3301 }
3302 #[inline]
3304 pub const fn address(&self) -> &alloy_sol_types::private::Address {
3305 &self.address
3306 }
3307 #[inline]
3309 pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3310 self.address = address;
3311 }
3312 pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3314 self.set_address(address);
3315 self
3316 }
3317 #[inline]
3319 pub const fn provider(&self) -> &P {
3320 &self.provider
3321 }
3322 }
3323 impl<T, P: ::core::clone::Clone, N> PlonkVerifierInstance<T, &P, N> {
3324 #[inline]
3326 pub fn with_cloned_provider(self) -> PlonkVerifierInstance<T, P, N> {
3327 PlonkVerifierInstance {
3328 address: self.address,
3329 provider: ::core::clone::Clone::clone(&self.provider),
3330 _network_transport: ::core::marker::PhantomData,
3331 }
3332 }
3333 }
3334 #[automatically_derived]
3336 impl<
3337 T: alloy_contract::private::Transport + ::core::clone::Clone,
3338 P: alloy_contract::private::Provider<T, N>,
3339 N: alloy_contract::private::Network,
3340 > PlonkVerifierInstance<T, P, N>
3341 {
3342 pub fn call_builder<C: alloy_sol_types::SolCall>(
3347 &self,
3348 call: &C,
3349 ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
3350 alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3351 }
3352 pub fn verify(
3354 &self,
3355 verifyingKey: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
3356 publicInput: [alloy::sol_types::private::primitives::aliases::U256; 7usize],
3357 proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
3358 ) -> alloy_contract::SolCallBuilder<T, &P, verifyCall, N> {
3359 self.call_builder(&verifyCall {
3360 verifyingKey,
3361 publicInput,
3362 proof,
3363 })
3364 }
3365 }
3366 #[automatically_derived]
3368 impl<
3369 T: alloy_contract::private::Transport + ::core::clone::Clone,
3370 P: alloy_contract::private::Provider<T, N>,
3371 N: alloy_contract::private::Network,
3372 > PlonkVerifierInstance<T, P, N>
3373 {
3374 pub fn event_filter<E: alloy_sol_types::SolEvent>(
3379 &self,
3380 ) -> alloy_contract::Event<T, &P, E, N> {
3381 alloy_contract::Event::new_sol(&self.provider, &self.address)
3382 }
3383 }
3384}