From 4686231f995fbcd2760c8c86842a667502cfe863 Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Tue, 16 Sep 2025 19:03:47 -0400 Subject: [PATCH 01/86] shrink_bitvm2 crate --- Cargo.lock | 91 +++++-- Cargo.toml | 8 +- contracts/scripts/Deploy.s.sol | 7 + crates/shrink_bitvm2/Cargo.toml | 32 +++ crates/shrink_bitvm2/src/lib.rs | 427 ++++++++++++++++++++++++++++++++ remappings.txt | 2 +- 6 files changed, 548 insertions(+), 19 deletions(-) create mode 100644 crates/shrink_bitvm2/Cargo.toml create mode 100644 crates/shrink_bitvm2/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 670c17025..a9720ef53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1053,6 +1053,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2 0.10.9", ] @@ -1085,6 +1086,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -1143,6 +1145,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -1227,6 +1230,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -1242,6 +1246,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -1305,6 +1310,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1358,6 +1364,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -2481,6 +2488,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -2535,6 +2555,18 @@ name = "bonsai-sdk" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -2623,7 +2655,7 @@ dependencies = [ "assert_fs", "atomicwrites", "bincode", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-povw", @@ -2892,7 +2924,7 @@ dependencies = [ "aws-sdk-s3", "aws-smithy-http-client", "bincode", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-test-utils", @@ -2998,18 +3030,18 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", @@ -3383,6 +3415,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "convert_case" version = "0.4.0" @@ -5363,7 +5401,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.0", "system-configuration", "tokio", "tower-service", @@ -6008,7 +6046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.53.3", ] [[package]] @@ -6777,7 +6815,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", "syn 2.0.106", @@ -7623,7 +7661,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls 0.23.31", - "socket2 0.5.10", + "socket2 0.6.0", "thiserror 2.0.16", "tokio", "tracing", @@ -7660,7 +7698,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.0", "tracing", "windows-sys 0.60.2", ] @@ -8233,8 +8271,6 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37f9050c74d66eb953591e88a60f2d347e99b121e7330eabb0f29c4053d2a36" dependencies = [ "alloy-primitives 1.3.1", "alloy-sol-types", @@ -8468,8 +8504,6 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a604f09f459f456fd9ef4919c6efcaa6a787a6f9ffcd76cfc81eae1860584a1" dependencies = [ "alloy", "alloy-primitives 1.3.1", @@ -8637,7 +8671,7 @@ dependencies = [ "addr2line", "anyhow", "bincode", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -9550,6 +9584,29 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shrink_bitvm2" +version = "0.15.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "blake3", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-groth16", + "risc0-zkvm", + "serde", + "serde_json", + "sha2 0.10.9", + "tempfile", + "tokio", + "tracing", +] + [[package]] name = "signal-hook-registry" version = "1.4.6" @@ -11259,7 +11316,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.60.2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b33cf95e7..deae9f9f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ members = [ "crates/order-generator", "crates/order-stream", "crates/povw", + "crates/shrink_bitvm2", "crates/slasher", "crates/test-utils", "crates/zkc", @@ -38,6 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } +shrink_bitvm2 = { path = "crates/shrink_bitvm2" } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -51,7 +53,7 @@ aws-sdk-s3 = "1.34" # used for minio for max compatibility axum = "0.8" axum-extra = { version = "0.10" } bincode = "1.3" -bonsai-sdk = { version = "1.4", features = ["non_blocking"] } +bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bitvm2", features = ["non_blocking", "shrink_bitvm2"] } bs58 = "0.5" bytemuck = "1.16" clap = { version = "4.5", features = ["derive", "env"] } @@ -101,3 +103,7 @@ lto = true # [profile.release] # lto = "fat" # codegen-units = 1 + +[patch.crates-io] +risc0-ethereum-contracts = { path = "/home/homepup/repos/risc0-ethereum/contracts" } +risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } \ No newline at end of file diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 6bef11d32..7706a892f 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -66,6 +66,13 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { IRiscZeroSelectable selectable = IRiscZeroSelectable(address(_verifier)); bytes4 selector = selectable.SELECTOR(); verifierRouter.addVerifier(selector, _verifier); + console2.log("Added RiscZeroGroth16Verifier"); + + IRiscZeroVerifier _bitvm2_verifier = deployRiscZeroBitvm2Verifier(); + IRiscZeroSelectable bitvm2_selectable = IRiscZeroSelectable(address(_bitvm2_verifier)); + bytes4 bitvm_selector = bitvm2_selectable.SELECTOR(); + verifierRouter.addVerifier(bitvm_selector, _bitvm2_verifier); + console2.log("Added BitVM2 verifier"); // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. diff --git a/crates/shrink_bitvm2/Cargo.toml b/crates/shrink_bitvm2/Cargo.toml new file mode 100644 index 000000000..d70fa9116 --- /dev/null +++ b/crates/shrink_bitvm2/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "shrink_bitvm2" +resolver = "2" +version.workspace = true +edition.workspace = true +homepage.workspace = true +repository.workspace = true +publish = false + +[package.metadata.release] +release = false + +[dependencies] +anyhow = { workspace = true } +hex = { workspace = true } +num-bigint = { version = "0.4", features = ["std"] } +num-traits = "0.2.19" +risc0-groth16 = { version = "3.0.2", features = ["prove"] } +risc0-zkvm = { workspace = true, features = ["std", "client", "prove"] } +serde = { workspace = true } +serde_json = { workspace = true } +sha2 = "0.10" +tempfile = { workspace = true } +tokio = { workspace = true, features = ["rt-multi-thread", "macros", "fs", "process"] } + +tracing = { workspace = true } + +ark-bn254 = "0.5.0" +ark-ff = "0.5.0" +ark-groth16 = { version = "0.5.0" } +ark-serialize = "0.5.0" +blake3 = { version = "1.5.0" } diff --git a/crates/shrink_bitvm2/src/lib.rs b/crates/shrink_bitvm2/src/lib.rs new file mode 100644 index 000000000..6e782e7da --- /dev/null +++ b/crates/shrink_bitvm2/src/lib.rs @@ -0,0 +1,427 @@ +use std::path::Path; + +use hex::FromHex; +use risc0_zkvm::{ + digest, sha::Digestible, Digest, Groth16Receipt, Groth16Seal, Journal, MaybePruned, Receipt, + ReceiptClaim, SuccinctReceipt, SystemState, +}; + +use risc0_groth16::ProofJson as Groth16ProofJson; + +use anyhow::{ensure, Context, Result}; +use num_bigint::BigUint; +use num_traits::Num; + +use serde::Serialize; +use tokio::process::Command; +pub const ALLOWED_CONTROL_ROOT: Digest = + digest!("ce52bf56033842021af3cf6db8a50d1b7535c125a34f1a22c6fdcf002c5a1529"); + +pub const BN254_IDENTITY_CONTROL_ID: Digest = + digest!("c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e4404"); + +#[derive(Clone, Debug, Serialize)] +pub struct ShrinkBitvm2ReceiptClaim { + control_root: Digest, + pre: MaybePruned, + post: MaybePruned, + control_id: Digest, + // Note: This journal has to be exactly 32 bytes + journal: Vec, +} + +impl ShrinkBitvm2ReceiptClaim { + pub fn ok( + image_id: impl Into, + journal: impl Into>, + ) -> ShrinkBitvm2ReceiptClaim { + let verifier_params = risc0_zkvm::SuccinctReceiptVerifierParameters::default(); + let control_root = verifier_params.control_root; + Self { + control_root, + pre: MaybePruned::Pruned(image_id.into()), + post: MaybePruned::Value(SystemState { pc: 0, merkle_root: Digest::ZERO }), + control_id: BN254_IDENTITY_CONTROL_ID, + journal: journal.into(), + } + } +} + +impl Digestible for ShrinkBitvm2ReceiptClaim { + fn digest(&self) -> Digest { + use sha2::{Digest as _, Sha256}; + + let mut control_root_bytes: [u8; 32] = self.control_root.as_bytes().try_into().unwrap(); + for byte in &mut control_root_bytes { + *byte = byte.reverse_bits(); + } + let mut hasher = Sha256::new(); + hasher.update(control_root_bytes); + hasher.update(self.pre.digest()); + hasher.update(self.post.digest()); + hasher.update(self.control_id.as_bytes()); + + let output_prefix = hasher.finalize(); + + // final blake3 hash + let mut hasher = blake3::Hasher::new(); + hasher.update(&output_prefix); + hasher.update(&self.journal); + + let mut digest_bytes: [u8; 32] = hasher.finalize().into(); + // trim to 31 bytes + digest_bytes[31] = 0; + // shift because of endianness + digest_bytes.rotate_right(1); + digest_bytes.into() + } +} + +pub async fn prove_and_verify( + proof_id: &str, + work_dir: &Path, + p254_receipt: SuccinctReceipt, + journal: Journal, +) -> Result { + let receipt_claim = p254_receipt.claim.clone().value()?; + + let seal_path = work_dir.join("input.json"); + let proof_path = work_dir.join("proof.json"); + let public_path = work_dir.join("public.json"); + + write_seal(&journal.bytes, p254_receipt, &receipt_claim, &seal_path).await?; + + let proof_json = generate_proof(work_dir, &proof_path).await?; + tracing::info!("{proof_id}: generated shrink groth16 proof"); + + let image_id = receipt_claim.pre.digest(); + let final_receipt = finalize(journal.bytes, receipt_claim, proof_json)?; + let output_bytes = decode_output(&public_path).await?; + tracing::info!("bvm2 decoded output byte length: {}", output_bytes.len()); + + check_output(image_id, &final_receipt, &output_bytes)?; + + verify_proof(&final_receipt, &output_bytes)?; + + Ok(final_receipt) +} + +fn check_output(image_id: Digest, final_receipt: &Receipt, output_bytes: &[u8]) -> Result<()> { + let expected_output_bytes: [u8; 32] = + ShrinkBitvm2ReceiptClaim::ok(image_id, final_receipt.journal.bytes.clone()).digest().into(); + + let expected_output_bytes: [u8; 31] = expected_output_bytes[1..=31].try_into()?; + tracing::info!("check output: computed output: {}", hex::encode(expected_output_bytes)); + + ensure!(expected_output_bytes == output_bytes, "check output: public output mismatch"); + + Ok(()) +} + +async fn decode_output(public_path: &Path) -> Result> { + let output_content_dec = tokio::fs::read_to_string(public_path).await?; + + // Convert output_content_dec from decimal to hex + let parsed_json: serde_json::Value = serde_json::from_str(&output_content_dec)?; + let output_str = parsed_json[0].as_str().context("read public output from json")?; + let output_content_hex = BigUint::from_str_radix(output_str, 10)?.to_str_radix(16); + + // If the length of the hexadecimal string is odd, add a leading zero + let output_content_hex = if output_content_hex.len() % 2 == 0 { + output_content_hex + } else { + format!("0{output_content_hex}") + }; + + Ok(hex::decode(&output_content_hex)?) +} + +fn finalize( + journal_bytes: Vec, + receipt_claim: ReceiptClaim, + proof_json: Groth16ProofJson, +) -> Result { + let seal: Groth16Seal = proof_json.try_into()?; + let verifier_parameters_digest = + Digest::from_hex("b72859b60cfe0bb13cbde70859fbc67ef9dbd5410bbe66bdb7be64a3dcf6814e") + .unwrap(); // TODO(ec2): dont hardcode this (actually not sure if this is ever even used, so could be digest zero) + let groth16_receipt = + Groth16Receipt::new(seal.to_vec(), receipt_claim.into(), verifier_parameters_digest); + let receipt = Receipt::new(risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), journal_bytes); + Ok(receipt) +} + +async fn write_seal( + journal_bytes: &[u8], + p254_receipt: SuccinctReceipt, + receipt_claim: &ReceiptClaim, + seal_path: &Path, +) -> Result<()> { + tracing::info!("Writing seal"); + + let seal_bytes = p254_receipt.get_seal_bytes(); + let mut seal_json = Vec::new(); + // seal_to_json(seal_bytes.as_slice(), &mut seal_json)?; // TODO: use the latest which has this... + let mut seal_json: serde_json::Value = + serde_json::from_str(std::str::from_utf8(seal_json.as_slice())?)?; + + let mut journal_bits = Vec::new(); + for byte in journal_bytes { + for i in 0..8 { + journal_bits.push((byte >> (7 - i)) & 1); + } + } + + let pre_state_digest_bits: Vec<_> = receipt_claim + .pre + .digest() + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + + let post_state_digest_bits: Vec<_> = receipt_claim + .post + .digest() + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + + let mut id_bn254_fr_bits: Vec = p254_receipt + .control_id + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + id_bn254_fr_bits.remove(248); + id_bn254_fr_bits.remove(248); + + let mut succinct_control_root_bytes: [u8; 32] = + risc0_zkvm::SuccinctReceiptVerifierParameters::default() + .control_root + .as_bytes() + .try_into()?; + + succinct_control_root_bytes.reverse(); + let succinct_control_root_hex = hex::encode(succinct_control_root_bytes); + + let a1_str = succinct_control_root_hex[0..32].to_string(); + let a0_str = succinct_control_root_hex[32..64].to_string(); + let a0_dec = to_decimal(&a0_str).context("a0_str returned None")?; + let a1_dec = to_decimal(&a1_str).context("a1_str returned None")?; + + let control_root = vec![a0_dec, a1_dec]; + + seal_json["journal_digest_bits"] = journal_bits.into(); + seal_json["pre_state_digest_bits"] = pre_state_digest_bits.into(); + seal_json["post_state_digest_bits"] = post_state_digest_bits.into(); + seal_json["id_bn254_fr_bits"] = id_bn254_fr_bits.into(); + seal_json["control_root"] = control_root.into(); + + tokio::fs::write(seal_path, serde_json::to_string_pretty(&seal_json)?).await?; + + Ok(()) +} + +// #!/bin/bash +// +// set -eoux +// +// ulimit -s unlimited +// ./verify_for_guest /mnt/input.json output.wtns +// rapidsnark verify_for_guest_final.zkey output.wtns /mnt/proof.json /mnt/public.json + +pub async fn generate_proof(work_dir: &Path, proof_path: &Path) -> Result { + tracing::info!("docker run ozancw/risc0-to-bitvm2-groth16-prover"); + + let volume = format!("{}:/mnt", work_dir.display()); + let status = Command::new("docker") + .args(["run", "--rm", "-v", &volume, "ozancw/risc0-to-bitvm2-groth16-prover"]) + .status() + .await?; + + anyhow::ensure!( + status.success(), + "ozancw/risc0-to-bitvm2-groth16-prover failed: {:?}", + status.code() + ); + + let proof_content = tokio::fs::read_to_string(proof_path).await?; + let proof_json: Groth16ProofJson = serde_json::from_str(&proof_content)?; + + Ok(proof_json) +} + +fn to_decimal(s: &str) -> Option { + let int = BigUint::from_str_radix(s, 16).ok(); + int.map(|n| n.to_str_radix(10)) +} + +pub fn verify_proof(final_receipt: &Receipt, output_bytes: &[u8]) -> Result<()> { + tracing::info!("verify_proof output bytes: {}", hex::encode(output_bytes)); + use ark_ff::PrimeField; + + let ark_proof = from_seal(&final_receipt.inner.groth16()?.seal); + let public_input_scalar = ark_bn254::Fr::from_be_bytes_mod_order(output_bytes); + let ark_vk = get_ark_verifying_key(); + let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); + let res = ark_groth16::Groth16::::verify_proof( + &ark_pvk, + &ark_proof, + &[public_input_scalar], + ) + .unwrap(); + tracing::info!("Shrink bitvm2 Proof verification result: {:?}", res); + + ensure!(res, "proof verification failed"); + + Ok(()) +} + +pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { + use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; + use std::str::FromStr; + + let alpha_g1 = G1Affine::new( + Fq::from_str( + "20491192805390485299153009773594534940189261866228447918068658471970481763042", + ) + .unwrap(), + Fq::from_str( + "9383485363053290200918347156157836566562967994039712273449902621266178545958", + ) + .unwrap(), + ); + + let beta_g2 = G2Affine::new( + Fq2::new( + Fq::from_str( + "6375614351688725206403948262868962793625744043794305715222011528459656738731", + ) + .unwrap(), + Fq::from_str( + "4252822878758300859123897981450591353533073413197771768651442665752259397132", + ) + .unwrap(), + ), + Fq2::new( + Fq::from_str( + "10505242626370262277552901082094356697409835680220590971873171140371331206856", + ) + .unwrap(), + Fq::from_str( + "21847035105528745403288232691147584728191162732299865338377159692350059136679", + ) + .unwrap(), + ), + ); + + let gamma_g2 = G2Affine::new( + Fq2::new( + Fq::from_str( + "10857046999023057135944570762232829481370756359578518086990519993285655852781", + ) + .unwrap(), + Fq::from_str( + "11559732032986387107991004021392285783925812861821192530917403151452391805634", + ) + .unwrap(), + ), + Fq2::new( + Fq::from_str( + "8495653923123431417604973247489272438418190587263600148770280649306958101930", + ) + .unwrap(), + Fq::from_str( + "4082367875863433681332203403145435568316851327593401208105741076214120093531", + ) + .unwrap(), + ), + ); + + let delta_g2 = G2Affine::new( + Fq2::new( + Fq::from_str( + "19928663713463533589216209779412278386769407450988172849262535478593422929698", + ) + .unwrap(), + Fq::from_str( + "19916519943909223643323234301580053157586699704876134064841182937085943926141", + ) + .unwrap(), + ), + Fq2::new( + Fq::from_str( + "4584600978911428195337731119171761277167808711062125916470525050324985708782", + ) + .unwrap(), + Fq::from_str( + "903010326261527050999816348900764705196723158942686053018929539519969664840", + ) + .unwrap(), + ), + ); + + let gamma_abc_g1 = vec![ + G1Affine::new( + Fq::from_str( + "6698887085900109660417671413804888867145870700073340970189635830129386206569", + ) + .unwrap(), + Fq::from_str( + "10431087902009508261375793061696708147989126018612269070732549055898651692604", + ) + .unwrap(), + ), + G1Affine::new( + Fq::from_str( + "20225609417084538563062516991929114218412992453664808591983416996515711931386", + ) + .unwrap(), + Fq::from_str( + "3236310410959095762960658876334609343091075204896196791007975095263664214628", + ) + .unwrap(), + ), + ]; + + ark_groth16::VerifyingKey { alpha_g1, beta_g2, gamma_g2, delta_g2, gamma_abc_g1 } +} +pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { + let json_content = std::fs::read_to_string("/home/etu/risc0-to-bitvm2/vkey_guest.json") + .expect("Failed to read verification key JSON file"); + let vk_json: risc0_groth16::VerifyingKeyJson = + serde_json::from_str(&json_content).expect("Failed to parse verification key JSON"); + + vk_json.verifying_key().unwrap() +} +pub fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { + use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; + use ark_ff::{Field, PrimeField}; + + let a = G1Affine::new( + Fq::from_be_bytes_mod_order(&seal_bytes[0..32]), + Fq::from_be_bytes_mod_order(&seal_bytes[32..64]), + ); + + let b = G2Affine::new( + Fq2::from_base_prime_field_elems([ + Fq::from_be_bytes_mod_order(&seal_bytes[96..128]), + Fq::from_be_bytes_mod_order(&seal_bytes[64..96]), + ]) + .unwrap(), + Fq2::from_base_prime_field_elems([ + Fq::from_be_bytes_mod_order(&seal_bytes[160..192]), + Fq::from_be_bytes_mod_order(&seal_bytes[128..160]), + ]) + .unwrap(), + ); + + let c = G1Affine::new( + Fq::from_be_bytes_mod_order(&seal_bytes[192..224]), + Fq::from_be_bytes_mod_order(&seal_bytes[224..256]), + ); + + ark_groth16::Proof { a, b, c } +} diff --git a/remappings.txt b/remappings.txt index 0fc8524fe..47a9ff6b3 100644 --- a/remappings.txt +++ b/remappings.txt @@ -3,7 +3,7 @@ openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ forge-std/=lib/forge-std/src/ -risc0/=lib/risc0-ethereum/contracts/src/ +risc0/=/home/homepup/repos/risc0-ethereum/contracts/src/ steel/=lib/steel/contracts/src/ solmate/=lib/solmate/src zkc/=lib/zkc/src/ From d2ccb6d5f8739b7fcf6346d3683954edab9b7a5d Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Tue, 16 Sep 2025 19:35:43 -0400 Subject: [PATCH 02/86] update boundless-market --- Cargo.lock | 796 +++++++++++------- Cargo.toml | 4 +- crates/boundless-market/build.rs | 6 +- .../src/contracts/bytecode.rs | 7 + crates/boundless-market/src/contracts/mod.rs | 15 + .../src/request_builder/mod.rs | 14 + crates/boundless-market/src/selector.rs | 20 +- crates/shrink_bitvm2/Cargo.toml | 2 +- crates/test-utils/Cargo.toml | 1 + crates/test-utils/src/verifier.rs | 43 +- 10 files changed, 585 insertions(+), 323 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a9720ef53..c2afb8cfc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -64,9 +64,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7413bbf62c40b5db916ad5a1c382df1affe42080e148d69932bb7f0a12f32e" +checksum = "36f63701831729cb154cf0b6945256af46c426074646c98b9d123148ba1d8bde" dependencies = [ "alloy-consensus", "alloy-contract", @@ -103,9 +103,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7345077623aaa080fc06735ac13b8fa335125c8550f9c4f64135a5bf6f79967" +checksum = "64a3bd0305a44fb457cae77de1e82856eadd42ea3cdf0dae29df32eb3b592979" dependencies = [ "alloy-eips", "alloy-primitives 1.3.1", @@ -128,9 +128,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501f83565d28bdb9d6457dd3b5d646e19db37709d0f27608a26a1839052ddade" +checksum = "7a842b4023f571835e62ac39fb8d523d19fcdbacfa70bf796ff96e7e19586f50" dependencies = [ "alloy-consensus", "alloy-eips", @@ -142,9 +142,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c36bb4173892aeeba1c6b9e4eff923fa3fe8583f6d3e07afe1cbc5a96a853a" +checksum = "591104333286b52b03ec4e8162983e31122b318d21ae2b0900d1e8b51727ad40" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -231,9 +231,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c219a87fb386a75780ddbdbbced242477321887e426b0f946c05815ceabe5e09" +checksum = "5cd749c57f38f8cbf433e651179fc5a676255e6b95044f467d49255d2b81725a" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -259,7 +259,7 @@ checksum = "0dbe7c66c859b658d879b22e8aaa19546dab726b0639f4649a424ada3d99349e" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.3.0", + "alloy-hardforks 0.3.3", "alloy-primitives 1.3.1", "alloy-rpc-types-eth", "alloy-sol-types", @@ -273,9 +273,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dbf4c6b1b733ba0efaa6cc5f68786997a19ffcd88ff2ee2ba72fdd42594375e" +checksum = "7d32cbf6c26d7d87e8a4e5925bbce41456e0bbeed95601add3443af277cd604e" dependencies = [ "alloy-eips", "alloy-primitives 1.3.1", @@ -300,9 +300,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.3.0" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20b180071d4f22db71702329101685ccff2e2a8f400d30a68ba907700163bf5" +checksum = "8d66cfdf265bf52c0c4a952960c854c3683c71ff2fc02c9b8c317c691fd3bc28" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -325,9 +325,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "334555c323fa2bb98f1d4c242b62da9de8c715557a2ed680a76cefbcac19fefd" +checksum = "f614019a029c8fec14ae661aa7d4302e6e66bdbfb869dab40e78dcfba935fc97" dependencies = [ "alloy-primitives 1.3.1", "alloy-sol-types", @@ -340,9 +340,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7ea377c9650203d7a7da9e8dee7f04906b49a9253f554b110edd7972e75ef34" +checksum = "be8b6d58e98803017bbfea01dde96c4d270a29e7aed3beb65c8d28b5ab464e0e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -366,9 +366,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f9ab9a9e92c49a357edaee2d35deea0a32ac8f313cfa37448f04e7e029c9d9" +checksum = "db489617bffe14847bf89f175b1c183e5dd7563ef84713936e2c34255cfbd845" dependencies = [ "alloy-consensus", "alloy-eips", @@ -379,9 +379,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0af8bdb3ee8da43a1f1eb9d1df3c8e3bd657dd20eddd3f00f03105c0fdd3f5" +checksum = "50536212c8b686907f66dbac78799b8d39e18558648963594544ac1a05f4306d" dependencies = [ "alloy-genesis", "alloy-hardforks 0.2.13", @@ -433,7 +433,7 @@ dependencies = [ "derive_more 2.0.1", "foldhash", "hashbrown 0.15.5", - "indexmap 2.11.0", + "indexmap 2.11.3", "itoa", "k256 0.13.4", "keccak-asm", @@ -441,7 +441,7 @@ dependencies = [ "proptest", "rand 0.9.2", "ruint", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "sha3", "tiny-keccak", @@ -449,9 +449,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a85361c88c16116defbd98053e3d267054d6b82729cdbef0236f7881590f924" +checksum = "ed90278374435e076a04dbddbb6d714bdd518eb274a64dbd70f65701429dd747" dependencies = [ "alloy-chains", "alloy-consensus", @@ -496,9 +496,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1eda077b102b167effaf0c9d9109b1232948a6c7fcaff74abdb5deb562a17" +checksum = "9f539a4caaa5496ad54af38f5615adb54cc7b3ec1a42e530e706291cce074f4a" dependencies = [ "alloy-json-rpc", "alloy-primitives 1.3.1", @@ -540,9 +540,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743fc964abb0106e454e9e8683fb0809fb32940270ef586a58e913531360b302" +checksum = "33732242ca63f107f5f8284190244038905fb233280f4b7c41f641d4f584d40d" dependencies = [ "alloy-json-rpc", "alloy-primitives 1.3.1", @@ -566,9 +566,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6445ccdc73c8a97e1794e9f0f91af52fb2bbf9ff004339a801b0293c3928abb" +checksum = "bb2683049c5f3037d64722902e2c1081f3d45de68696aca0511bbea834905746" dependencies = [ "alloy-primitives 1.3.1", "alloy-rpc-types-anvil", @@ -583,9 +583,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242ff10318efd61c4b17ac8584df03a8db1e12146704c08b1b69d070cd4a1ebf" +checksum = "b757081f2a68e683de3731108494fa058036d5651bf10141ec2430bc1315c362" dependencies = [ "alloy-primitives 1.3.1", "alloy-rpc-types-eth", @@ -595,9 +595,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97372c51a14a804fb9c17010e3dd6c117f7866620b264e24b64d2259be44bcdf" +checksum = "18f27c0c41a16cd0af4f5dbf791f7be2a60502ca8b0e840e0ad29803fac2d587" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -606,9 +606,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a005a343cae9a0d4078d2f85a666493922d4bfb756229ea2a45a4bafd21cb9f1" +checksum = "d46cb226f1c8071875f4d0d8a0eb3ac571fcc49cd3bcdc20a5818de7b6ef0634" dependencies = [ "alloy-primitives 1.3.1", "derive_more 2.0.1", @@ -618,9 +618,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e214c7667f88b2f7e48eb8428eeafcbf6faecda04175c5f4d13fdb2563333ac" +checksum = "dec35a39206f0e04e8544d763c9fe324cc01f74de8821ef4b61e25ac329682f9" dependencies = [ "alloy-consensus", "alloy-eips", @@ -636,9 +636,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "672286c19528007df058bafd82c67e23247b4b3ebbc538cbddc705a82d8a930f" +checksum = "7f5812f81c3131abc2cd8953dc03c41999e180cff7252abbccaba68676e15027" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -657,9 +657,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53c5ea8e10ca72889476343deb98c050da7b85e119a55a2a02a9791cb8242e4" +checksum = "1070e7e92dae6a9c48885980f4f9ca9faa70f945fcd62fbb94472182ca08854f" dependencies = [ "alloy-primitives 1.3.1", "alloy-rpc-types-eth", @@ -671,9 +671,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1c7ee378e899353e05a0d9f5b73b5d57bdac257532c6acd98eaa6b093fe642" +checksum = "7f070754e160f6e34038305f472137eeb04170586d60d69c5d1e06fefe362a1f" dependencies = [ "alloy-primitives 1.3.1", "alloy-rpc-types-eth", @@ -683,9 +683,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aae653f049267ae7e040eab6c9b9a417064ca1a6cb21e3dd59b9f1131ef048f" +checksum = "04dfe41a47805a34b848c83448946ca96f3d36842e8c074bcf8fa0870e337d12" dependencies = [ "alloy-primitives 1.3.1", "serde", @@ -694,9 +694,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97cedce202f848592b96f7e891503d3adb33739c4e76904da73574290141b93" +checksum = "f79237b4c1b0934d5869deea4a54e6f0a7425a8cd943a739d6293afdf893d847" dependencies = [ "alloy-primitives 1.3.1", "async-trait", @@ -709,9 +709,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83ae7d854db5b7cdd5b9ed7ad13d1e5e034cdd8be85ffef081f61dc6c9e18351" +checksum = "d6e90a3858da59d1941f496c17db8d505f643260f7e97cdcdd33823ddca48fc1" dependencies = [ "alloy-consensus", "alloy-network", @@ -747,7 +747,7 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.0", + "indexmap 2.11.3", "proc-macro-error2", "proc-macro2", "quote", @@ -798,9 +798,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08b383bc903c927635e39e1dae7df2180877d93352d1abd389883665a598afc" +checksum = "cb43750e137fe3a69a325cd89a8f8e2bbf4f83e70c0f60fbe49f22511ca075e8" dependencies = [ "alloy-json-rpc", "alloy-primitives 1.3.1", @@ -822,9 +822,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e58dee1f7763ef302074b645fc4f25440637c09a60e8de234b62993f06c0ae3" +checksum = "f9b42c7d8b666eed975739201f407afc3320d3cd2e4d807639c2918fc736ea67" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -837,9 +837,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ae5c6655e5cda1227f0c70b7686ecfb8af856771deebacad8dab9a7fbc51864" +checksum = "f07b920e2d4ec9b08cb12a32fa8e5e95dfcf706fe1d7f46453e24ee7089e29f0" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -857,9 +857,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb2141958a1f13722cb20a2e01c130fb375209fa428849ae553c1518bc33a0d" +checksum = "83db1cc29cce5f692844d6cf1b6b270ae308219c5d90a7246a74f3479b9201c2" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -899,7 +899,7 @@ dependencies = [ "alloy-rlp", "arrayvec", "derive_more 2.0.1", - "nybbles 0.4.3", + "nybbles 0.4.4", "serde", "smallvec", "tracing", @@ -907,23 +907,17 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.27" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d14809f908822dbff0dc472c77ca4aa129ab12e22fd9bff2dd1ef54603e68e3d" +checksum = "e434e0917dce890f755ea774f59d6f12557bc8c7dd9fa06456af80cfe0f0181e" dependencies = [ "alloy-primitives 1.3.1", - "darling", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.106", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -1502,20 +1496,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.8", + "rustix 1.1.2", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -1540,9 +1534,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel 2.5.0", "async-io", @@ -1553,14 +1547,14 @@ dependencies = [ "cfg-if", "event-listener 5.4.1", "futures-lite", - "rustix 1.0.8", + "rustix 1.1.2", ] [[package]] name = "async-signal" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ "async-io", "async-lock", @@ -1568,10 +1562,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.8", + "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -1758,9 +1752,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" dependencies = [ "aws-lc-sys", "zeroize", @@ -1768,11 +1762,11 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" dependencies = [ - "bindgen 0.69.5", + "bindgen", "cc", "cmake", "dunce", @@ -1806,9 +1800,9 @@ dependencies = [ [[package]] name = "aws-sdk-cloudwatch" -version = "1.89.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82bb07ec590346dd4cb09ae7f634d20cdca59d5a0443f2f2750c15ea5e98b2f4" +checksum = "e6897407ce6e9d234a6fff32b3ea077f657cf9a2dcf9d0c7971d732ec903e4e4" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1832,9 +1826,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.104.0" +version = "1.106.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c488cd6abb0ec9811c401894191932e941c5f91dc226043edacd0afa1634bc" +checksum = "2c230530df49ed3f2b7b4d9c8613b72a04cdac6452eede16d587fc62addfabac" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1866,9 +1860,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.83.0" +version = "1.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cd43af212d2a1c4dedff6f044d7e1961e5d9e7cfe773d70f31d9842413886" +checksum = "357a841807f6b52cb26123878b3326921e2a25faca412fabdd32bd35b7edd5d3" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1888,9 +1882,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.84.0" +version = "1.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec4a95bd48e0db7a424356a161f8d87bd6a4f0af37204775f0da03d9e39fc3" +checksum = "67e05f33b6c9026fecfe9b3b6740f34d41bc6ff641a6a32dabaab60209245b75" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1910,9 +1904,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.85.0" +version = "1.86.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" +checksum = "e7d835f123f307cafffca7b9027c14979f1d403b417d8541d67cf252e8a21e35" dependencies = [ "aws-credential-types", "aws-runtime", @@ -2061,7 +2055,7 @@ dependencies = [ "hyper-rustls 0.24.2", "hyper-rustls 0.27.7", "hyper-util", - "indexmap 2.11.0", + "indexmap 2.11.3", "pin-project-lite", "rustls 0.21.12", "rustls 0.23.31", @@ -2124,9 +2118,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3946acbe1ead1301ba6862e712c7903ca9bb230bdf1fbd1b5ac54158ef2ab1f" +checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -2362,29 +2356,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.9.4", - "cexpr", - "clang-sys", - "itertools 0.11.0", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.106", - "which", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -2400,7 +2371,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.106", ] @@ -2593,7 +2564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -2874,6 +2845,7 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", + "hex", "postcard", "rand 0.9.2", "reqwest", @@ -3030,18 +3002,18 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" dependencies = [ "proc-macro2", "quote", @@ -3117,11 +3089,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.12" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -3141,7 +3113,7 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "thiserror 2.0.16", @@ -3168,9 +3140,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.35" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ "find-msvc-tools", "jobserver", @@ -3201,17 +3173,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -3251,7 +3222,7 @@ dependencies = [ "ark-bn254", "ark-ff 0.5.0", "ark-serialize 0.5.0", - "bindgen 0.72.1", + "bindgen", "byteorder", "indicatif", "libc", @@ -3305,9 +3276,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.57" +version = "4.5.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d9501bd3f5f09f7bbee01da9a511073ed30a80cd7a509f1214bb74eadea71ad" +checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" dependencies = [ "clap", ] @@ -3378,15 +3349,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -3699,8 +3669,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -3717,13 +3697,39 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.106", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", "syn 2.0.106", ] @@ -3845,7 +3851,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -3966,7 +3972,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -4314,22 +4320,23 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" dependencies = [ "serde", + "serde_core", "typeid", ] [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -4480,9 +4487,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" [[package]] name = "find_cuda_helper" @@ -4511,6 +4518,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.2" @@ -4780,7 +4793,7 @@ dependencies = [ "libc", "log", "rustversion", - "windows", + "windows 0.61.3", ] [[package]] @@ -4817,7 +4830,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.3+wasi-0.2.4", + "wasi 0.14.7+wasi-0.2.4", "wasm-bindgen", ] @@ -4828,7 +4841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.0", + "indexmap 2.11.3", "stable_deref_trait", ] @@ -4898,9 +4911,9 @@ dependencies = [ [[package]] name = "gmp-mpfr-sys" -version = "1.6.7" +version = "1.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a636fb6a653382a379ee1e5593dacdc628667994167024c143214cafd40c1a86" +checksum = "60f8970a75c006bb2f8ae79c6768a116dd215fa8346a87aed99bf9d82ca43394" dependencies = [ "libc", "windows-sys 0.60.2", @@ -4967,7 +4980,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.0", + "indexmap 2.11.3", "slab", "tokio", "tokio-util", @@ -4986,7 +4999,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.0", + "indexmap 2.11.3", "slab", "tokio", "tokio-util", @@ -5079,9 +5092,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -5385,9 +5395,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -5411,9 +5421,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -5421,7 +5431,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.0", ] [[package]] @@ -5620,13 +5630,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.0" +version = "2.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" dependencies = [ "equivalent", "hashbrown 0.15.5", "serde", + "serde_core", ] [[package]] @@ -5800,9 +5811,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "6247da8b8658ad4e73a186e747fcc5fc2a29f979d6fe6269127fdb5fd08298d0" dependencies = [ "once_cell", "wasm-bindgen", @@ -5908,7 +5919,7 @@ dependencies = [ "ena", "itertools 0.11.0", "lalrpop-util", - "petgraph", + "petgraph 0.6.5", "pico-args", "regex", "regex-syntax", @@ -6009,12 +6020,6 @@ dependencies = [ "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "levenshtein" version = "1.0.5" @@ -6077,9 +6082,9 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.4", "libc", @@ -6178,9 +6183,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" @@ -6200,9 +6205,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -6815,7 +6820,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -6860,9 +6865,9 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +checksum = "f0418987d1aaed324d95b4beffc93635e19be965ed5d63ec07a35980fe3b71a4" dependencies = [ "alloy-rlp", "cfg-if", @@ -7065,7 +7070,7 @@ version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -7158,9 +7163,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", "thiserror 2.0.16", @@ -7173,8 +7178,18 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.11.0", + "fixedbitset 0.4.2", + "indexmap 2.11.3", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset 0.5.7", + "indexmap 2.11.3", ] [[package]] @@ -7318,16 +7333,16 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.0", ] [[package]] @@ -7470,11 +7485,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.5", ] [[package]] @@ -7597,7 +7612,7 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph", + "petgraph 0.7.1", "prettyplease", "prost", "prost-types", @@ -7659,7 +7674,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls 0.23.31", "socket2 0.6.0", "thiserror 2.0.16", @@ -7679,7 +7694,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls 0.23.31", "rustls-pki-types", "slab", @@ -7889,14 +7904,14 @@ dependencies = [ [[package]] name = "reflink-copy" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c81d000a2c524133cc00d2f92f019d399e57906c3b7119271a2495354fe895" +checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.0.8", - "windows", + "rustix 1.1.2", + "windows 0.62.0", ] [[package]] @@ -8300,7 +8315,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "ruint", - "semver 1.0.26", + "semver 1.0.27", "serde", "tracing", ] @@ -8322,7 +8337,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "stability", @@ -8703,7 +8718,7 @@ dependencies = [ "rrs-lib", "rustc-demangle", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "sha2 0.10.9", "stability", @@ -8885,12 +8900,6 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -8918,7 +8927,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] @@ -8936,15 +8945,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.0", ] [[package]] @@ -8969,7 +8978,7 @@ dependencies = [ "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.4", + "rustls-webpki 0.103.6", "subtle", "zeroize", ] @@ -8995,7 +9004,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.4.0", ] [[package]] @@ -9029,9 +9038,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" dependencies = [ "aws-lc-rs", "ring", @@ -9080,7 +9089,7 @@ checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_with", "sha2 0.10.9", @@ -9120,11 +9129,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -9264,9 +9273,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ "bitflags 2.9.4", "core-foundation 0.10.1", @@ -9277,9 +9286,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -9296,11 +9305,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -9326,18 +9336,28 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.225" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -9346,25 +9366,27 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.3", "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_path_to_error" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" dependencies = [ "itoa", "serde", + "serde_core", ] [[package]] @@ -9408,7 +9430,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.0", + "indexmap 2.11.3", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -9424,7 +9446,7 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -9448,7 +9470,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.3", "itoa", "ryu", "serde", @@ -9749,9 +9771,9 @@ dependencies = [ [[package]] name = "sppark" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdc4f02f557e3037bbe2a379cac8be6e014a67beb7bf0996b536979392f6361" +checksum = "d9c900139f3f6fdc8db217881a946adf00e935102fdd82b0e1bc19bacbffa311" dependencies = [ "cc", "which", @@ -9789,7 +9811,7 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.0", + "indexmap 2.11.3", "log", "memchr", "once_cell", @@ -10179,15 +10201,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.0", ] [[package]] @@ -10487,8 +10509,8 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] @@ -10500,20 +10522,50 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a197c0ec7d131bfc6f7e82c8442ba1595aeab35da7adbf05b6b73cd06a16b6be" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.3", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.23.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2ad0b7ae9cfeef5605163839cb9221f453399f15cfb5c10be9885fcf56611f9" +dependencies = [ + "indexmap 2.11.3", + "toml_datetime 0.7.1", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" @@ -10864,9 +10916,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-normalization" @@ -10967,7 +11019,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.11.3", "serde", "serde_json", "utoipa-gen", @@ -11092,9 +11144,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.3+wasi-0.2.4" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] @@ -11107,21 +11168,22 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "4ad224d2776649cfb4f4471124f8176e54c1cca67a88108e30a0cd98b90e7ad3" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "3a1364104bdcd3c03f22b16a3b1c9620891469f5e9f09bc38b2db121e593e732" dependencies = [ "bumpalo", "log", @@ -11133,9 +11195,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "9c0a08ecf5d99d5604a6666a70b3cde6ab7cc6142f5e641a8ef48fc744ce8854" dependencies = [ "cfg-if", "js-sys", @@ -11146,9 +11208,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "0d7ab4ca3e367bb1ed84ddbd83cc6e41e115f8337ed047239578210214e36c76" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11156,9 +11218,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "4a518014843a19e2dbbd0ed5dfb6b99b23fb886b14e6192a00803a3e14c552b0" dependencies = [ "proc-macro2", "quote", @@ -11169,9 +11231,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "255eb0aa4cc2eea3662a00c2bbd66e93911b7361d5e0fcd62385acfd7e15dcee" dependencies = [ "unicode-ident", ] @@ -11220,9 +11282,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "50462a022f46851b81d5441d1a6f5bac0b21a1d72d64bd4906fbdd4bf7230ec7" dependencies = [ "js-sys", "wasm-bindgen", @@ -11312,11 +11374,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -11331,11 +11393,24 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-link", - "windows-numerics", + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9579d0e6970fd5250aa29aba5994052385ff55cf7b28a059e484bb79ea842e42" +dependencies = [ + "windows-collections 0.3.0", + "windows-core 0.62.0", + "windows-future 0.3.0", + "windows-link 0.2.0", + "windows-numerics 0.3.0", ] [[package]] @@ -11344,7 +11419,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", +] + +[[package]] +name = "windows-collections" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90dd7a7b86859ec4cdf864658b311545ef19dbcf17a672b52ab7cefe80c336f" +dependencies = [ + "windows-core 0.62.0", ] [[package]] @@ -11355,9 +11439,22 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", ] [[package]] @@ -11366,9 +11463,20 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", - "windows-threading", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2194dee901458cb79e1148a4e9aac2b164cc95fa431891e7b296ff0b2f1d8a6" +dependencies = [ + "windows-core 0.62.0", + "windows-link 0.2.0", + "windows-threading 0.2.0", ] [[package]] @@ -11399,14 +11507,30 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce3498fe0aba81e62e477408383196b4b0363db5e0c27646f932676283b43d8" +dependencies = [ + "windows-core 0.62.0", + "windows-link 0.2.0", ] [[package]] @@ -11415,9 +11539,9 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -11426,7 +11550,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -11435,7 +11568,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -11474,6 +11616,15 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -11511,7 +11662,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -11528,7 +11679,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-threading" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab47f085ad6932defa48855254c758cdd0e2f2d48e62a34118a268d8f345e118" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -11703,9 +11863,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" @@ -11773,9 +11933,9 @@ dependencies = [ [[package]] name = "yaml-rust2" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" dependencies = [ "arraydeque", "encoding_rs", @@ -11814,18 +11974,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -11917,7 +12077,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.0", + "indexmap 2.11.3", "memchr", "thiserror 2.0.16", "zopfli", @@ -11932,7 +12092,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.11.0", + "indexmap 2.11.3", "memchr", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index deae9f9f3..18617d131 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,6 +72,7 @@ risc0-ethereum-contracts = { version = "3.0.1" } risc0-zkvm = { version = "3.0.3", default-features = false } risc0-povw = { version = "0.4", default-features = false } risc0-zkp = { version = "3.0.2" } +risc0-groth16 = { version = "3.0.2" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" @@ -106,4 +107,5 @@ lto = true [patch.crates-io] risc0-ethereum-contracts = { path = "/home/homepup/repos/risc0-ethereum/contracts" } -risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } \ No newline at end of file +risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } +# risc0-groth16 = { path = "/home/homepup/repos/risc0/risc0/groth16" } diff --git a/crates/boundless-market/build.rs b/crates/boundless-market/build.rs index 3f3bd6160..a3445d485 100644 --- a/crates/boundless-market/build.rs +++ b/crates/boundless-market/build.rs @@ -25,7 +25,7 @@ const EXCLUDE_CONTRACTS: [&str; 2] = [ ]; // Contracts to copy bytecode for. Used for deploying contracts in tests. -const ARTIFACT_TARGET_CONTRACTS: [&str; 8] = [ +const ARTIFACT_TARGET_CONTRACTS: [&str; 9] = [ "BoundlessMarket", "HitPoints", "RiscZeroMockVerifier", @@ -33,6 +33,7 @@ const ARTIFACT_TARGET_CONTRACTS: [&str; 8] = [ "ERC1967Proxy", "RiscZeroVerifierRouter", "RiscZeroGroth16Verifier", + "RiscZeroBitvm2Groth16Verifier", "MockCallback", ]; @@ -266,6 +267,9 @@ fn get_interfaces(contract: &str) -> &str { "RiscZeroGroth16Verifier" => { r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# } + "RiscZeroBitvm2Groth16Verifier" => { + r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# + } "MockCallback" => { r#"constructor(address verifier, address boundlessMarket, bytes32 imageId, uint256 _targetGas) {} function getCallCount() external view returns (uint256) {}"# diff --git a/crates/boundless-market/src/contracts/bytecode.rs b/crates/boundless-market/src/contracts/bytecode.rs index 59633e41f..cd6395efc 100644 --- a/crates/boundless-market/src/contracts/bytecode.rs +++ b/crates/boundless-market/src/contracts/bytecode.rs @@ -51,6 +51,13 @@ alloy::sol! { } } +alloy::sol! { + #[sol(rpc, bytecode = "6101808060405234610a4d576040816115a280380380916100208285610a51565b833981010312610a4d5780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363305f67726f746831362e47726f74683136526563656970745665726981526d66696572506172616d657465727360901b602082810191909152905f90602e9060025afa156108e1575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e06040519161030e8284610a51565b60068352601f19820136602085013760205f604051828101907f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356982527f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c60408201526040815261037f606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f516103a584610a88565b5260205f604051828101907f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa82527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb1264604082015260408152610408606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f5161042e84610a95565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108e1575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526104c8606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec860808201526080815261059460a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261066060a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519760205f604051828101907f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d82527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af2260408201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4860608201527f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee60808201526080815261072c60a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108e1575f8051610140526101008190526060610120526020610160525b88518061010051101561094a575f19810190808211610936576101005190035f190190811161093657895181101561092257610160519060051b8a01015190604051916107e76101205184610a51565b6002835261016051604090369085013761080083610a88565b5261080a82610a95565b5260405161081b6101605182610a51565b5f8152601f196101605101366101605183013781519061ffff821161090a5791604051928391610140516101605184015260408301815190916101605101905f905b8082106108ec5750505092816108a994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a51565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108e1575f5161010080516001019052610797565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c2835261098e60e284610a51565b60405192518091845e820191818352806101605193039060025afa156108e1575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a0840152608283526109e860a284610a51565b60405192518091845e820191818352806101605193039060025afa156108e1575f516001600160e01b0319168152604051610afc9182610aa6833960805182610689015260a05182610644015260c0518261029001525181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7457604052565b634e487b7160e01b5f52604160045260245ffd5b8051156109225760200190565b805160011015610922576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107a4565b6106b9565b610674565b61062f565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ce565b906108f9565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108dc565b810190610976565b80516101e66040848401519301519460246101c686610794565b91013581526040516343753b4d60e01b8152958694859460048601610a67565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610773565b810190610a01565b5f6101f9565b503d610220565b610ae4565b61025461017084610276946108ce565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d7576103607f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee9160206040519161038083016040526101043561034381610811565b61034f61012435610811565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356987526103c9828801947f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c865288610842565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d6103008201527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af226103208201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4861034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761076e57604052565b61073f565b90601f801991011681019081106001600160401b0382111761076e57604052565b906107a26040519283610773565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761076e57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47111561083a57565b5f805260205ff35b604051917f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa83527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb126460208401526040830190815260408360608160076107cf195a01fa1561083a57815190526020810151606083015260409160809060066107cf195a01fa1561083a57565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610914575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d7576040519161094a604084610773565b8290604081019283116100d757905b8282106109665750505090565b8135815260209182019101610959565b610100818303126100d7576040519161098e83610753565b610998818361092f565b835280605f830112156100d75760409182516109b48482610773565b8060c08301928484116100d75785809101915b8483106109e75750505060208501526109e0919061092f565b9082015290565b6020906109f4878561092f565b81520191019085906109c7565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a2a57505050565b6020806001928551815201930191019091610a1d565b905f905b60018210610a5157505050565b6020806001928551815201930191019091610a44565b919493929094610a7c83610120810197610a19565b5f604084015b60028210610aaa5750505081610aa36101009260c06107a296950190610a19565b0190610a40565b82515f90825b60028310610ace575050506020604060019201930191019091610a82565b6020806001928451815201920192019190610ab0565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] + contract RiscZeroBitvm2Groth16Verifier { + constructor(bytes32 control_root, bytes32 bn254_control_id) {} + } +} + alloy::sol! { #[sol(rpc, bytecode = "60e0346100bb57601f61087938819003918201601f19168301916001600160401b038311848410176100bf578084926080946040528339810103126100bb578051906001600160a01b03821682036100bb5760208101516001600160a01b03811681036100bb57606060408301519201519260805260a05260c0526001556040516107a590816100d4823960805181818161039301526106a3015260a05181818160800152610127015260c05181818161015701526106520152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816308c84e7014610691575080634b28f9a214610675578063549206ed1461063b5780636330d59d1461061e578063a12da43f146100cf578063a96b2dc0146100b25763c65c72911461006b575f80fd5b346100af57806003193601126100af576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b80fd5b50346100af57806003193601126100af5760209054604051908152f35b503461058457606036600319011261058457600435906024356001600160401b038111610584576101049036906004016106d2565b6044356001600160401b038111610584576101239036906004016106d2565b94907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036105e8577f000000000000000000000000000000000000000000000000000000000000000082036105b05760205f6040518587823780868101838152039060025afa15610579575f515f60806040516101a9816106ff565b8281528260208201526040516101be8161071a565b83815283602082015260408201528260608201520152604051906101e18261071a565b5f82525f6020830152604051906101f78261071a565b8152602081015f815260205f600c6040516b1c9a5cd8cc0b93dd5d1c1d5d60a21b815260025afa15610579576020915f918251915190516040519185830193845260408301526060820152600160f91b60808201526062815261025b608282610735565b604051918291518091835e8101838152039060025afa15610579575f5190604051610285816106ff565b84815260208101907fa3acc27117418996340b84e5a90f3ef4c49d22c79e44aad822ec9c313e1eb8e282526040810192835260608101915f83526080820194855260205f60126040517172697363302e52656365697074436c61696d60701b815260025afa15610579575f51925191519051945184515190600382101561059c57945160209081015160408051808401978852908101959095526060850193909352608084019690965260a08301949094526001600160f81b031960f894851b811660c0840152931b90921660c4830152600160fa1b60c883015260aa82525f9161037160ca82610735565b604051918291518091835e8101838152039060025afa15610579575f516040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316916103c58261071a565b6001600160401b038911610588576040516103ea601f8b01601f191660200182610735565b898152368a86011161058457898560208301375f60208b83010152825260208201908152823b15610584576020925f926084604051809681958294631599ead560e01b845282600485015251604060248501528051928391826064870152018585015e8282018401889052516044830152601f01601f191681010301915afa80156105795761053d575b506104c9907f47ed3f58af358c0ab2b6b2bf11812f81b240613fa30c7d845e1e4f41ce3a0f4e9495966104bb5a976040519687968752606060208801526060870191610756565b918483036040860152610756565b0390a16104d68254610776565b8255815b5a8203828111610529576001541115610525576105209060405160208101908282526020815261050b604082610735565b51902084526002602052806040852055610776565b6104da565b8280f35b634e487b7160e01b84526011600452602484fd5b7f47ed3f58af358c0ab2b6b2bf11812f81b240613fa30c7d845e1e4f41ce3a0f4e9495509061056f5f6104c993610735565b5f95945090610474565b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b60405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908125b5859d948125160821b6044820152606490fd5b60405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21039b2b73232b960911b6044820152606490fd5b34610584575f366003190112610584576020600154604051908152f35b34610584575f3660031901126105845760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610584575f3660031901126105845760205f54604051908152f35b34610584575f366003190112610584577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b9181601f84011215610584578235916001600160401b038311610584576020838186019501011161058457565b60a081019081106001600160401b0382111761058857604052565b604081019081106001600160401b0382111761058857604052565b90601f801991011681019081106001600160401b0382111761058857604052565b908060209392818452848401375f828201840152601f01601f1916010190565b5f1981146107845760010190565b634e487b7160e01b5f52601160045260245ffdfea164736f6c634300081a000a")] contract MockCallback { diff --git a/crates/boundless-market/src/contracts/mod.rs b/crates/boundless-market/src/contracts/mod.rs index 2434cbbb1..4134b39f7 100644 --- a/crates/boundless-market/src/contracts/mod.rs +++ b/crates/boundless-market/src/contracts/mod.rs @@ -565,6 +565,21 @@ impl Requirements { false => Self { selector: FixedBytes::from(Selector::groth16_latest() as u32), ..self }, } } + + /// Set the selector for a shrink bitvm2 proof. + /// + /// This will set the selector to the appropriate value based on the current environment. + /// In dev mode, the selector will be set to `FakeReceipt`, otherwise it will be set + /// to the latest ShrinkBitvm2 selector. + #[cfg(not(target_os = "zkvm"))] + pub fn with_shrink_bitvm2_proof(self) -> Self { + match crate::util::is_dev_mode() { + true => Self { selector: FixedBytes::from(Selector::FakeReceipt as u32), ..self }, + false => { + Self { selector: FixedBytes::from(Selector::shrink_bitvm2_latest() as u32), ..self } + } + } + } } /// The data that is used to construct the claim for a fulfillment. diff --git a/crates/boundless-market/src/request_builder/mod.rs b/crates/boundless-market/src/request_builder/mod.rs index 3ef1b3c52..8dff5eef6 100644 --- a/crates/boundless-market/src/request_builder/mod.rs +++ b/crates/boundless-market/src/request_builder/mod.rs @@ -552,6 +552,20 @@ impl RequestParams { }; Self { requirements, ..self } } + + /// Request a stand-alone Shrink Bitvm2 proof for this request. + /// + /// This is a convinience method to set the selector on the requirements. Note that calling + /// [RequestParams::with_requirements] after this function will overwrite the change. + pub fn with_shrink_bitvm2_proof(self) -> Self { + let mut requirements = self.requirements; + requirements.selector = match crate::util::is_dev_mode() { + true => Some((Selector::FakeReceipt as u32).into()), + false => Some((Selector::shrink_bitvm2_latest() as u32).into()), + }; + // TODO(ec2): should we automatically set the predicate type to claim digest match here? + Self { requirements, ..self } + } } impl Debug for RequestParams { diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index 015cb8066..3088f3a3c 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -38,6 +38,8 @@ pub enum ProofType { Groth16, /// Inclusion proof type. Inclusion, + /// BitVM2 compatible Groth16 proof type. + ShrinkBitvm2, } /// A struct to hold the supported selectors. @@ -51,7 +53,11 @@ impl Default for SupportedSelectors { fn default() -> Self { let mut supported_selectors = Self::new() .with_selector(UNSPECIFIED_SELECTOR, ProofType::Any) - .with_selector(FixedBytes::from(Selector::groth16_latest() as u32), ProofType::Groth16); + .with_selector(FixedBytes::from(Selector::groth16_latest() as u32), ProofType::Groth16) + .with_selector( + FixedBytes::from(Selector::shrink_bitvm2_latest() as u32), + ProofType::ShrinkBitvm2, + ); if is_dev_mode() { supported_selectors = supported_selectors .with_selector(FixedBytes::from(Selector::FakeReceipt as u32), ProofType::Any); @@ -124,6 +130,18 @@ pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { } } +/// Check if a selector is a bitvm2 groth16 selector. +pub fn is_shrink_bitvm2_selector(selector: FixedBytes<4>) -> bool { + let sel = Selector::from_bytes(selector.into()); + match sel { + Some(selector) => { + selector.get_type() == SelectorType::FakeReceipt + || selector.get_type() == SelectorType::ShrinkBitvm2 + } + None => false, + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/shrink_bitvm2/Cargo.toml b/crates/shrink_bitvm2/Cargo.toml index d70fa9116..94f7af063 100644 --- a/crates/shrink_bitvm2/Cargo.toml +++ b/crates/shrink_bitvm2/Cargo.toml @@ -15,7 +15,7 @@ anyhow = { workspace = true } hex = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" -risc0-groth16 = { version = "3.0.2", features = ["prove"] } +risc0-groth16 = { workspace = true, features = ["prove"] } risc0-zkvm = { workspace = true, features = ["std", "client", "prove"] } serde = { workspace = true } serde_json = { workspace = true } diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index 323fd7fb8..ecfe1ea56 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -22,6 +22,7 @@ derive_builder = { version = "0.20.2", optional = true } guest-assessor = { workspace = true } guest-set-builder = { workspace = true } guest-util = { workspace = true } +hex = { workspace = true } postcard = { version = "1.1", features = ["alloc"], optional = true } rand = { version = "0.9", optional = true } risc0-aggregation = { workspace = true } diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index 567e7708b..eec104d26 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -19,8 +19,10 @@ use alloy::{ use anyhow::{Context, Result}; use boundless_market::contracts::bytecode::RiscZeroVerifierRouter::RiscZeroVerifierRouterInstance; use boundless_market::contracts::bytecode::{ - RiscZeroGroth16Verifier, RiscZeroMockVerifier, RiscZeroSetVerifier, RiscZeroVerifierRouter, + RiscZeroBitvm2Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, + RiscZeroSetVerifier, RiscZeroVerifierRouter, }; +use hex::FromHex; use risc0_aggregation::SetInclusionReceiptVerifierParameters; use risc0_circuit_recursion::control_id::{ALLOWED_CONTROL_ROOT, BN254_IDENTITY_CONTROL_ID}; use risc0_zkvm::sha::{Digest, Digestible}; @@ -47,6 +49,19 @@ pub async fn deploy_groth16_verifier( Ok(*instance.address()) } +/// Deploy a RiscZeroBitvm2Groth16Verifier contract +pub async fn deploy_bitvm2_verifier( + deployer_provider: P, + control_root: FixedBytes<32>, + bn254_control_id: FixedBytes<32>, +) -> Result
{ + let instance = + RiscZeroBitvm2Groth16Verifier::deploy(deployer_provider, control_root, bn254_control_id) + .await + .context("failed to deploy RiscZeroBitvm2Groth16Verifier")?; + Ok(*instance.address()) +} + /// Deploy a RiscZeroVerifierRouter contract pub async fn deploy_verifier_router( deployer_provider: P, @@ -118,6 +133,32 @@ pub async fn setup_verifiers( let router_instance = RiscZeroVerifierRouterInstance::new(verifier_router, deployer_provider.clone()); + // Deploying the bitvm2 verifier + match is_dev_mode() { + true => println!("Skipping Bitvm2 verifier deployment in dev mode"), + false => { + let control_root = ALLOWED_CONTROL_ROOT; + let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; + bn254_control_id.as_mut_bytes().reverse(); + let verifier_parameters_digest = Digest::from_hex( + "b72859b60cfe0bb13cbde70859fbc67ef9dbd5410bbe66bdb7be64a3dcf6814e", // TODO(ec2): fixme + ) + .unwrap(); + let bvm2_verifier = deploy_bitvm2_verifier( + &deployer_provider, + <[u8; 32]>::from(control_root).into(), + <[u8; 32]>::from(bn254_control_id).into(), + ) + .await?; + + let bvm2_selector = verifier_parameters_digest.as_bytes()[..4].try_into()?; + + let call = + &router_instance.addVerifier(bvm2_selector, bvm2_verifier).from(deployer_address); + let _ = call.send().await?; + } + } + // Add groth16 verifier to router let call = &router_instance .addVerifier(groth16_selector.into(), groth16_verifier) From 7104d74b450551609530510a2b96319e16e7a217 Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Tue, 16 Sep 2025 19:49:00 -0400 Subject: [PATCH 03/86] :broker wip --- Cargo.lock | 11 +++ crates/broker/Cargo.toml | 13 +++ crates/broker/src/lib.rs | 21 ++++- crates/broker/src/order_picker.rs | 25 +++++- crates/broker/src/provers/bonsai.rs | 89 +++++++++++++++++- crates/broker/src/provers/default.rs | 129 ++++++++++++++++++++++++++- crates/broker/src/provers/mod.rs | 11 ++- crates/broker/src/proving.rs | 30 +++++-- crates/broker/src/submitter.rs | 6 +- crates/broker/src/utils.rs | 2 +- 10 files changed, 318 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2afb8cfc..10a3821dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2890,12 +2890,18 @@ dependencies = [ "alloy", "alloy-chains", "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", "async-channel 2.5.0", "async-trait", "aws-config", "aws-sdk-s3", "aws-smithy-http-client", "bincode", + "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", @@ -2913,6 +2919,8 @@ dependencies = [ "httpmock", "moka", "notify", + "num-bigint 0.4.6", + "num-traits", "proptest", "proptest-derive", "rand 0.9.2", @@ -2921,14 +2929,17 @@ dependencies = [ "reqwest-retry", "risc0-aggregation", "risc0-ethereum-contracts", + "risc0-groth16", "risc0-zkvm", "serde", "serde_json", "serial_test", "sha2 0.10.9", + "shrink_bitvm2", "sqlx", "temp-env", "tempfile", + "test-log", "thiserror 2.0.16", "tokio", "tokio-util", diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index cb77c40e0..3aeceed6b 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -53,6 +53,10 @@ tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } url = { workspace = true } uuid = { workspace = true } +num-bigint = { version = "0.4", features = ["std"] } +num-traits = "0.2.19" +shrink_bitvm2 = { workspace = true } + [dev-dependencies] alloy = { workspace = true, features = ["node-bindings"] } aws-smithy-http-client = { version = "1.0", features = ["test-util"] } @@ -71,5 +75,14 @@ temp-env = { version = "0.3", features = ["async_closure"] } tokio = { workspace = true, features = ["full"] } tracing-test = { workspace = true } +risc0-groth16 = { workspace = true, features = ["prove"] } +ark-bn254 = "0.5.0" +ark-ff = "0.5.0" +ark-groth16 = { version = "0.5.0" } +ark-serialize = "0.5.0" +ark-ec = "0.5.0" +blake3 = { version = "1.5.0" } +test-log = { workspace = true } + [features] test-utils = ["dep:boundless-test-utils"] diff --git a/crates/broker/src/lib.rs b/crates/broker/src/lib.rs index 742749152..ad4ecb156 100644 --- a/crates/broker/src/lib.rs +++ b/crates/broker/src/lib.rs @@ -29,7 +29,7 @@ use anyhow::{Context, Result}; use boundless_market::{ contracts::{boundless_market::BoundlessMarketService, ProofRequest}, order_stream_client::OrderStreamClient, - selector::is_groth16_selector, + selector::{is_groth16_selector, is_shrink_bitvm2_selector}, Deployment, }; use chrono::{serde::ts_seconds, DateTime, Utc}; @@ -391,6 +391,18 @@ impl Order { pub fn is_groth16(&self) -> bool { is_groth16_selector(self.request.requirements.selector) } + fn is_shrink_bitvm2(&self) -> bool { + is_shrink_bitvm2_selector(self.request.requirements.selector) + } + pub fn compression_type(&self) -> CompressionType { + if self.is_groth16() { + CompressionType::Groth16 + } else if self.is_shrink_bitvm2() { + CompressionType::ShrinkBitvm2 + } else { + CompressionType::None + } + } } impl std::fmt::Display for Order { @@ -404,6 +416,13 @@ impl std::fmt::Display for Order { } } +#[derive(Debug, PartialEq, Eq)] +enum CompressionType { + None, + Groth16, + ShrinkBitvm2, +} + #[derive(sqlx::Type, Default, Serialize, Deserialize, Debug, Clone, PartialEq)] enum BatchStatus { #[default] diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index ff4576e26..a6391af93 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -48,7 +48,7 @@ use boundless_market::{ boundless_market::BoundlessMarketService, FulfillmentData, Predicate, RequestError, RequestInputType, }, - selector::SupportedSelectors, + selector::{is_shrink_bitvm2_selector, SupportedSelectors}, }; use moka::future::Cache; use thiserror::Error; @@ -660,6 +660,14 @@ where return Ok(Skip); } + // If the selector is a shrink bitvm2 selector, ensure the journal is exactly 32 bytes + if is_shrink_bitvm2_selector(order.request.requirements.selector) && journal.len() != 32 { + tracing::info!( + "Order {order_id} journal is not 32 bytes for shrink bitvm2 selector, skipping", + ); + return Ok(Skip); + } + // Validate the predicates: let predicate = Predicate::try_from(order.request.requirements.predicate.clone()) .map_err(|e| OrderPickerErr::RequestError(Arc::new(e.into())))?; @@ -1340,7 +1348,7 @@ fn calculate_max_cycles_for_time(prove_khz: u64, time_seconds: u64) -> u64 { #[cfg(test)] pub(crate) mod tests { - use std::time::Duration; + use std::{path::PathBuf, time::Duration}; use super::*; use crate::{ @@ -2723,6 +2731,19 @@ pub(crate) mod tests { ) -> Result>, ProverError> { self.default_prover.get_compressed_receipt(proof_id).await } + async fn shrink_bitvm2( + &self, + _proof_id: &str, + _work_dir: Option, + ) -> Result { + todo!("Shrink BitVM is not implemented yet"); + } + async fn get_shrink_bitvm2_receipt( + &self, + _proof_id: &str, + ) -> Result>, ProverError> { + todo!("Shrink BitVM is not implemented yet"); + } } #[tokio::test] diff --git a/crates/broker/src/provers/bonsai.rs b/crates/broker/src/provers/bonsai.rs index ed1f90b1d..c45727962 100644 --- a/crates/broker/src/provers/bonsai.rs +++ b/crates/broker/src/provers/bonsai.rs @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::future::Future; +use std::{future::Future, path::PathBuf}; use async_trait::async_trait; use bonsai_sdk::{ - non_blocking::{Client as BonsaiClient, SessionId, SnarkId}, + non_blocking::{Client as BonsaiClient, SessionId, ShrinkBitvm2Id, SnarkId}, SdkErr, }; use risc0_zkvm::Receipt; @@ -274,6 +274,46 @@ impl StatusPoller { } } } + + async fn poll_with_retries_shrink_bitvm2_id( + &self, + proof_id: &ShrinkBitvm2Id, + client: &BonsaiClient, + ) -> Result { + loop { + let status = retry::<_, SdkErr, _, _>( + self.retry_counts, + self.poll_sleep_ms, + || async { proof_id.status(client).await }, + "get snark status", + ) + .await; + + if let Err(_err) = status { + return Err(ProverError::StatusFailure); + } + + let status = status.unwrap(); + + match status.status.as_ref() { + "RUNNING" => { + tokio::time::sleep(tokio::time::Duration::from_millis(self.poll_sleep_ms)) + .await; + continue; + } + "SUCCEEDED" => return Ok(proof_id.uuid.clone()), + status_code => { + let err_msg = status.error_msg.unwrap_or_default(); + if err_msg.contains("INTERNAL_ERROR") { + return Err(ProverError::ProverInternalError(err_msg.clone())); + } + return Err(ProverError::ProvingFailed(format!( + "snark proving failed with status {status_code}: {err_msg}" + ))); + } + } + } + } } #[async_trait] @@ -523,6 +563,51 @@ impl Prover for Bonsai { Ok(Some(receipt_buf)) } + + async fn shrink_bitvm2( + &self, + proof_id: &str, + _work_dir: Option, + ) -> Result { + let proof_id = self + .retry( + || async { Ok(self.client.shrink_bitvm2(proof_id.into()).await?) }, + "create snark", + ) + .await?; + + let poller = StatusPoller { + poll_sleep_ms: self.status_poll_ms, + retry_counts: self.status_poll_retry_count, + }; + + poller.poll_with_retries_shrink_bitvm2_id(&proof_id, &self.client).await?; + + Ok(proof_id.uuid) + } + + async fn get_shrink_bitvm2_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError> { + let snark_id = ShrinkBitvm2Id { uuid: proof_id.into() }; + let status = self + .retry( + || async { Ok(snark_id.status(&self.client).await?) }, + "get status of bitvm2 snark", + ) + .await?; + + let Some(output) = status.output else { return Ok(None) }; + let receipt_buf = self + .retry( + || async { Ok(self.client.download(&output).await?) }, + "download bitvm2 snark output", + ) + .await?; + + Ok(Some(receipt_buf)) + } } async fn create_pg_pool() -> Result { diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index dee254b38..3bc871b66 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -12,16 +12,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{borrow::Borrow, collections::HashMap, sync::Arc}; +use std::{borrow::Borrow, collections::HashMap, path::PathBuf, sync::Arc}; use crate::config::ProverConf; use crate::provers::{ExecutorResp, ProofResult, Prover, ProverError}; -use anyhow::{Context, Result as AnyhowResult}; +use anyhow::{anyhow, Context, Result as AnyhowResult}; use async_trait::async_trait; use risc0_zkvm::{ default_executor, default_prover, ExecutorEnv, ProveInfo, ProverOpts, Receipt, SessionInfo, VERSION, }; +use tempfile::tempdir; use tokio::sync::RwLock; use uuid::Uuid; @@ -395,15 +396,90 @@ impl Prover for DefaultProver { .ok_or_else(|| ProverError::NotFound(format!("proof {proof_id}")))?; Ok(proof_data.compressed_receipt.as_ref().cloned()) } + + async fn shrink_bitvm2( + &self, + proof_id: &str, + work_dir: Option, + ) -> Result { + let temp_dir = tempdir().context("Failed to crate tmpdir")?; + tracing::info!("Compressing proof Shrink bitvm2 {proof_id}"); + let receipt = self + .get_receipt(proof_id) + .await? + .ok_or_else(|| ProverError::NotFound(format!("no receipt for proof {proof_id}")))?; + if receipt.journal.bytes.len() != 32 { + return Err(ProverError::UnexpectedError(anyhow!( + "Shrink BitVM2 requires a journal of 32 bytes, got {}", + receipt.journal.bytes.len() + ))); + } + let proof_id = format!("snark_{}", Uuid::new_v4()); + self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); + + tracing::debug!("shrink bitvm2 identity_p254 for proof {proof_id}"); + let succinct_receipt = receipt.inner.succinct().unwrap(); + let p254_receipt = risc0_zkvm::recursion::identity_p254(succinct_receipt) + .context("identity predicate failed")?; + + tracing::info!("Completing identity predicate, {proof_id}"); + + let work_dir = + if let Some(work_dir) = work_dir { work_dir } else { temp_dir.path().to_path_buf() }; + + let compress_result = + shrink_bitvm2::prove_and_verify(&proof_id, &work_dir, p254_receipt, receipt.journal) + .await + .map_err(ProverError::from); + + let compressed_bytes = compress_result + .as_ref() + .map(|receipt| bincode::serialize(receipt).unwrap()) + .unwrap_or_default(); + + let mut proofs = self.state.proofs.write().await; + let proof = proofs.get_mut(&proof_id).unwrap(); + match compress_result { + Ok(_) => { + proof.status = Status::Succeeded; + proof.compressed_receipt = Some(compressed_bytes); + + Ok(proof_id) + } + Err(err) => { + proof.status = Status::Failed; + proof.error_msg = err.to_string(); + + Err(err) + } + } + } + async fn get_shrink_bitvm2_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError> { + let proofs = self.state.proofs.read().await; + let proof_data = proofs + .get(proof_id) + .ok_or_else(|| ProverError::NotFound(format!("proof {proof_id}")))?; + Ok(proof_data.compressed_receipt.as_ref().cloned()) + } } #[cfg(test)] mod tests { use super::*; use boundless_test_utils::guests::{ECHO_ELF, ECHO_ID}; - use risc0_zkvm::sha::Digest; use tokio::test; + use ark_ff::PrimeField; + use risc0_zkvm::{ + sha::{Digest, Digestible}, + Groth16Seal, + }; + use shrink_bitvm2::ShrinkBitvm2ReceiptClaim; + use tempfile::tempdir; + #[test] async fn test_upload_input_and_image() { let prover = DefaultProver::new(); @@ -516,4 +592,51 @@ mod tests { let journal_err = prover.get_journal(nonexistent_id).await; assert!(matches!(journal_err, Err(ProverError::NotFound(_)))); } + + #[test] + async fn test_shrink_bitvm2() { + let work_dir = tempdir().expect("Failed to create temp dir"); + let prover = DefaultProver::new(); + + // Upload test data + let input_data = [255u8; 32].to_vec(); // Example input data + let input_id = prover.upload_input(input_data.clone()).await.unwrap(); + let image_id = Digest::from(ECHO_ID); + prover.upload_image(&image_id.to_string(), ECHO_ELF.to_vec()).await.unwrap(); + + // Run SNARK proving + let ProofResult { id: stark_id, .. } = + prover.prove_and_monitor_stark(&image_id.to_string(), &input_id, vec![]).await.unwrap(); + + let snark_id = + prover.shrink_bitvm2(&stark_id, Some(work_dir.path().to_path_buf())).await.unwrap(); + + // Fetch the compressed receipt + let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); + let shrink_receipt: Receipt = bincode::deserialize(&compressed_receipt).unwrap(); + + let stark_receipt = prover.get_receipt(&stark_id).await.unwrap().unwrap(); + + let groth16_receipt = shrink_receipt.inner.groth16().unwrap(); + let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) + .expect("Failed to create Groth16 seal from receipt"); + + let final_output_bytes = + ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest().into(); + let public_input_scalar = ark_bn254::Fr::from_be_bytes_mod_order(&final_output_bytes); + + let public_input_scalar_str = public_input_scalar.to_string(); + let public_input_scalar = + risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } + .to_scalar() + .unwrap(); + println!("R0 Verify Start"); + + let verifying_key = shrink_bitvm2::get_r0_verifying_key(); + + let v = risc0_groth16::Verifier::new(&groth16_seal, &public_input_scalar, &verifying_key) + .unwrap(); + println!("R0 Verify result: {:?}", v.verify().is_ok()); + assert!(v.verify().is_ok(), "R0 verification failed"); + } } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index 394eeab9d..68e9cf750 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::sync::Arc; +use std::{path::PathBuf, sync::Arc}; use async_trait::async_trait; use bonsai_sdk::SdkErr; @@ -140,6 +140,15 @@ pub trait Prover { async fn get_journal(&self, proof_id: &str) -> Result>, ProverError>; async fn compress(&self, proof_id: &str) -> Result; async fn get_compressed_receipt(&self, proof_id: &str) -> Result>, ProverError>; + async fn shrink_bitvm2( + &self, + proof_id: &str, + work_dir: Option, + ) -> Result; + async fn get_shrink_bitvm2_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError>; } pub type ProverObj = Arc; diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index 0066f8463..4ca4f43b5 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -24,7 +24,7 @@ use crate::{ provers::ProverObj, task::{RetryRes, RetryTask, SupervisorErr}, utils::cancel_proof_and_fail_order, - Order, OrderStateChange, OrderStatus, + CompressionType, Order, OrderStateChange, OrderStatus, }; use anyhow::{Context, Result}; use thiserror::Error; @@ -92,7 +92,7 @@ impl ProvingService { &self, order_id: &str, stark_proof_id: &str, - is_groth16: bool, + compression_type: CompressionType, snark_proof_id: Option, ) -> Result { let proof_res = self @@ -101,9 +101,25 @@ impl ProvingService { .await .context("Monitoring proof (stark) failed")?; - if is_groth16 && snark_proof_id.is_none() { - let compressed_proof_id = - self.prover.compress(stark_proof_id).await.context("Failed to compress proof")?; + tracing::info!( + "compression_type: {compression_type:?}, snark_proof_id: {snark_proof_id:?}" + ); + let is_compress = compression_type != CompressionType::None; + + if is_compress && snark_proof_id.is_none() { + let compressed_proof_id = match compression_type { + CompressionType::Groth16 => self + .prover + .compress(stark_proof_id) + .await + .context("Failed to compress proof")?, + CompressionType::ShrinkBitvm2 => self + .prover + .shrink_bitvm2(stark_proof_id, None) + .await + .context("Failed to shrink proof")?, + CompressionType::None => unreachable!("Compression type should not be None here"), + }; self.db .set_order_compressed_proof_id(order_id, &compressed_proof_id) .await @@ -114,7 +130,7 @@ impl ProvingService { })?; }; - let status = match is_groth16 { + let status = match is_compress { false => OrderStatus::PendingAgg, true => OrderStatus::SkipAggregation, }; @@ -227,7 +243,7 @@ impl ProvingService { let monitor_task = self.monitor_proof_internal( &order_id, proof_id, - order.is_groth16(), + order.compression_type(), order.compressed_proof_id, ); tokio::pin!(monitor_task); diff --git a/crates/broker/src/submitter.rs b/crates/broker/src/submitter.rs index d30bd575b..aa4a6b538 100644 --- a/crates/broker/src/submitter.rs +++ b/crates/broker/src/submitter.rs @@ -30,7 +30,7 @@ use boundless_market::{ encode_seal, AssessorJournal, AssessorReceipt, Fulfillment, FulfillmentDataImageIdAndJournal, FulfillmentDataType, PredicateType, }, - selector::is_groth16_selector, + selector::{is_groth16_selector, is_shrink_bitvm2_selector}, }; use hex::FromHex; use risc0_aggregation::{SetInclusionReceipt, SetInclusionReceiptVerifierParameters}; @@ -299,7 +299,9 @@ where let order_claim = ReceiptClaim::ok(order_img_id, MaybePruned::Pruned(order_journal.digest())); let order_claim_digest = order_claim.digest(); - let seal = if is_groth16_selector(order_request.requirements.selector) { + let seal = if is_groth16_selector(order_request.requirements.selector) + || is_shrink_bitvm2_selector(order_request.requirements.selector) + { let compressed_proof_id = self.db.get_order_compressed_proof_id(order_id).await.context( "Failed to get order compressed proof ID from DB for submission", diff --git a/crates/broker/src/utils.rs b/crates/broker/src/utils.rs index 8233ad8dd..62861c751 100644 --- a/crates/broker/src/utils.rs +++ b/crates/broker/src/utils.rs @@ -96,7 +96,7 @@ pub async fn estimate_gas_to_fulfill( .context("unsupported selector")? { ProofType::Any | ProofType::Inclusion => 0, - ProofType::Groth16 => groth16, + ProofType::Groth16 | ProofType::ShrinkBitvm2 => groth16, proof_type => { tracing::warn!("Unknown proof type in gas cost estimation: {proof_type:?}"); 0 From 13847ed88574788eadf8259ba1755c4e7de4fb7a Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Tue, 16 Sep 2025 21:15:57 -0400 Subject: [PATCH 04/86] use local risc0 patch --- Cargo.lock | 44 +--- Cargo.toml | 12 +- crates/povw/log-updater/Cargo.lock | 281 ++++++++++++++++++++++--- crates/povw/mint-calculator/Cargo.lock | 266 ++++++++++++++++++++--- crates/shrink_bitvm2/src/lib.rs | 14 +- 5 files changed, 507 insertions(+), 110 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 10a3821dc..ae52343f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2524,8 +2524,6 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" dependencies = [ "duplicate", "maybe-async", @@ -8312,8 +8310,6 @@ dependencies = [ [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" dependencies = [ "anyhow", "borsh", @@ -8333,9 +8329,7 @@ dependencies = [ [[package]] name = "risc0-build" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" +version = "3.0.4" dependencies = [ "anyhow", "cargo_metadata", @@ -8377,8 +8371,6 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" dependencies = [ "cc", "directories", @@ -8391,8 +8383,6 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" dependencies = [ "anyhow", "bytemuck", @@ -8413,8 +8403,6 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" dependencies = [ "cc", "cust", @@ -8429,8 +8417,6 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", @@ -8455,8 +8441,6 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" dependencies = [ "glob", "risc0-build-kernel", @@ -8468,8 +8452,6 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8502,8 +8484,6 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" dependencies = [ "cc", "cust", @@ -8518,8 +8498,6 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", "nvtx", @@ -8547,8 +8525,6 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" dependencies = [ "anyhow", "ark-bn254", @@ -8577,8 +8553,6 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" dependencies = [ "anyhow", "blst", @@ -8635,8 +8609,6 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" dependencies = [ "anyhow", "blst", @@ -8648,8 +8620,6 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -8659,8 +8629,6 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" dependencies = [ "anyhow", "blake2", @@ -8690,14 +8658,12 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" +version = "3.0.4" dependencies = [ "addr2line", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bonsai-sdk 1.4.1", "borsh", "bytemuck", "bytes", @@ -8741,8 +8707,6 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", "cfg-if", @@ -9095,8 +9059,6 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", diff --git a/Cargo.toml b/Cargo.toml index 18617d131..282aed9cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,6 +73,7 @@ risc0-zkvm = { version = "3.0.3", default-features = false } risc0-povw = { version = "0.4", default-features = false } risc0-zkp = { version = "3.0.2" } risc0-groth16 = { version = "3.0.2" } + serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" @@ -108,4 +109,13 @@ lto = true [patch.crates-io] risc0-ethereum-contracts = { path = "/home/homepup/repos/risc0-ethereum/contracts" } risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } -# risc0-groth16 = { path = "/home/homepup/repos/risc0/risc0/groth16" } + +#risc0-groth16 = { git = "https://github.com/risc0/risc0.git", rev = "91ab0d85cfaf3e0240db752b8de6912d950b6034" } + +risc0-groth16 = { path = "/home/homepup/repos/risc0/risc0/groth16" } +risc0-groth16-sys = { path = "/home/homepup/repos/risc0/risc0/groth16-sys" } +risc0-zkp = { path = "/home/homepup/repos/risc0/risc0/zkp" } +risc0-binfmt = { path = "/home/homepup/repos/risc0/risc0/binfmt" } +risc0-build = { path = "/home/homepup/repos/risc0/risc0/build" } +risc0-zkvm = { path = "/home/homepup/repos/risc0/risc0/zkvm" } +risc0-circuit-recursion = { path = "/home/homepup/repos/risc0/risc0/circuit/recursion" } diff --git a/crates/povw/log-updater/Cargo.lock b/crates/povw/log-updater/Cargo.lock index eee7b5b97..5bcfde7aa 100644 --- a/crates/povw/log-updater/Cargo.lock +++ b/crates/povw/log-updater/Cargo.lock @@ -1009,7 +1009,7 @@ dependencies = [ "bytemuck", "derive_builder", "postcard", - "risc0-povw", + "risc0-povw 0.5.0", "risc0-steel", "ruint", "serde", @@ -1023,8 +1023,8 @@ dependencies = [ "alloy-sol-types", "borsh", "boundless-povw", - "risc0-povw", - "risc0-zkvm", + "risc0-povw 0.4.0", + "risc0-zkvm 3.0.3", ] [[package]] @@ -1509,6 +1509,27 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -2100,6 +2121,15 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "memmap2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +dependencies = [ + "libc", +] + [[package]] name = "merlin" version = "3.0.0" @@ -2922,8 +2952,29 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp", - "risc0-zkvm-platform", + "risc0-zkp 3.0.2", + "risc0-zkvm-platform 2.2.1", + "ruint", + "semver 1.0.26", + "serde", + "tracing", +] + +[[package]] +name = "risc0-binfmt" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp 3.0.3", + "risc0-zkvm-platform 2.3.0", "ruint", "semver 1.0.26", "serde", @@ -2939,10 +2990,25 @@ dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-circuit-recursion 4.0.2", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt 3.0.3", + "risc0-circuit-recursion 4.0.3", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "tracing", ] @@ -2956,8 +3022,22 @@ dependencies = [ "bytemuck", "hex", "metal", - "risc0-core", - "risc0-zkp", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "tracing", +] + +[[package]] +name = "risc0-circuit-recursion" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bytemuck", + "hex", + "metal", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "tracing", ] @@ -2972,9 +3052,27 @@ dependencies = [ "bytemuck", "derive_more", "paste", - "risc0-binfmt", - "risc0-core", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "serde", + "tracing", +] + +[[package]] +name = "risc0-circuit-rv32im" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bit-vec", + "bytemuck", + "derive_more", + "enum-map", + "paste", + "risc0-binfmt 3.0.3", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "serde", "tracing", ] @@ -2989,6 +3087,15 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "risc0-core" +version = "3.0.1" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "bytemuck", + "rand_core 0.9.3", +] + [[package]] name = "risc0-groth16" version = "3.0.2" @@ -3005,8 +3112,29 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-zkp 3.0.2", + "serde", +] + +[[package]] +name = "risc0-groth16" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bytemuck", + "hex", + "memmap2", + "num-bigint", + "num-traits", + "risc0-binfmt 3.0.3", + "risc0-zkp 3.0.3", "serde", ] @@ -3020,8 +3148,24 @@ dependencies = [ "bytemuck", "derive_builder", "hybrid-array", - "risc0-binfmt", - "risc0-zkvm", + "risc0-binfmt 3.0.2", + "risc0-zkvm 3.0.3", + "ruint", + "serde", + "thiserror 1.0.69", +] + +[[package]] +name = "risc0-povw" +version = "0.5.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "borsh", + "bytemuck", + "derive_builder", + "hybrid-array", + "risc0-binfmt 3.0.3", + "risc0-zkvm 4.0.0", "ruint", "serde", "thiserror 1.0.69", @@ -3057,7 +3201,17 @@ checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", - "risc0-zkvm-platform", + "risc0-zkvm-platform 2.2.1", +] + +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.1" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform 2.3.0", ] [[package]] @@ -3077,8 +3231,32 @@ dependencies = [ "metal", "paste", "rand_core 0.9.3", - "risc0-core", - "risc0-zkvm-platform", + "risc0-core 3.0.0", + "risc0-zkvm-platform 2.2.1", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "digest 0.10.7", + "hex", + "hex-literal", + "metal", + "paste", + "rand_core 0.9.3", + "risc0-core 3.0.1", + "risc0-zkvm-platform 2.3.0", "serde", "sha2 0.10.9", "stability", @@ -3096,15 +3274,43 @@ dependencies = [ "bytemuck", "derive_more", "hex", - "risc0-binfmt", - "risc0-circuit-keccak", - "risc0-circuit-recursion", - "risc0-circuit-rv32im", - "risc0-core", - "risc0-groth16", - "risc0-zkos-v1compat", - "risc0-zkp", - "risc0-zkvm-platform", + "risc0-binfmt 3.0.2", + "risc0-circuit-keccak 4.0.2", + "risc0-circuit-recursion 4.0.2", + "risc0-circuit-rv32im 4.0.2", + "risc0-core 3.0.0", + "risc0-groth16 3.0.2", + "risc0-zkos-v1compat 2.2.0", + "risc0-zkp 3.0.2", + "risc0-zkvm-platform 2.2.1", + "rrs-lib", + "semver 1.0.26", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm" +version = "4.0.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "enum-map", + "hex", + "risc0-binfmt 3.0.3", + "risc0-circuit-keccak 4.0.3", + "risc0-circuit-recursion 4.0.3", + "risc0-circuit-rv32im 4.0.3", + "risc0-core 3.0.1", + "risc0-groth16 3.0.3", + "risc0-zkos-v1compat 2.2.1", + "risc0-zkp 3.0.3", + "risc0-zkvm-platform 2.3.0", "rrs-lib", "semver 1.0.26", "serde", @@ -3129,6 +3335,21 @@ dependencies = [ "stability", ] +[[package]] +name = "risc0-zkvm-platform" +version = "2.3.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "bytemuck", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "libm", + "num_enum", + "paste", + "stability", +] + [[package]] name = "rlp" version = "0.5.2" diff --git a/crates/povw/mint-calculator/Cargo.lock b/crates/povw/mint-calculator/Cargo.lock index cd2213e5b..e17fbf820 100644 --- a/crates/povw/mint-calculator/Cargo.lock +++ b/crates/povw/mint-calculator/Cargo.lock @@ -1023,7 +1023,7 @@ dependencies = [ "alloy-sol-types", "boundless-povw", "risc0-steel", - "risc0-zkvm", + "risc0-zkvm 3.0.3", ] [[package]] @@ -1508,6 +1508,27 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -2099,6 +2120,15 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "memmap2" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +dependencies = [ + "libc", +] + [[package]] name = "merlin" version = "3.0.0" @@ -2921,8 +2951,29 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp", - "risc0-zkvm-platform", + "risc0-zkp 3.0.2", + "risc0-zkvm-platform 2.2.1", + "ruint", + "semver 1.0.26", + "serde", + "tracing", +] + +[[package]] +name = "risc0-binfmt" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "elf", + "lazy_static", + "postcard", + "rand 0.9.2", + "risc0-zkp 3.0.3", + "risc0-zkvm-platform 2.3.0", "ruint", "semver 1.0.26", "serde", @@ -2938,10 +2989,25 @@ dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-circuit-recursion 4.0.2", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "tracing", +] + +[[package]] +name = "risc0-circuit-keccak" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bytemuck", + "paste", + "risc0-binfmt 3.0.3", + "risc0-circuit-recursion 4.0.3", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "tracing", ] @@ -2955,8 +3021,22 @@ dependencies = [ "bytemuck", "hex", "metal", - "risc0-core", - "risc0-zkp", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "tracing", +] + +[[package]] +name = "risc0-circuit-recursion" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bytemuck", + "hex", + "metal", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "tracing", ] @@ -2971,9 +3051,27 @@ dependencies = [ "bytemuck", "derive_more", "paste", - "risc0-binfmt", - "risc0-core", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-core 3.0.0", + "risc0-zkp 3.0.2", + "serde", + "tracing", +] + +[[package]] +name = "risc0-circuit-rv32im" +version = "4.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "bit-vec", + "bytemuck", + "derive_more", + "enum-map", + "paste", + "risc0-binfmt 3.0.3", + "risc0-core 3.0.1", + "risc0-zkp 3.0.3", "serde", "tracing", ] @@ -2988,6 +3086,15 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "risc0-core" +version = "3.0.1" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "bytemuck", + "rand_core 0.9.3", +] + [[package]] name = "risc0-groth16" version = "3.0.2" @@ -3004,23 +3111,43 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt", - "risc0-zkp", + "risc0-binfmt 3.0.2", + "risc0-zkp 3.0.2", + "serde", +] + +[[package]] +name = "risc0-groth16" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bytemuck", + "hex", + "memmap2", + "num-bigint", + "num-traits", + "risc0-binfmt 3.0.3", + "risc0-zkp 3.0.3", "serde", ] [[package]] name = "risc0-povw" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14723827128770b53eb6550e2f995586ab79627581ff225de440d6e78bd69a3" +version = "0.5.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" dependencies = [ "borsh", "bytemuck", "derive_builder", "hybrid-array", - "risc0-binfmt", - "risc0-zkvm", + "risc0-binfmt 3.0.3", + "risc0-zkvm 4.0.0", "ruint", "serde", "thiserror 1.0.69", @@ -3056,7 +3183,17 @@ checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", - "risc0-zkvm-platform", + "risc0-zkvm-platform 2.2.1", +] + +[[package]] +name = "risc0-zkos-v1compat" +version = "2.2.1" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "include_bytes_aligned", + "no_std_strings", + "risc0-zkvm-platform 2.3.0", ] [[package]] @@ -3076,8 +3213,32 @@ dependencies = [ "metal", "paste", "rand_core 0.9.3", - "risc0-core", - "risc0-zkvm-platform", + "risc0-core 3.0.0", + "risc0-zkvm-platform 2.2.1", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkp" +version = "3.0.3" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "blake2", + "borsh", + "bytemuck", + "cfg-if", + "digest 0.10.7", + "hex", + "hex-literal", + "metal", + "paste", + "rand_core 0.9.3", + "risc0-core 3.0.1", + "risc0-zkvm-platform 2.3.0", "serde", "sha2 0.10.9", "stability", @@ -3095,15 +3256,43 @@ dependencies = [ "bytemuck", "derive_more", "hex", - "risc0-binfmt", - "risc0-circuit-keccak", - "risc0-circuit-recursion", - "risc0-circuit-rv32im", - "risc0-core", - "risc0-groth16", - "risc0-zkos-v1compat", - "risc0-zkp", - "risc0-zkvm-platform", + "risc0-binfmt 3.0.2", + "risc0-circuit-keccak 4.0.2", + "risc0-circuit-recursion 4.0.2", + "risc0-circuit-rv32im 4.0.2", + "risc0-core 3.0.0", + "risc0-groth16 3.0.2", + "risc0-zkos-v1compat 2.2.0", + "risc0-zkp 3.0.2", + "risc0-zkvm-platform 2.2.1", + "rrs-lib", + "semver 1.0.26", + "serde", + "sha2 0.10.9", + "stability", + "tracing", +] + +[[package]] +name = "risc0-zkvm" +version = "4.0.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "anyhow", + "borsh", + "bytemuck", + "derive_more", + "enum-map", + "hex", + "risc0-binfmt 3.0.3", + "risc0-circuit-keccak 4.0.3", + "risc0-circuit-recursion 4.0.3", + "risc0-circuit-rv32im 4.0.3", + "risc0-core 3.0.1", + "risc0-groth16 3.0.3", + "risc0-zkos-v1compat 2.2.1", + "risc0-zkp 3.0.3", + "risc0-zkvm-platform 2.3.0", "rrs-lib", "semver 1.0.26", "serde", @@ -3128,6 +3317,21 @@ dependencies = [ "stability", ] +[[package]] +name = "risc0-zkvm-platform" +version = "2.3.0" +source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +dependencies = [ + "bytemuck", + "cfg-if", + "getrandom 0.2.16", + "getrandom 0.3.3", + "libm", + "num_enum", + "paste", + "stability", +] + [[package]] name = "rlp" version = "0.5.2" diff --git a/crates/shrink_bitvm2/src/lib.rs b/crates/shrink_bitvm2/src/lib.rs index 6e782e7da..c23fad7da 100644 --- a/crates/shrink_bitvm2/src/lib.rs +++ b/crates/shrink_bitvm2/src/lib.rs @@ -2,11 +2,13 @@ use std::path::Path; use hex::FromHex; use risc0_zkvm::{ - digest, sha::Digestible, Digest, Groth16Receipt, Groth16Seal, Journal, MaybePruned, Receipt, - ReceiptClaim, SuccinctReceipt, SystemState, + digest, sha::Digestible, Digest, Groth16Receipt, Journal, MaybePruned, Receipt, ReceiptClaim, + SuccinctReceipt, SystemState, }; -use risc0_groth16::ProofJson as Groth16ProofJson; +use risc0_groth16::{ + prove::to_json as seal_to_json, ProofJson as Groth16ProofJson, Seal as Groth16Seal, +}; use anyhow::{ensure, Context, Result}; use num_bigint::BigUint; @@ -160,10 +162,8 @@ async fn write_seal( tracing::info!("Writing seal"); let seal_bytes = p254_receipt.get_seal_bytes(); - let mut seal_json = Vec::new(); - // seal_to_json(seal_bytes.as_slice(), &mut seal_json)?; // TODO: use the latest which has this... - let mut seal_json: serde_json::Value = - serde_json::from_str(std::str::from_utf8(seal_json.as_slice())?)?; + let seal_json = seal_to_json(seal_bytes.as_slice())?; // TODO(ec2): This is currently using a local version of risc0 which exposes this method + let mut seal_json: serde_json::Value = serde_json::from_str(&seal_json)?; let mut journal_bits = Vec::new(); for byte in journal_bytes { From 8aac08128d2ab93d247d31727b4a75ccf3222e73 Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Tue, 16 Sep 2025 21:46:16 -0400 Subject: [PATCH 05/86] verify it --- crates/broker/src/provers/default.rs | 42 ++++++++++++++++++---------- crates/shrink_bitvm2/src/lib.rs | 3 +- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 3bc871b66..e2815ef4b 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -477,7 +477,7 @@ mod tests { sha::{Digest, Digestible}, Groth16Seal, }; - use shrink_bitvm2::ShrinkBitvm2ReceiptClaim; + use shrink_bitvm2::{from_seal, get_ark_verifying_key, ShrinkBitvm2ReceiptClaim}; use tempfile::tempdir; #[test] @@ -622,21 +622,33 @@ mod tests { .expect("Failed to create Groth16 seal from receipt"); let final_output_bytes = - ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest().into(); - let public_input_scalar = ark_bn254::Fr::from_be_bytes_mod_order(&final_output_bytes); + ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest(); - let public_input_scalar_str = public_input_scalar.to_string(); let public_input_scalar = - risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } - .to_scalar() - .unwrap(); - println!("R0 Verify Start"); - - let verifying_key = shrink_bitvm2::get_r0_verifying_key(); - - let v = risc0_groth16::Verifier::new(&groth16_seal, &public_input_scalar, &verifying_key) - .unwrap(); - println!("R0 Verify result: {:?}", v.verify().is_ok()); - assert!(v.verify().is_ok(), "R0 verification failed"); + ark_bn254::Fr::from_be_bytes_mod_order(final_output_bytes.as_bytes()); + + // let public_input_scalar_str = public_input_scalar.to_string(); + // let public_input_scalar = + // risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } + // .to_scalar() + // .unwrap(); + println!("Verify Start"); + let ark_vk = get_ark_verifying_key(); + let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); + let res = ark_groth16::Groth16::::verify_proof( + &ark_pvk, + &from_seal(&groth16_receipt.seal), + &[public_input_scalar], + ) + .unwrap(); + + println!("Shrink BitVM2 Verify result: {:?}", res); + + // let verifying_key = shrink_bitvm2::get_r0_verifying_key(); + + // let v = risc0_groth16::Verifier::new(&groth16_seal, &public_input_scalar, &verifying_key) + // .unwrap(); + // println!("R0 Verify result: {:?}", v.verify().is_ok()); + // assert!(v.verify().is_ok(), "R0 verification failed"); } } diff --git a/crates/shrink_bitvm2/src/lib.rs b/crates/shrink_bitvm2/src/lib.rs index c23fad7da..26ed844c8 100644 --- a/crates/shrink_bitvm2/src/lib.rs +++ b/crates/shrink_bitvm2/src/lib.rs @@ -16,8 +16,6 @@ use num_traits::Num; use serde::Serialize; use tokio::process::Command; -pub const ALLOWED_CONTROL_ROOT: Digest = - digest!("ce52bf56033842021af3cf6db8a50d1b7535c125a34f1a22c6fdcf002c5a1529"); pub const BN254_IDENTITY_CONTROL_ID: Digest = digest!("c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e4404"); @@ -194,6 +192,7 @@ async fn write_seal( .iter() .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) .collect(); + // remove 248th and 249th bits id_bn254_fr_bits.remove(248); id_bn254_fr_bits.remove(248); From 45be089fd994ac69798bf522fd28b24af79c01d5 Mon Sep 17 00:00:00 2001 From: Eric Tu Date: Thu, 25 Sep 2025 19:49:56 -0400 Subject: [PATCH 06/86] basic test works --- Cargo.lock | 54 ++- Cargo.toml | 16 +- bento/Cargo.lock | 46 ++- bento/Cargo.toml | 3 +- bento/crates/api/src/lib.rs | 32 ++ bento/crates/workflow-common/src/lib.rs | 1 + bento/crates/workflow/Cargo.toml | 3 + bento/crates/workflow/src/tasks/snark.rs | 41 ++- crates/broker/Cargo.toml | 1 + crates/broker/src/provers/default.rs | 69 ++-- crates/povw/log-updater/Cargo.lock | 281 ++------------- crates/povw/mint-calculator/Cargo.lock | 266 ++------------ crates/shrink_bitvm2/Cargo.toml | 32 -- crates/shrink_bitvm2/src/lib.rs | 426 ----------------------- 14 files changed, 260 insertions(+), 1011 deletions(-) delete mode 100644 crates/shrink_bitvm2/Cargo.toml delete mode 100644 crates/shrink_bitvm2/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index ae52343f9..7a97ae052 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2524,6 +2524,8 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" dependencies = [ "duplicate", "maybe-async", @@ -8310,6 +8312,8 @@ dependencies = [ [[package]] name = "risc0-binfmt" version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" dependencies = [ "anyhow", "borsh", @@ -8329,7 +8333,9 @@ dependencies = [ [[package]] name = "risc0-build" -version = "3.0.4" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" dependencies = [ "anyhow", "cargo_metadata", @@ -8371,6 +8377,8 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" dependencies = [ "cc", "directories", @@ -8383,6 +8391,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" dependencies = [ "anyhow", "bytemuck", @@ -8403,6 +8413,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" dependencies = [ "cc", "cust", @@ -8417,6 +8429,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", @@ -8441,6 +8455,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" dependencies = [ "glob", "risc0-build-kernel", @@ -8452,6 +8468,8 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8484,6 +8502,8 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" dependencies = [ "cc", "cust", @@ -8498,6 +8518,8 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", "nvtx", @@ -8525,6 +8547,8 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" dependencies = [ "anyhow", "ark-bn254", @@ -8553,6 +8577,8 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" dependencies = [ "anyhow", "blst", @@ -8609,6 +8635,8 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" dependencies = [ "anyhow", "blst", @@ -8620,6 +8648,8 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -8629,6 +8659,8 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" dependencies = [ "anyhow", "blake2", @@ -8658,12 +8690,14 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "3.0.4" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "addr2line", "anyhow", "bincode", - "bonsai-sdk 1.4.1", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -8707,6 +8741,8 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", "cfg-if", @@ -9059,6 +9095,8 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", @@ -9581,24 +9619,18 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" -version = "0.15.0" +version = "0.1.0" dependencies = [ "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", "blake3", + "borsh", "hex", - "num-bigint 0.4.6", - "num-traits", "risc0-groth16", "risc0-zkvm", "serde", "serde_json", "sha2 0.10.9", "tempfile", - "tokio", "tracing", ] diff --git a/Cargo.toml b/Cargo.toml index 282aed9cd..919afa551 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,13 +15,13 @@ members = [ "crates/order-generator", "crates/order-stream", "crates/povw", - "crates/shrink_bitvm2", "crates/slasher", "crates/test-utils", "crates/zkc", "documentation/doc-test", ] + [workspace.package] version = "0.15.0" edition = "2021" @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { path = "crates/shrink_bitvm2" } +shrink_bitvm2 = { path = "/home/homepup/repos/shrink_bitvm2/shrink_bitvm2" } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -108,14 +108,4 @@ lto = true [patch.crates-io] risc0-ethereum-contracts = { path = "/home/homepup/repos/risc0-ethereum/contracts" } -risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } - -#risc0-groth16 = { git = "https://github.com/risc0/risc0.git", rev = "91ab0d85cfaf3e0240db752b8de6912d950b6034" } - -risc0-groth16 = { path = "/home/homepup/repos/risc0/risc0/groth16" } -risc0-groth16-sys = { path = "/home/homepup/repos/risc0/risc0/groth16-sys" } -risc0-zkp = { path = "/home/homepup/repos/risc0/risc0/zkp" } -risc0-binfmt = { path = "/home/homepup/repos/risc0/risc0/binfmt" } -risc0-build = { path = "/home/homepup/repos/risc0/risc0/build" } -risc0-zkvm = { path = "/home/homepup/repos/risc0/risc0/zkvm" } -risc0-circuit-recursion = { path = "/home/homepup/repos/risc0/risc0/circuit/recursion" } +risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } \ No newline at end of file diff --git a/bento/Cargo.lock b/bento/Cargo.lock index 937899779..32645c52e 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -535,6 +535,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -1145,6 +1151,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -1175,8 +1194,7 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -1543,6 +1561,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -5605,6 +5629,23 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shrink_bitvm2" +version = "0.1.0" +dependencies = [ + "anyhow", + "blake3", + "borsh", + "hex", + "risc0-groth16", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tracing", +] + [[package]] name = "signal-hook" version = "0.3.18" @@ -7151,6 +7192,7 @@ dependencies = [ "risc0-zkvm", "serde", "serde_json", + "shrink_bitvm2", "signal-hook", "sqlx", "taskdb", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 9ac75c7cc..134434944 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -21,7 +21,7 @@ anyhow = "1.0.98" aws-sdk-s3 = "1.34" # used for minio for max compatibility bento-client = { path = "crates/bento-client" } bincode = "1.3.3" -bonsai-sdk = { version = "1.4.1", features = ["non_blocking"] } +bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bitvm2", features = ["non_blocking", "shrink_bitvm2"] } bytemuck = "1.16" clap = { version = "4.5", features = ["derive", "env"] } deadpool-redis = "0.15" @@ -35,6 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" +shrink_bitvm2 = { path = "/home/homepup/repos/shrink_bitvm2/shrink_bitvm2" } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/bento/crates/api/src/lib.rs b/bento/crates/api/src/lib.rs index 9dfe40345..1ba4fcfde 100644 --- a/bento/crates/api/src/lib.rs +++ b/bento/crates/api/src/lib.rs @@ -598,6 +598,37 @@ async fn prove_groth16( Ok(Json(CreateSessRes { uuid: job_id.to_string() })) } +const SHRINK_BITVM2_PATH: &str = "shrink_bitvm2/create"; +async fn shrink_bitvm2( + State(state): State>, + ExtractApiKey(api_key): ExtractApiKey, + Json(start_req): Json, +) -> Result, AppError> { + let (_aux_stream, _exec_stream, gpu_prove_stream, _gpu_coproc_stream, _gpu_join_stream) = + helpers::get_or_create_streams(&state.db_pool, &api_key) + .await + .context("Failed to get / create steams")?; + + let task_def = serde_json::to_value(TaskType::Snark(WorkflowSnarkReq { + receipt: start_req.session_id, + compress_type: CompressType::ShrinkBitvm2, + })) + .context("Failed to serialize ExecutorReq")?; + + let job_id = taskdb::create_job( + &state.db_pool, + &gpu_prove_stream, + &task_def, + state.snark_retries, + state.snark_timeout, + &api_key, + ) + .await + .context("Failed to create exec / init task")?; + + Ok(Json(CreateSessRes { uuid: job_id.to_string() })) +} + const SNARK_STATUS_PATH: &str = "/snark/status/:job_id"; async fn groth16_status( State(state): State>, @@ -805,6 +836,7 @@ pub fn app(state: Arc) -> Router { .route(RECEIPT_DOWNLOAD_PATH, get(receipt_download)) .route(GET_JOURNAL_PATH, get(preflight_journal)) .route(SNARK_START_PATH, post(prove_groth16)) + .route(SHRINK_BITVM2_PATH, post(shrink_bitvm2)) .route(SNARK_STATUS_PATH, get(groth16_status)) .route(GET_GROTH16_PATH, get(groth16_download)) .route(GET_WORK_RECEIPT_PATH, get(get_work_receipt)) diff --git a/bento/crates/workflow-common/src/lib.rs b/bento/crates/workflow-common/src/lib.rs index 82907b21e..2773f4a6e 100644 --- a/bento/crates/workflow-common/src/lib.rs +++ b/bento/crates/workflow-common/src/lib.rs @@ -33,6 +33,7 @@ pub const SNARK_TIMEOUT: i32 = 60 * 2; pub enum CompressType { None, Groth16, + ShrinkBitvm2, } impl Default for CompressType { diff --git a/bento/crates/workflow/Cargo.toml b/bento/crates/workflow/Cargo.toml index 944678379..8c35de708 100644 --- a/bento/crates/workflow/Cargo.toml +++ b/bento/crates/workflow/Cargo.toml @@ -34,6 +34,9 @@ risc0-zkvm = { workspace = true, default-features = false, features = [ ] } serde = { workspace = true } serde_json = { workspace = true } +shrink_bitvm2 = { workspace = true, features = [ + "prove", +]} signal-hook = "0.3" sqlx = { workspace = true } taskdb = { workspace = true } diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index bf9698dce..92bb483fd 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -7,7 +7,7 @@ use crate::Agent; use anyhow::{Context as _, Result, bail}; use risc0_zkvm::{InnerReceipt, ProverOpts, Receipt}; use workflow_common::{ - SnarkReq, SnarkResp, + CompressType, SnarkReq, SnarkResp, s3::{GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, }; @@ -24,13 +24,38 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< tracing::debug!("performing identity predicate on receipt, {job_id}"); - let opts = ProverOpts::groth16(); - let snark_receipt = agent - .prover - .as_ref() - .context("Missing prover from resolve task")? - .compress(&opts, &receipt) - .context("groth16 compress failed")?; + let snark_receipt = match req.compress_type { + CompressType::None => bail!("Cannot convert to snark with no compression"), + CompressType::Groth16 => agent + .prover + .as_ref() + .context("Missing prover from resolve task")? + .compress(&ProverOpts::groth16(), &receipt) + .context("groth16 compress failed")?, + CompressType::ShrinkBitvm2 => { + // First we compress a succinct receipt + let succinct_receipt = agent + .prover + .as_ref() + .context("Missing prover from resolve task")? + .compress(&ProverOpts::succinct(), &receipt) + .context("succinct compress failed")?; + let succinct_receipt = succinct_receipt.inner.succinct()?; + let p254_receipt = agent + .prover + .as_ref() + .context("Missing prover from resolve task")? + .identity_p254(succinct_receipt) + .context("failed to create p254 receipt")?; + // TODO(ec2): Handle cpu vs gpu here? + let seal = shrink_bitvm2::shrink_wrap_gpu(&p254_receipt, &receipt.journal.bytes)?; + shrink_bitvm2::finalize( + receipt.journal.bytes, + p254_receipt.claim.clone(), + &seal.try_into()?, + )? + } + }; if !matches!(snark_receipt.inner, InnerReceipt::Groth16(_)) { bail!("failed to create groth16 receipt"); diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 3aeceed6b..4653b6ccb 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -86,3 +86,4 @@ test-log = { workspace = true } [features] test-utils = ["dep:boundless-test-utils"] +shrink_bitvm2 = ["shrink_bitvm2/prove"] diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index e2815ef4b..5c7231fd8 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -402,7 +402,6 @@ impl Prover for DefaultProver { proof_id: &str, work_dir: Option, ) -> Result { - let temp_dir = tempdir().context("Failed to crate tmpdir")?; tracing::info!("Compressing proof Shrink bitvm2 {proof_id}"); let receipt = self .get_receipt(proof_id) @@ -418,19 +417,22 @@ impl Prover for DefaultProver { self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); tracing::debug!("shrink bitvm2 identity_p254 for proof {proof_id}"); - let succinct_receipt = receipt.inner.succinct().unwrap(); - let p254_receipt = risc0_zkvm::recursion::identity_p254(succinct_receipt) - .context("identity predicate failed")?; + let succinct_receipt = receipt.inner.succinct().unwrap().clone(); - tracing::info!("Completing identity predicate, {proof_id}"); - - let work_dir = - if let Some(work_dir) = work_dir { work_dir } else { temp_dir.path().to_path_buf() }; - - let compress_result = - shrink_bitvm2::prove_and_verify(&proof_id, &work_dir, p254_receipt, receipt.journal) - .await - .map_err(ProverError::from); + let compress_result = tokio::task::spawn_blocking(move || { + #[cfg(feature = "shrink_bitvm2")] + { + tracing::warn!("r0vm does not currently support shrink_bitvm2, compressing will be done locally"); + shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes) + } + #[cfg(not(feature = "shrink_bitvm2"))] + Err(ProverError::UnexpectedError(anyhow!( + "shrink_bitvm2 feature not enabled" + ))) + }) + .await + .unwrap() + .map_err(ProverError::from); let compressed_bytes = compress_result .as_ref() @@ -477,7 +479,10 @@ mod tests { sha::{Digest, Digestible}, Groth16Seal, }; - use shrink_bitvm2::{from_seal, get_ark_verifying_key, ShrinkBitvm2ReceiptClaim}; + use shrink_bitvm2::{ + // from_seal, get_ark_verifying_key, + ShrinkBitvm2ReceiptClaim, + }; use tempfile::tempdir; #[test] @@ -624,25 +629,25 @@ mod tests { let final_output_bytes = ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest(); - let public_input_scalar = - ark_bn254::Fr::from_be_bytes_mod_order(final_output_bytes.as_bytes()); - - // let public_input_scalar_str = public_input_scalar.to_string(); // let public_input_scalar = - // risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } - // .to_scalar() - // .unwrap(); - println!("Verify Start"); - let ark_vk = get_ark_verifying_key(); - let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); - let res = ark_groth16::Groth16::::verify_proof( - &ark_pvk, - &from_seal(&groth16_receipt.seal), - &[public_input_scalar], - ) - .unwrap(); - - println!("Shrink BitVM2 Verify result: {:?}", res); + // ark_bn254::Fr::from_be_bytes_mod_order(final_output_bytes.as_bytes()); + + // // let public_input_scalar_str = public_input_scalar.to_string(); + // // let public_input_scalar = + // // risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } + // // .to_scalar() + // // .unwrap(); + // println!("Verify Start"); + // let ark_vk = get_ark_verifying_key(); + // let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); + // let res = ark_groth16::Groth16::::verify_proof( + // &ark_pvk, + // &from_seal(&groth16_receipt.seal), + // &[public_input_scalar], + // ) + // .unwrap(); + + // println!("Shrink BitVM2 Verify result: {:?}", res); // let verifying_key = shrink_bitvm2::get_r0_verifying_key(); diff --git a/crates/povw/log-updater/Cargo.lock b/crates/povw/log-updater/Cargo.lock index 5bcfde7aa..eee7b5b97 100644 --- a/crates/povw/log-updater/Cargo.lock +++ b/crates/povw/log-updater/Cargo.lock @@ -1009,7 +1009,7 @@ dependencies = [ "bytemuck", "derive_builder", "postcard", - "risc0-povw 0.5.0", + "risc0-povw", "risc0-steel", "ruint", "serde", @@ -1023,8 +1023,8 @@ dependencies = [ "alloy-sol-types", "borsh", "boundless-povw", - "risc0-povw 0.4.0", - "risc0-zkvm 3.0.3", + "risc0-povw", + "risc0-zkvm", ] [[package]] @@ -1509,27 +1509,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" -[[package]] -name = "enum-map" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" -dependencies = [ - "enum-map-derive", - "serde", -] - -[[package]] -name = "enum-map-derive" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -2121,15 +2100,6 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "memmap2" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" -dependencies = [ - "libc", -] - [[package]] name = "merlin" version = "3.0.0" @@ -2952,29 +2922,8 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp 3.0.2", - "risc0-zkvm-platform 2.2.1", - "ruint", - "semver 1.0.26", - "serde", - "tracing", -] - -[[package]] -name = "risc0-binfmt" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "borsh", - "bytemuck", - "derive_more", - "elf", - "lazy_static", - "postcard", - "rand 0.9.2", - "risc0-zkp 3.0.3", - "risc0-zkvm-platform 2.3.0", + "risc0-zkp", + "risc0-zkvm-platform", "ruint", "semver 1.0.26", "serde", @@ -2990,25 +2939,10 @@ dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt 3.0.2", - "risc0-circuit-recursion 4.0.2", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "tracing", -] - -[[package]] -name = "risc0-circuit-keccak" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bytemuck", - "paste", - "risc0-binfmt 3.0.3", - "risc0-circuit-recursion 4.0.3", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3022,22 +2956,8 @@ dependencies = [ "bytemuck", "hex", "metal", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "tracing", -] - -[[package]] -name = "risc0-circuit-recursion" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bytemuck", - "hex", - "metal", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3052,27 +2972,9 @@ dependencies = [ "bytemuck", "derive_more", "paste", - "risc0-binfmt 3.0.2", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "serde", - "tracing", -] - -[[package]] -name = "risc0-circuit-rv32im" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bit-vec", - "bytemuck", - "derive_more", - "enum-map", - "paste", - "risc0-binfmt 3.0.3", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-core", + "risc0-zkp", "serde", "tracing", ] @@ -3087,15 +2989,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[package]] -name = "risc0-core" -version = "3.0.1" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "bytemuck", - "rand_core 0.9.3", -] - [[package]] name = "risc0-groth16" version = "3.0.2" @@ -3112,29 +3005,8 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt 3.0.2", - "risc0-zkp 3.0.2", - "serde", -] - -[[package]] -name = "risc0-groth16" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "bytemuck", - "hex", - "memmap2", - "num-bigint", - "num-traits", - "risc0-binfmt 3.0.3", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-zkp", "serde", ] @@ -3148,24 +3020,8 @@ dependencies = [ "bytemuck", "derive_builder", "hybrid-array", - "risc0-binfmt 3.0.2", - "risc0-zkvm 3.0.3", - "ruint", - "serde", - "thiserror 1.0.69", -] - -[[package]] -name = "risc0-povw" -version = "0.5.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "borsh", - "bytemuck", - "derive_builder", - "hybrid-array", - "risc0-binfmt 3.0.3", - "risc0-zkvm 4.0.0", + "risc0-binfmt", + "risc0-zkvm", "ruint", "serde", "thiserror 1.0.69", @@ -3201,17 +3057,7 @@ checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", - "risc0-zkvm-platform 2.2.1", -] - -[[package]] -name = "risc0-zkos-v1compat" -version = "2.2.1" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "include_bytes_aligned", - "no_std_strings", - "risc0-zkvm-platform 2.3.0", + "risc0-zkvm-platform", ] [[package]] @@ -3231,32 +3077,8 @@ dependencies = [ "metal", "paste", "rand_core 0.9.3", - "risc0-core 3.0.0", - "risc0-zkvm-platform 2.2.1", - "serde", - "sha2 0.10.9", - "stability", - "tracing", -] - -[[package]] -name = "risc0-zkp" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "blake2", - "borsh", - "bytemuck", - "cfg-if", - "digest 0.10.7", - "hex", - "hex-literal", - "metal", - "paste", - "rand_core 0.9.3", - "risc0-core 3.0.1", - "risc0-zkvm-platform 2.3.0", + "risc0-core", + "risc0-zkvm-platform", "serde", "sha2 0.10.9", "stability", @@ -3274,43 +3096,15 @@ dependencies = [ "bytemuck", "derive_more", "hex", - "risc0-binfmt 3.0.2", - "risc0-circuit-keccak 4.0.2", - "risc0-circuit-recursion 4.0.2", - "risc0-circuit-rv32im 4.0.2", - "risc0-core 3.0.0", - "risc0-groth16 3.0.2", - "risc0-zkos-v1compat 2.2.0", - "risc0-zkp 3.0.2", - "risc0-zkvm-platform 2.2.1", - "rrs-lib", - "semver 1.0.26", - "serde", - "sha2 0.10.9", - "stability", - "tracing", -] - -[[package]] -name = "risc0-zkvm" -version = "4.0.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "borsh", - "bytemuck", - "derive_more", - "enum-map", - "hex", - "risc0-binfmt 3.0.3", - "risc0-circuit-keccak 4.0.3", - "risc0-circuit-recursion 4.0.3", - "risc0-circuit-rv32im 4.0.3", - "risc0-core 3.0.1", - "risc0-groth16 3.0.3", - "risc0-zkos-v1compat 2.2.1", - "risc0-zkp 3.0.3", - "risc0-zkvm-platform 2.3.0", + "risc0-binfmt", + "risc0-circuit-keccak", + "risc0-circuit-recursion", + "risc0-circuit-rv32im", + "risc0-core", + "risc0-groth16", + "risc0-zkos-v1compat", + "risc0-zkp", + "risc0-zkvm-platform", "rrs-lib", "semver 1.0.26", "serde", @@ -3335,21 +3129,6 @@ dependencies = [ "stability", ] -[[package]] -name = "risc0-zkvm-platform" -version = "2.3.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "bytemuck", - "cfg-if", - "getrandom 0.2.16", - "getrandom 0.3.3", - "libm", - "num_enum", - "paste", - "stability", -] - [[package]] name = "rlp" version = "0.5.2" diff --git a/crates/povw/mint-calculator/Cargo.lock b/crates/povw/mint-calculator/Cargo.lock index e17fbf820..cd2213e5b 100644 --- a/crates/povw/mint-calculator/Cargo.lock +++ b/crates/povw/mint-calculator/Cargo.lock @@ -1023,7 +1023,7 @@ dependencies = [ "alloy-sol-types", "boundless-povw", "risc0-steel", - "risc0-zkvm 3.0.3", + "risc0-zkvm", ] [[package]] @@ -1508,27 +1508,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" -[[package]] -name = "enum-map" -version = "2.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" -dependencies = [ - "enum-map-derive", - "serde", -] - -[[package]] -name = "enum-map-derive" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "enum-ordinalize" version = "4.3.0" @@ -2120,15 +2099,6 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "memmap2" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" -dependencies = [ - "libc", -] - [[package]] name = "merlin" version = "3.0.0" @@ -2951,29 +2921,8 @@ dependencies = [ "lazy_static", "postcard", "rand 0.9.2", - "risc0-zkp 3.0.2", - "risc0-zkvm-platform 2.2.1", - "ruint", - "semver 1.0.26", - "serde", - "tracing", -] - -[[package]] -name = "risc0-binfmt" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "borsh", - "bytemuck", - "derive_more", - "elf", - "lazy_static", - "postcard", - "rand 0.9.2", - "risc0-zkp 3.0.3", - "risc0-zkvm-platform 2.3.0", + "risc0-zkp", + "risc0-zkvm-platform", "ruint", "semver 1.0.26", "serde", @@ -2989,25 +2938,10 @@ dependencies = [ "anyhow", "bytemuck", "paste", - "risc0-binfmt 3.0.2", - "risc0-circuit-recursion 4.0.2", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "tracing", -] - -[[package]] -name = "risc0-circuit-keccak" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bytemuck", - "paste", - "risc0-binfmt 3.0.3", - "risc0-circuit-recursion 4.0.3", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3021,22 +2955,8 @@ dependencies = [ "bytemuck", "hex", "metal", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "tracing", -] - -[[package]] -name = "risc0-circuit-recursion" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bytemuck", - "hex", - "metal", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-core", + "risc0-zkp", "tracing", ] @@ -3051,27 +2971,9 @@ dependencies = [ "bytemuck", "derive_more", "paste", - "risc0-binfmt 3.0.2", - "risc0-core 3.0.0", - "risc0-zkp 3.0.2", - "serde", - "tracing", -] - -[[package]] -name = "risc0-circuit-rv32im" -version = "4.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "bit-vec", - "bytemuck", - "derive_more", - "enum-map", - "paste", - "risc0-binfmt 3.0.3", - "risc0-core 3.0.1", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-core", + "risc0-zkp", "serde", "tracing", ] @@ -3086,15 +2988,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[package]] -name = "risc0-core" -version = "3.0.1" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "bytemuck", - "rand_core 0.9.3", -] - [[package]] name = "risc0-groth16" version = "3.0.2" @@ -3111,43 +3004,23 @@ dependencies = [ "hex", "num-bigint", "num-traits", - "risc0-binfmt 3.0.2", - "risc0-zkp 3.0.2", - "serde", -] - -[[package]] -name = "risc0-groth16" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "bytemuck", - "hex", - "memmap2", - "num-bigint", - "num-traits", - "risc0-binfmt 3.0.3", - "risc0-zkp 3.0.3", + "risc0-binfmt", + "risc0-zkp", "serde", ] [[package]] name = "risc0-povw" -version = "0.5.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14723827128770b53eb6550e2f995586ab79627581ff225de440d6e78bd69a3" dependencies = [ "borsh", "bytemuck", "derive_builder", "hybrid-array", - "risc0-binfmt 3.0.3", - "risc0-zkvm 4.0.0", + "risc0-binfmt", + "risc0-zkvm", "ruint", "serde", "thiserror 1.0.69", @@ -3183,17 +3056,7 @@ checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", - "risc0-zkvm-platform 2.2.1", -] - -[[package]] -name = "risc0-zkos-v1compat" -version = "2.2.1" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "include_bytes_aligned", - "no_std_strings", - "risc0-zkvm-platform 2.3.0", + "risc0-zkvm-platform", ] [[package]] @@ -3213,32 +3076,8 @@ dependencies = [ "metal", "paste", "rand_core 0.9.3", - "risc0-core 3.0.0", - "risc0-zkvm-platform 2.2.1", - "serde", - "sha2 0.10.9", - "stability", - "tracing", -] - -[[package]] -name = "risc0-zkp" -version = "3.0.3" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "blake2", - "borsh", - "bytemuck", - "cfg-if", - "digest 0.10.7", - "hex", - "hex-literal", - "metal", - "paste", - "rand_core 0.9.3", - "risc0-core 3.0.1", - "risc0-zkvm-platform 2.3.0", + "risc0-core", + "risc0-zkvm-platform", "serde", "sha2 0.10.9", "stability", @@ -3256,43 +3095,15 @@ dependencies = [ "bytemuck", "derive_more", "hex", - "risc0-binfmt 3.0.2", - "risc0-circuit-keccak 4.0.2", - "risc0-circuit-recursion 4.0.2", - "risc0-circuit-rv32im 4.0.2", - "risc0-core 3.0.0", - "risc0-groth16 3.0.2", - "risc0-zkos-v1compat 2.2.0", - "risc0-zkp 3.0.2", - "risc0-zkvm-platform 2.2.1", - "rrs-lib", - "semver 1.0.26", - "serde", - "sha2 0.10.9", - "stability", - "tracing", -] - -[[package]] -name = "risc0-zkvm" -version = "4.0.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "anyhow", - "borsh", - "bytemuck", - "derive_more", - "enum-map", - "hex", - "risc0-binfmt 3.0.3", - "risc0-circuit-keccak 4.0.3", - "risc0-circuit-recursion 4.0.3", - "risc0-circuit-rv32im 4.0.3", - "risc0-core 3.0.1", - "risc0-groth16 3.0.3", - "risc0-zkos-v1compat 2.2.1", - "risc0-zkp 3.0.3", - "risc0-zkvm-platform 2.3.0", + "risc0-binfmt", + "risc0-circuit-keccak", + "risc0-circuit-recursion", + "risc0-circuit-rv32im", + "risc0-core", + "risc0-groth16", + "risc0-zkos-v1compat", + "risc0-zkp", + "risc0-zkvm-platform", "rrs-lib", "semver 1.0.26", "serde", @@ -3317,21 +3128,6 @@ dependencies = [ "stability", ] -[[package]] -name = "risc0-zkvm-platform" -version = "2.3.0" -source = "git+https://github.com/risc0/risc0.git?rev=91ab0d85cfaf3e0240db752b8de6912d950b6034#91ab0d85cfaf3e0240db752b8de6912d950b6034" -dependencies = [ - "bytemuck", - "cfg-if", - "getrandom 0.2.16", - "getrandom 0.3.3", - "libm", - "num_enum", - "paste", - "stability", -] - [[package]] name = "rlp" version = "0.5.2" diff --git a/crates/shrink_bitvm2/Cargo.toml b/crates/shrink_bitvm2/Cargo.toml deleted file mode 100644 index 94f7af063..000000000 --- a/crates/shrink_bitvm2/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -[package] -name = "shrink_bitvm2" -resolver = "2" -version.workspace = true -edition.workspace = true -homepage.workspace = true -repository.workspace = true -publish = false - -[package.metadata.release] -release = false - -[dependencies] -anyhow = { workspace = true } -hex = { workspace = true } -num-bigint = { version = "0.4", features = ["std"] } -num-traits = "0.2.19" -risc0-groth16 = { workspace = true, features = ["prove"] } -risc0-zkvm = { workspace = true, features = ["std", "client", "prove"] } -serde = { workspace = true } -serde_json = { workspace = true } -sha2 = "0.10" -tempfile = { workspace = true } -tokio = { workspace = true, features = ["rt-multi-thread", "macros", "fs", "process"] } - -tracing = { workspace = true } - -ark-bn254 = "0.5.0" -ark-ff = "0.5.0" -ark-groth16 = { version = "0.5.0" } -ark-serialize = "0.5.0" -blake3 = { version = "1.5.0" } diff --git a/crates/shrink_bitvm2/src/lib.rs b/crates/shrink_bitvm2/src/lib.rs deleted file mode 100644 index 26ed844c8..000000000 --- a/crates/shrink_bitvm2/src/lib.rs +++ /dev/null @@ -1,426 +0,0 @@ -use std::path::Path; - -use hex::FromHex; -use risc0_zkvm::{ - digest, sha::Digestible, Digest, Groth16Receipt, Journal, MaybePruned, Receipt, ReceiptClaim, - SuccinctReceipt, SystemState, -}; - -use risc0_groth16::{ - prove::to_json as seal_to_json, ProofJson as Groth16ProofJson, Seal as Groth16Seal, -}; - -use anyhow::{ensure, Context, Result}; -use num_bigint::BigUint; -use num_traits::Num; - -use serde::Serialize; -use tokio::process::Command; - -pub const BN254_IDENTITY_CONTROL_ID: Digest = - digest!("c07a65145c3cb48b6101962ea607a4dd93c753bb26975cb47feb00d3666e4404"); - -#[derive(Clone, Debug, Serialize)] -pub struct ShrinkBitvm2ReceiptClaim { - control_root: Digest, - pre: MaybePruned, - post: MaybePruned, - control_id: Digest, - // Note: This journal has to be exactly 32 bytes - journal: Vec, -} - -impl ShrinkBitvm2ReceiptClaim { - pub fn ok( - image_id: impl Into, - journal: impl Into>, - ) -> ShrinkBitvm2ReceiptClaim { - let verifier_params = risc0_zkvm::SuccinctReceiptVerifierParameters::default(); - let control_root = verifier_params.control_root; - Self { - control_root, - pre: MaybePruned::Pruned(image_id.into()), - post: MaybePruned::Value(SystemState { pc: 0, merkle_root: Digest::ZERO }), - control_id: BN254_IDENTITY_CONTROL_ID, - journal: journal.into(), - } - } -} - -impl Digestible for ShrinkBitvm2ReceiptClaim { - fn digest(&self) -> Digest { - use sha2::{Digest as _, Sha256}; - - let mut control_root_bytes: [u8; 32] = self.control_root.as_bytes().try_into().unwrap(); - for byte in &mut control_root_bytes { - *byte = byte.reverse_bits(); - } - let mut hasher = Sha256::new(); - hasher.update(control_root_bytes); - hasher.update(self.pre.digest()); - hasher.update(self.post.digest()); - hasher.update(self.control_id.as_bytes()); - - let output_prefix = hasher.finalize(); - - // final blake3 hash - let mut hasher = blake3::Hasher::new(); - hasher.update(&output_prefix); - hasher.update(&self.journal); - - let mut digest_bytes: [u8; 32] = hasher.finalize().into(); - // trim to 31 bytes - digest_bytes[31] = 0; - // shift because of endianness - digest_bytes.rotate_right(1); - digest_bytes.into() - } -} - -pub async fn prove_and_verify( - proof_id: &str, - work_dir: &Path, - p254_receipt: SuccinctReceipt, - journal: Journal, -) -> Result { - let receipt_claim = p254_receipt.claim.clone().value()?; - - let seal_path = work_dir.join("input.json"); - let proof_path = work_dir.join("proof.json"); - let public_path = work_dir.join("public.json"); - - write_seal(&journal.bytes, p254_receipt, &receipt_claim, &seal_path).await?; - - let proof_json = generate_proof(work_dir, &proof_path).await?; - tracing::info!("{proof_id}: generated shrink groth16 proof"); - - let image_id = receipt_claim.pre.digest(); - let final_receipt = finalize(journal.bytes, receipt_claim, proof_json)?; - let output_bytes = decode_output(&public_path).await?; - tracing::info!("bvm2 decoded output byte length: {}", output_bytes.len()); - - check_output(image_id, &final_receipt, &output_bytes)?; - - verify_proof(&final_receipt, &output_bytes)?; - - Ok(final_receipt) -} - -fn check_output(image_id: Digest, final_receipt: &Receipt, output_bytes: &[u8]) -> Result<()> { - let expected_output_bytes: [u8; 32] = - ShrinkBitvm2ReceiptClaim::ok(image_id, final_receipt.journal.bytes.clone()).digest().into(); - - let expected_output_bytes: [u8; 31] = expected_output_bytes[1..=31].try_into()?; - tracing::info!("check output: computed output: {}", hex::encode(expected_output_bytes)); - - ensure!(expected_output_bytes == output_bytes, "check output: public output mismatch"); - - Ok(()) -} - -async fn decode_output(public_path: &Path) -> Result> { - let output_content_dec = tokio::fs::read_to_string(public_path).await?; - - // Convert output_content_dec from decimal to hex - let parsed_json: serde_json::Value = serde_json::from_str(&output_content_dec)?; - let output_str = parsed_json[0].as_str().context("read public output from json")?; - let output_content_hex = BigUint::from_str_radix(output_str, 10)?.to_str_radix(16); - - // If the length of the hexadecimal string is odd, add a leading zero - let output_content_hex = if output_content_hex.len() % 2 == 0 { - output_content_hex - } else { - format!("0{output_content_hex}") - }; - - Ok(hex::decode(&output_content_hex)?) -} - -fn finalize( - journal_bytes: Vec, - receipt_claim: ReceiptClaim, - proof_json: Groth16ProofJson, -) -> Result { - let seal: Groth16Seal = proof_json.try_into()?; - let verifier_parameters_digest = - Digest::from_hex("b72859b60cfe0bb13cbde70859fbc67ef9dbd5410bbe66bdb7be64a3dcf6814e") - .unwrap(); // TODO(ec2): dont hardcode this (actually not sure if this is ever even used, so could be digest zero) - let groth16_receipt = - Groth16Receipt::new(seal.to_vec(), receipt_claim.into(), verifier_parameters_digest); - let receipt = Receipt::new(risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), journal_bytes); - Ok(receipt) -} - -async fn write_seal( - journal_bytes: &[u8], - p254_receipt: SuccinctReceipt, - receipt_claim: &ReceiptClaim, - seal_path: &Path, -) -> Result<()> { - tracing::info!("Writing seal"); - - let seal_bytes = p254_receipt.get_seal_bytes(); - let seal_json = seal_to_json(seal_bytes.as_slice())?; // TODO(ec2): This is currently using a local version of risc0 which exposes this method - let mut seal_json: serde_json::Value = serde_json::from_str(&seal_json)?; - - let mut journal_bits = Vec::new(); - for byte in journal_bytes { - for i in 0..8 { - journal_bits.push((byte >> (7 - i)) & 1); - } - } - - let pre_state_digest_bits: Vec<_> = receipt_claim - .pre - .digest() - .as_bytes() - .iter() - .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) - .collect(); - - let post_state_digest_bits: Vec<_> = receipt_claim - .post - .digest() - .as_bytes() - .iter() - .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) - .collect(); - - let mut id_bn254_fr_bits: Vec = p254_receipt - .control_id - .as_bytes() - .iter() - .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) - .collect(); - // remove 248th and 249th bits - id_bn254_fr_bits.remove(248); - id_bn254_fr_bits.remove(248); - - let mut succinct_control_root_bytes: [u8; 32] = - risc0_zkvm::SuccinctReceiptVerifierParameters::default() - .control_root - .as_bytes() - .try_into()?; - - succinct_control_root_bytes.reverse(); - let succinct_control_root_hex = hex::encode(succinct_control_root_bytes); - - let a1_str = succinct_control_root_hex[0..32].to_string(); - let a0_str = succinct_control_root_hex[32..64].to_string(); - let a0_dec = to_decimal(&a0_str).context("a0_str returned None")?; - let a1_dec = to_decimal(&a1_str).context("a1_str returned None")?; - - let control_root = vec![a0_dec, a1_dec]; - - seal_json["journal_digest_bits"] = journal_bits.into(); - seal_json["pre_state_digest_bits"] = pre_state_digest_bits.into(); - seal_json["post_state_digest_bits"] = post_state_digest_bits.into(); - seal_json["id_bn254_fr_bits"] = id_bn254_fr_bits.into(); - seal_json["control_root"] = control_root.into(); - - tokio::fs::write(seal_path, serde_json::to_string_pretty(&seal_json)?).await?; - - Ok(()) -} - -// #!/bin/bash -// -// set -eoux -// -// ulimit -s unlimited -// ./verify_for_guest /mnt/input.json output.wtns -// rapidsnark verify_for_guest_final.zkey output.wtns /mnt/proof.json /mnt/public.json - -pub async fn generate_proof(work_dir: &Path, proof_path: &Path) -> Result { - tracing::info!("docker run ozancw/risc0-to-bitvm2-groth16-prover"); - - let volume = format!("{}:/mnt", work_dir.display()); - let status = Command::new("docker") - .args(["run", "--rm", "-v", &volume, "ozancw/risc0-to-bitvm2-groth16-prover"]) - .status() - .await?; - - anyhow::ensure!( - status.success(), - "ozancw/risc0-to-bitvm2-groth16-prover failed: {:?}", - status.code() - ); - - let proof_content = tokio::fs::read_to_string(proof_path).await?; - let proof_json: Groth16ProofJson = serde_json::from_str(&proof_content)?; - - Ok(proof_json) -} - -fn to_decimal(s: &str) -> Option { - let int = BigUint::from_str_radix(s, 16).ok(); - int.map(|n| n.to_str_radix(10)) -} - -pub fn verify_proof(final_receipt: &Receipt, output_bytes: &[u8]) -> Result<()> { - tracing::info!("verify_proof output bytes: {}", hex::encode(output_bytes)); - use ark_ff::PrimeField; - - let ark_proof = from_seal(&final_receipt.inner.groth16()?.seal); - let public_input_scalar = ark_bn254::Fr::from_be_bytes_mod_order(output_bytes); - let ark_vk = get_ark_verifying_key(); - let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); - let res = ark_groth16::Groth16::::verify_proof( - &ark_pvk, - &ark_proof, - &[public_input_scalar], - ) - .unwrap(); - tracing::info!("Shrink bitvm2 Proof verification result: {:?}", res); - - ensure!(res, "proof verification failed"); - - Ok(()) -} - -pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { - use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; - use std::str::FromStr; - - let alpha_g1 = G1Affine::new( - Fq::from_str( - "20491192805390485299153009773594534940189261866228447918068658471970481763042", - ) - .unwrap(), - Fq::from_str( - "9383485363053290200918347156157836566562967994039712273449902621266178545958", - ) - .unwrap(), - ); - - let beta_g2 = G2Affine::new( - Fq2::new( - Fq::from_str( - "6375614351688725206403948262868962793625744043794305715222011528459656738731", - ) - .unwrap(), - Fq::from_str( - "4252822878758300859123897981450591353533073413197771768651442665752259397132", - ) - .unwrap(), - ), - Fq2::new( - Fq::from_str( - "10505242626370262277552901082094356697409835680220590971873171140371331206856", - ) - .unwrap(), - Fq::from_str( - "21847035105528745403288232691147584728191162732299865338377159692350059136679", - ) - .unwrap(), - ), - ); - - let gamma_g2 = G2Affine::new( - Fq2::new( - Fq::from_str( - "10857046999023057135944570762232829481370756359578518086990519993285655852781", - ) - .unwrap(), - Fq::from_str( - "11559732032986387107991004021392285783925812861821192530917403151452391805634", - ) - .unwrap(), - ), - Fq2::new( - Fq::from_str( - "8495653923123431417604973247489272438418190587263600148770280649306958101930", - ) - .unwrap(), - Fq::from_str( - "4082367875863433681332203403145435568316851327593401208105741076214120093531", - ) - .unwrap(), - ), - ); - - let delta_g2 = G2Affine::new( - Fq2::new( - Fq::from_str( - "19928663713463533589216209779412278386769407450988172849262535478593422929698", - ) - .unwrap(), - Fq::from_str( - "19916519943909223643323234301580053157586699704876134064841182937085943926141", - ) - .unwrap(), - ), - Fq2::new( - Fq::from_str( - "4584600978911428195337731119171761277167808711062125916470525050324985708782", - ) - .unwrap(), - Fq::from_str( - "903010326261527050999816348900764705196723158942686053018929539519969664840", - ) - .unwrap(), - ), - ); - - let gamma_abc_g1 = vec![ - G1Affine::new( - Fq::from_str( - "6698887085900109660417671413804888867145870700073340970189635830129386206569", - ) - .unwrap(), - Fq::from_str( - "10431087902009508261375793061696708147989126018612269070732549055898651692604", - ) - .unwrap(), - ), - G1Affine::new( - Fq::from_str( - "20225609417084538563062516991929114218412992453664808591983416996515711931386", - ) - .unwrap(), - Fq::from_str( - "3236310410959095762960658876334609343091075204896196791007975095263664214628", - ) - .unwrap(), - ), - ]; - - ark_groth16::VerifyingKey { alpha_g1, beta_g2, gamma_g2, delta_g2, gamma_abc_g1 } -} -pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { - let json_content = std::fs::read_to_string("/home/etu/risc0-to-bitvm2/vkey_guest.json") - .expect("Failed to read verification key JSON file"); - let vk_json: risc0_groth16::VerifyingKeyJson = - serde_json::from_str(&json_content).expect("Failed to parse verification key JSON"); - - vk_json.verifying_key().unwrap() -} -pub fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { - use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; - use ark_ff::{Field, PrimeField}; - - let a = G1Affine::new( - Fq::from_be_bytes_mod_order(&seal_bytes[0..32]), - Fq::from_be_bytes_mod_order(&seal_bytes[32..64]), - ); - - let b = G2Affine::new( - Fq2::from_base_prime_field_elems([ - Fq::from_be_bytes_mod_order(&seal_bytes[96..128]), - Fq::from_be_bytes_mod_order(&seal_bytes[64..96]), - ]) - .unwrap(), - Fq2::from_base_prime_field_elems([ - Fq::from_be_bytes_mod_order(&seal_bytes[160..192]), - Fq::from_be_bytes_mod_order(&seal_bytes[128..160]), - ]) - .unwrap(), - ); - - let c = G1Affine::new( - Fq::from_be_bytes_mod_order(&seal_bytes[192..224]), - Fq::from_be_bytes_mod_order(&seal_bytes[224..256]), - ); - - ark_groth16::Proof { a, b, c } -} From 35d9c2f6ed2d0429d36f905bf99ef9c3089a5478 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 1 Oct 2025 14:14:33 -0400 Subject: [PATCH 07/86] test works with gpu prover --- Cargo.lock | 1081 ++++++++++++-------------- Cargo.toml | 14 +- bento/Cargo.lock | 27 + bento/Cargo.toml | 2 +- crates/broker/Cargo.toml | 3 +- crates/broker/src/order_picker.rs | 12 +- crates/broker/src/provers/bonsai.rs | 29 +- crates/broker/src/provers/default.rs | 72 +- crates/broker/src/provers/mod.rs | 10 +- crates/broker/src/proving.rs | 2 +- remappings.txt | 2 +- 11 files changed, 578 insertions(+), 676 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a97ae052..f55995af7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,14 +21,23 @@ checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "cpp_demangle", "fallible-iterator", - "gimli", + "gimli 0.31.1", "memmap2 0.9.8", - "object", + "object 0.36.7", "rustc-demangle", "smallvec", "typed-arena", ] +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli 0.32.3", +] + [[package]] name = "adler2" version = "2.0.1" @@ -64,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f63701831729cb154cf0b6945256af46c426074646c98b9d123148ba1d8bde" +checksum = "7f6cfe35f100bc496007c9a00f90b88bdf565f1421d4c707c9f07e0717e2aaad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -91,11 +100,11 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8ff73a143281cb77c32006b04af9c047a6b8fe5860e85a88ad325328965355" +checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "num_enum", "serde", "strum", @@ -103,12 +112,12 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a3bd0305a44fb457cae77de1e82856eadd42ea3cdf0dae29df32eb3b592979" +checksum = "59094911f05dbff1cf5b29046a00ef26452eccc8d47136d50a47c0cf22f00c85" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "alloy-trie 0.9.1", @@ -122,19 +131,20 @@ dependencies = [ "rand 0.8.5", "secp256k1 0.30.0", "serde", + "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-consensus-any" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a842b4023f571835e62ac39fb8d523d19fcdbacfa70bf796ff96e7e19586f50" +checksum = "903cb8f728107ca27c816546f15be38c688df3c381d7bd1a4a9f215effc1ddb4" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "serde", @@ -142,16 +152,16 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "591104333286b52b03ec4e8162983e31122b318d21ae2b0900d1e8b51727ad40" +checksum = "03df5cb3b428ac96b386ad64c11d5c6e87a5505682cf1fbd6f8f773e9eda04f6" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-json-abi", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth", @@ -160,30 +170,30 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-core" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09" +checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c" +checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-type-parser", "alloy-sol-types", "itoa", @@ -198,11 +208,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "crc", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -211,7 +221,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "serde", ] @@ -222,23 +232,23 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "k256 0.13.4", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd749c57f38f8cbf433e651179fc5a676255e6b95044f467d49255d2b81725a" +checksum = "ac7f1c9a1ccc7f3e03c36976455751a6166a4f0d2d2c530c3f87dfe7d0cdc836" dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "auto_impl", @@ -248,7 +258,7 @@ dependencies = [ "serde", "serde_with", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -259,8 +269,8 @@ checksum = "0dbe7c66c859b658d879b22e8aaa19546dab726b0639f4649a424ada3d99349e" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-hardforks 0.3.3", - "alloy-primitives 1.3.1", + "alloy-hardforks 0.3.5", + "alloy-primitives 1.4.0", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", @@ -268,17 +278,17 @@ dependencies = [ "op-alloy-consensus", "op-revm", "revm", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-genesis" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d32cbf6c26d7d87e8a4e5925bbce41456e0bbeed95601add3443af277cd604e" +checksum = "1421f6c9d15e5b86afbfe5865ca84dea3b9f77173a0963c1a2ee4e626320ada9" dependencies = [ "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-serde", "alloy-trie 0.9.1", "serde", @@ -293,31 +303,31 @@ checksum = "3165210652f71dfc094b051602bafd691f506c54050a174b1cba18fb5ef706a3" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "auto_impl", "dyn-clone", ] [[package]] name = "alloy-hardforks" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d66cfdf265bf52c0c4a952960c854c3683c71ff2fc02c9b8c317c691fd3bc28" +checksum = "889eb3949b58368a09d4f16931c660275ef5fb08e5fbd4a96573b19c7085c41f" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "auto_impl", "dyn-clone", ] [[package]] name = "alloy-json-abi" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-type-parser", "serde", "serde_json", @@ -325,31 +335,31 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f614019a029c8fec14ae661aa7d4302e6e66bdbfb869dab40e78dcfba935fc97" +checksum = "65f763621707fa09cece30b73ecc607eb43fd7a72451fe3b46f645b905086926" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "http 1.3.1", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be8b6d58e98803017bbfea01dde96c4d270a29e7aed3beb65c8d28b5ab464e0e" +checksum = "2f59a869fa4b4c3a7f08b1c8cb79aec61c29febe6e24a24fe0fcfded8a9b5703" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", @@ -361,39 +371,39 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db489617bffe14847bf89f175b1c183e5dd7563ef84713936e2c34255cfbd845" +checksum = "46e9374c667c95c41177602ebe6f6a2edd455193844f011d973d374b65501b38" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-serde", "serde", ] [[package]] name = "alloy-node-bindings" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50536212c8b686907f66dbac78799b8d39e18558648963594544ac1a05f4306d" +checksum = "d392c130f3d4a325c913348351395efb16d197da1d07c2de3a2f7876d9d981ee" dependencies = [ "alloy-genesis", "alloy-hardforks 0.2.13", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-signer", "alloy-signer-local", "k256 0.13.4", "rand 0.8.5", "serde_json", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "url", ] @@ -422,18 +432,18 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more 2.0.1", - "foldhash", - "hashbrown 0.15.5", - "indexmap 2.11.3", + "foldhash 0.2.0", + "hashbrown 0.16.0", + "indexmap 2.11.4", "itoa", "k256 0.13.4", "keccak-asm", @@ -449,9 +459,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed90278374435e076a04dbddbb6d714bdd518eb274a64dbd70f65701429dd747" +checksum = "77818b7348bd5486491a5297579dbfe5f706a81f8e1f5976393025f1e22a7c7d" dependencies = [ "alloy-chains", "alloy-consensus", @@ -460,7 +470,7 @@ dependencies = [ "alloy-network", "alloy-network-primitives", "alloy-node-bindings", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-anvil", @@ -487,7 +497,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -496,12 +506,12 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f539a4caaa5496ad54af38f5615adb54cc7b3ec1a42e530e706291cce074f4a" +checksum = "249b45103a66c9ad60ad8176b076106d03a2399a37f0ee7b0e03692e6b354cb9" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-transport", "auto_impl", "bimap", @@ -540,12 +550,12 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33732242ca63f107f5f8284190244038905fb233280f4b7c41f641d4f584d40d" +checksum = "2430d5623e428dd012c6c2156ae40b7fe638d6fca255e3244e0fba51fa698e93" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -566,11 +576,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2683049c5f3037d64722902e2c1081f3d45de68696aca0511bbea834905746" +checksum = "e9e131624d08a25cfc40557041e7dc42e1182fa1153e7592d120f769a1edce56" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rpc-types-anvil", "alloy-rpc-types-debug", "alloy-rpc-types-engine", @@ -583,11 +593,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b757081f2a68e683de3731108494fa058036d5651bf10141ec2430bc1315c362" +checksum = "d65e3266095e6d8e8028aab5f439c6b8736c5147314f7e606c61597e014cb8a0" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -595,9 +605,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f27c0c41a16cd0af4f5dbf791f7be2a60502ca8b0e840e0ad29803fac2d587" +checksum = "07429a1099cd17227abcddb91b5e38c960aaeb02a6967467f5bb561fbe716ac6" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -606,11 +616,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d46cb226f1c8071875f4d0d8a0eb3ac571fcc49cd3bcdc20a5818de7b6ef0634" +checksum = "aeff305b7d10cc1c888456d023e7bb8a5ea82e9e42b951e37619b88cc1a1486d" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "derive_more 2.0.1", "serde", "serde_with", @@ -618,13 +628,13 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dec35a39206f0e04e8544d763c9fe324cc01f74de8821ef4b61e25ac329682f9" +checksum = "222ecadcea6aac65e75e32b6735635ee98517aa63b111849ee01ae988a71d685" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "derive_more 2.0.1", @@ -636,15 +646,15 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f5812f81c3131abc2cd8953dc03c41999e180cff7252abbccaba68676e15027" +checksum = "db46b0901ee16bbb68d986003c66dcb74a12f9d9b3c44f8e85d51974f2458f0f" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "alloy-sol-types", @@ -652,30 +662,30 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-rpc-types-trace" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1070e7e92dae6a9c48885980f4f9ca9faa70f945fcd62fbb94472182ca08854f" +checksum = "36f10620724bd45f80c79668a8cdbacb6974f860686998abce28f6196ae79444" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rpc-types-eth", "alloy-serde", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f070754e160f6e34038305f472137eeb04170586d60d69c5d1e06fefe362a1f" +checksum = "864f41befa90102d4e02327679699a7e9510930e2924c529e31476086609fa89" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -683,51 +693,51 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dfe41a47805a34b848c83448946ca96f3d36842e8c074bcf8fa0870e337d12" +checksum = "5413814be7a22fbc81e0f04a2401fcc3eb25e56fd53b04683e8acecc6e1fe01b" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "serde", "serde_json", ] [[package]] name = "alloy-signer" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79237b4c1b0934d5869deea4a54e6f0a7425a8cd943a739d6293afdf893d847" +checksum = "53410a18a61916e2c073a6519499514e027b01e77eeaf96acd1df7cf96ef6bb2" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "async-trait", "auto_impl", "either", "elliptic-curve 0.13.8", "k256 0.13.4", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-local" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6e90a3858da59d1941f496c17db8d505f643260f7e97cdcdd33823ddca48fc1" +checksum = "e6006c4cbfa5d08cadec1fcabea6cb56dc585a30a9fce40bcf81e307d6a71c8e" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-signer", "async-trait", "k256 0.13.4", "rand 0.8.5", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-sol-macro" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -739,15 +749,15 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.3", + "indexmap 2.11.4", "proc-macro-error2", "proc-macro2", "quote", @@ -758,9 +768,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" dependencies = [ "alloy-json-abi", "const-hex", @@ -776,9 +786,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0" +checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" dependencies = [ "serde", "winnow", @@ -786,24 +796,24 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-macro", "serde", ] [[package]] name = "alloy-transport" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb43750e137fe3a69a325cd89a8f8e2bbf4f83e70c0f60fbe49f22511ca075e8" +checksum = "d94ee404368a3d9910dfe61b203e888c6b0e151a50e147f95da8baff9f9c7763" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "auto_impl", "base64 0.22.1", "derive_more 2.0.1", @@ -812,7 +822,7 @@ dependencies = [ "parking_lot 0.12.4", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower 0.5.2", "tracing", @@ -822,9 +832,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9b42c7d8b666eed975739201f407afc3320d3cd2e4d807639c2918fc736ea67" +checksum = "a2f8a6338d594f6c6481292215ee8f2fd7b986c80aba23f3f44e761a8658de78" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -837,9 +847,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07b920e2d4ec9b08cb12a32fa8e5e95dfcf706fe1d7f46453e24ee7089e29f0" +checksum = "17a37a8ca18006fa0a58c7489645619ff58cfa073f2b29c4e052c9bd114b123a" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -857,15 +867,15 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83db1cc29cce5f692844d6cf1b6b270ae308219c5d90a7246a74f3479b9201c2" +checksum = "679b0122b7bca9d4dc5eb2c0549677a3c53153f6e232f23f4b3ba5575f74ebde" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.3.1", - "rustls 0.23.31", + "rustls 0.23.32", "serde_json", "tokio", "tokio-tungstenite 0.26.2", @@ -879,7 +889,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "arrayvec", "derive_more 2.0.1", @@ -895,11 +905,11 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "arrayvec", "derive_more 2.0.1", - "nybbles 0.4.4", + "nybbles 0.4.6", "serde", "smallvec", "tracing", @@ -907,11 +917,11 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.32" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e434e0917dce890f755ea774f59d6f12557bc8c7dd9fa06456af80cfe0f0181e" +checksum = "e64c09ec565a90ed8390d82aa08cd3b22e492321b96cb4a3d4f58414683c9e2f" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "darling 0.21.3", "proc-macro2", "quote", @@ -944,9 +954,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -979,9 +989,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" dependencies = [ "backtrace", ] @@ -1509,7 +1519,7 @@ dependencies = [ "polling", "rustix 1.1.2", "slab", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -1565,7 +1575,7 @@ dependencies = [ "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -1752,9 +1762,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" +checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" dependencies = [ "aws-lc-sys", "zeroize", @@ -1762,15 +1772,16 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.31.0" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" +checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", + "libloading", ] [[package]] @@ -1800,9 +1811,9 @@ dependencies = [ [[package]] name = "aws-sdk-cloudwatch" -version = "1.91.0" +version = "1.92.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6897407ce6e9d234a6fff32b3ea077f657cf9a2dcf9d0c7971d732ec903e4e4" +checksum = "b3a93118d58a83aabefb333e53f7586b1de88fa52ca021b3882435a8005b4d9c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1882,9 +1893,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.85.0" +version = "1.86.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e05f33b6c9026fecfe9b3b6740f34d41bc6ff641a6a32dabaab60209245b75" +checksum = "9d1cc7fb324aa12eb4404210e6381195c5b5e9d52c2682384f295f38716dd3c7" dependencies = [ "aws-credential-types", "aws-runtime", @@ -2055,16 +2066,16 @@ dependencies = [ "hyper-rustls 0.24.2", "hyper-rustls 0.27.7", "hyper-util", - "indexmap 2.11.3", + "indexmap 2.11.4", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower 0.5.2", "tracing", ] @@ -2103,7 +2114,7 @@ dependencies = [ "regex-lite", "roxmltree", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -2208,9 +2219,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" +checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" dependencies = [ "axum-core", "base64 0.22.1", @@ -2228,15 +2239,14 @@ dependencies = [ "mime", "percent-encoding", "pin-project-lite", - "rustversion", - "serde", + "serde_core", "serde_json", "serde_path_to_error", "serde_urlencoded", "sha1", "sync_wrapper", "tokio", - "tokio-tungstenite 0.26.2", + "tokio-tungstenite 0.28.0", "tower 0.5.2", "tower-layer", "tower-service", @@ -2245,9 +2255,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" dependencies = [ "bytes", "futures-core", @@ -2256,7 +2266,6 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", - "rustversion", "sync_wrapper", "tower-layer", "tower-service", @@ -2271,17 +2280,17 @@ checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ - "addr2line", + "addr2line 0.25.1", "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.37.3", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.0", ] [[package]] @@ -2511,9 +2520,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2524,27 +2533,26 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", "reqwest", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", + "tokio", ] [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "duplicate", "maybe-async", "reqwest", "serde", - "thiserror 2.0.16", - "tokio", + "thiserror 2.0.17", ] [[package]] @@ -2575,7 +2583,7 @@ name = "boundless-assessor" version = "0.15.0" dependencies = [ "alloy", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "boundless-market", "guest-assessor", @@ -2584,7 +2592,7 @@ dependencies = [ "risc0-zkvm", "serde", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", ] @@ -2698,7 +2706,7 @@ dependencies = [ "risc0-zkvm", "sqlx", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "tracing-subscriber 0.3.20", @@ -2712,7 +2720,7 @@ version = "0.15.0" dependencies = [ "alloy", "alloy-chains", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "anyhow", "async-stream", @@ -2740,7 +2748,7 @@ dependencies = [ "sha2 0.10.9", "siwe", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", "tokio", "tokio-tungstenite 0.24.0", @@ -2778,7 +2786,7 @@ dependencies = [ "alloy", "alloy-chains", "alloy-contract", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-provider", "alloy-signer", "alloy-sol-types", @@ -2820,7 +2828,7 @@ dependencies = [ "risc0-ethereum-contracts", "risc0-zkvm", "sqlx", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "tracing-subscriber 0.3.20", @@ -2833,7 +2841,7 @@ name = "boundless-test-utils" version = "0.15.0" dependencies = [ "alloy", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "anyhow", "bincode", @@ -2940,7 +2948,7 @@ dependencies = [ "temp-env", "tempfile", "test-log", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "toml 0.8.23", @@ -3058,9 +3066,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.1" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" dependencies = [ "blst", "cc", @@ -3100,9 +3108,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1de8bc0aa9e9385ceb3bf0c152e3a9b9544f6c4a912c8ae504e80c1f0368603" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ "serde_core", ] @@ -3127,7 +3135,7 @@ dependencies = [ "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -3151,9 +3159,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.37" +version = "1.2.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" dependencies = [ "find-msvc-tools", "jobserver", @@ -3247,7 +3255,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "winnow", "wtns-file", ] @@ -3265,9 +3273,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.47" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", "clap_derive", @@ -3275,9 +3283,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.47" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -3327,7 +3335,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -3465,9 +3473,9 @@ dependencies = [ [[package]] name = "cpp_demangle" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" +checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" dependencies = [ "cfg-if", ] @@ -3585,6 +3593,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -3806,12 +3823,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3983,7 +4000,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -4019,7 +4036,7 @@ name = "doc-test" version = "0.15.0" dependencies = [ "alloy", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "anyhow", "boundless-market", @@ -4347,7 +4364,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -4498,9 +4515,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" [[package]] name = "find_cuda_helper" @@ -4529,12 +4546,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "fixedbitset" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" - [[package]] name = "flate2" version = "1.1.2" @@ -4578,6 +4589,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -4793,20 +4810,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "generator" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" -dependencies = [ - "cc", - "cfg-if", - "libc", - "log", - "rustversion", - "windows 0.61.3", -] - [[package]] name = "generic-array" version = "0.14.7" @@ -4852,10 +4855,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.3", + "indexmap 2.11.4", "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + [[package]] name = "git2" version = "0.20.2" @@ -4991,7 +5000,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.3", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -5010,7 +5019,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.3", + "indexmap 2.11.4", "slab", "tokio", "tokio-util", @@ -5059,7 +5068,16 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", "serde", ] @@ -5379,11 +5397,11 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower-service", "webpki-roots 1.0.2", ] @@ -5422,7 +5440,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -5442,7 +5460,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.0", + "windows-core", ] [[package]] @@ -5641,12 +5659,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.3" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92119844f513ffa41556430369ab02c295a3578af21cf945caa3e9e0c2481ac3" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", "serde_core", ] @@ -5822,9 +5840,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.79" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6247da8b8658ad4e73a186e747fcc5fc2a29f979d6fe6269127fdb5fd08298d0" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ "once_cell", "wasm-bindgen", @@ -5930,7 +5948,7 @@ dependencies = [ "ena", "itertools 0.11.0", "lalrpop-util", - "petgraph 0.6.5", + "petgraph", "pico-args", "regex", "regex-syntax", @@ -6039,9 +6057,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.176" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" [[package]] name = "libgit2-sys" @@ -6062,14 +6080,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-targets 0.48.5", ] [[package]] name = "liblzma" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10bf66f4598dc77ff96677c8e763655494f00ff9c1cf79e2eb5bb07bc31f807d" +checksum = "73c36d08cad03a3fbe2c4e7bb3a9e84c57e4ee4135ed0b065cade3d98480c648" dependencies = [ "liblzma-sys", ] @@ -6223,19 +6241,6 @@ dependencies = [ "value-bag", ] -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber 0.3.20", -] - [[package]] name = "lru" version = "0.12.5" @@ -6392,9 +6397,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" @@ -6526,23 +6531,22 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.10" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" dependencies = [ "async-lock", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", + "equivalent", "event-listener 5.4.1", "futures-util", - "loom", "parking_lot 0.12.4", "portable-atomic", "rustc_version 0.4.1", "smallvec", "tagptr", - "thiserror 1.0.69", "uuid", ] @@ -6831,7 +6835,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.4.0", + "proc-macro-crate 1.1.3", "proc-macro2", "quote", "syn 2.0.106", @@ -6876,9 +6880,9 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0418987d1aaed324d95b4beffc93635e19be965ed5d63ec07a35980fe3b71a4" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", "cfg-if", @@ -6908,6 +6912,15 @@ dependencies = [ "ruzstd", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -6928,17 +6941,17 @@ checksum = "d9ade20c592484ba1ea538006e0454284174447a3adf9bb59fa99ed512f95493" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "derive_more 2.0.1", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "op-revm" -version = "10.0.0" +version = "10.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba21d705bbbfc947a423cba466d75e4af0c7d43ee89ba0a0f1cfa04963cede9" +checksum = "f9ba4f4693811e73449193c8bd656d3978f265871916882e6a51a487e4f96217" dependencies = [ "auto_impl", "revm", @@ -7020,7 +7033,7 @@ dependencies = [ "serde", "serde_json", "sqlx", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "tower-http 0.5.2", @@ -7179,7 +7192,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", - "thiserror 2.0.16", + "thiserror 2.0.17", "ucd-trie", ] @@ -7189,18 +7202,8 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset 0.4.2", - "indexmap 2.11.3", -] - -[[package]] -name = "petgraph" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" -dependencies = [ - "fixedbitset 0.5.7", - "indexmap 2.11.3", + "fixedbitset", + "indexmap 2.11.4", ] [[package]] @@ -7353,7 +7356,7 @@ dependencies = [ "hermit-abi", "pin-project-lite", "rustix 1.1.2", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -7500,7 +7503,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.5", + "toml_edit 0.23.6", ] [[package]] @@ -7573,9 +7576,9 @@ dependencies = [ [[package]] name = "proptest" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", @@ -7623,7 +7626,7 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph 0.7.1", + "petgraph", "prettyplease", "prost", "prost-types", @@ -7686,9 +7689,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.31", - "socket2 0.6.0", - "thiserror 2.0.16", + "rustls 0.23.32", + "socket2 0.5.10", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -7706,10 +7709,10 @@ dependencies = [ "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -7724,16 +7727,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] @@ -7890,23 +7893,23 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", @@ -7922,14 +7925,14 @@ dependencies = [ "cfg-if", "libc", "rustix 1.1.2", - "windows 0.62.0", + "windows", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", @@ -7939,9 +7942,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", @@ -7988,7 +7991,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-pki-types", "serde", "serde_json", @@ -7996,7 +7999,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tower 0.5.2", "tower-http 0.6.6", @@ -8057,9 +8060,9 @@ dependencies = [ [[package]] name = "revm" -version = "29.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c278b6ee9bba9e25043e3fae648fdce632d1944d3ba16f5203069b43bddd57f" +checksum = "718d90dce5f07e115d0e66450b1b8aa29694c1cf3f89ebddaddccc2ccbd2f13e" dependencies = [ "revm-bytecode", "revm-context", @@ -8088,9 +8091,9 @@ dependencies = [ [[package]] name = "revm-context" -version = "9.0.2" +version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fb02c5dab3b535aa5b18277b1d21c5117a25d42af717e6ce133df0ea56663e1" +checksum = "5a20c98e7008591a6f012550c2a00aa36cba8c14cc88eb88dec32eb9102554b4" dependencies = [ "bitvec", "cfg-if", @@ -8105,9 +8108,9 @@ dependencies = [ [[package]] name = "revm-context-interface" -version = "10.1.0" +version = "10.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b8e9311d27cf75fbf819e7ba4ca05abee1ae02e44ff6a17301c7ab41091b259" +checksum = "b50d241ed1ce647b94caf174fcd0239b7651318b2c4c06b825b59b973dfb8495" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -8148,9 +8151,9 @@ dependencies = [ [[package]] name = "revm-handler" -version = "10.0.0" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528d2d81cc918d311b8231c35330fac5fba8b69766ddc538833e2b5593ee016e" +checksum = "550331ea85c1d257686e672081576172fe3d5a10526248b663bbf54f1bef226a" dependencies = [ "auto_impl", "derive-where", @@ -8167,9 +8170,9 @@ dependencies = [ [[package]] name = "revm-inspector" -version = "10.0.0" +version = "10.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf443b664075999a14916b50c5ae9e35a7d71186873b8f8302943d50a672e5e0" +checksum = "7c0a6e9ccc2ae006f5bed8bd80cd6f8d3832cd55c5e861b9402fdd556098512f" dependencies = [ "auto_impl", "either", @@ -8185,9 +8188,9 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "25.0.2" +version = "25.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d6406b711fac73b4f13120f359ed8e65964380dd6182bd12c4c09ad0d4641f" +checksum = "06575dc51b1d8f5091daa12a435733a90b4a132dca7ccee0666c7db3851bc30c" dependencies = [ "revm-bytecode", "revm-context-interface", @@ -8226,7 +8229,7 @@ version = "20.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "num_enum", "once_cell", "serde", @@ -8298,7 +8301,7 @@ dependencies = [ name = "risc0-aggregation" version = "0.9.0" dependencies = [ - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "bytemuck", "hex", @@ -8306,14 +8309,13 @@ dependencies = [ "risc0-zkp", "risc0-zkvm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "borsh", @@ -8333,9 +8335,8 @@ dependencies = [ [[package]] name = "risc0-build" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" +version = "3.0.4" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "cargo_metadata", @@ -8377,8 +8378,7 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "cc", "directories", @@ -8391,8 +8391,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "bytemuck", @@ -8413,8 +8412,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "cc", "cust", @@ -8429,8 +8427,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "bytemuck", @@ -8455,8 +8452,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "glob", "risc0-build-kernel", @@ -8468,8 +8464,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8502,8 +8497,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "cc", "cust", @@ -8518,8 +8512,7 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "bytemuck", "nvtx", @@ -8532,7 +8525,7 @@ name = "risc0-ethereum-contracts" version = "3.0.1" dependencies = [ "alloy", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-sol-types", "anyhow", "cfg-if", @@ -8540,15 +8533,14 @@ dependencies = [ "risc0-aggregation", "risc0-zkvm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "risc0-groth16" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "ark-bn254", @@ -8577,8 +8569,7 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "blst", @@ -8613,7 +8604,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.3.1", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-rpc-types", "alloy-sol-types", @@ -8627,7 +8618,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.9", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "url", ] @@ -8635,8 +8626,7 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "blst", @@ -8648,8 +8638,7 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -8659,8 +8648,7 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "anyhow", "blake2", @@ -8690,14 +8678,13 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" +version = "3.0.4" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ - "addr2line", + "addr2line 0.24.2", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bonsai-sdk 1.4.1 (git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a)", "borsh", "bytemuck", "bytes", @@ -8706,13 +8693,13 @@ dependencies = [ "enum-map", "gdbstub", "gdbstub_arch", - "gimli", + "gimli 0.31.1", "hex", "keccak", "lazy-regex", "num-bigint 0.4.6", "num-traits", - "object", + "object 0.36.7", "prost", "rand 0.9.2", "rayon", @@ -8741,8 +8728,7 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "bytemuck", "cfg-if", @@ -8839,13 +8825,14 @@ dependencies = [ [[package]] name = "ruint" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "borsh", "bytes", "fastrlp 0.3.1", @@ -8860,7 +8847,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -8964,7 +8951,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -8981,9 +8968,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "aws-lc-rs", "once_cell", @@ -9015,7 +9002,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.4.0", + "security-framework 3.5.1", ] [[package]] @@ -9095,8 +9082,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" +source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" dependencies = [ "hex", "rsa", @@ -9106,7 +9092,7 @@ dependencies = [ "sha2 0.10.9", "strum", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "toml 0.8.23", "yaml-rust2", ] @@ -9144,7 +9130,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -9171,12 +9157,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -9284,9 +9264,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ "bitflags 2.9.4", "core-foundation 0.10.1", @@ -9347,9 +9327,9 @@ checksum = "f97841a747eef040fcd2e7b3b9a220a7205926e60488e673d9e4926d27772ce5" [[package]] name = "serde" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" dependencies = [ "serde_core", "serde_derive", @@ -9357,18 +9337,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.225" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -9381,7 +9361,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.3", + "indexmap 2.11.4", "itoa", "memchr", "ryu", @@ -9433,15 +9413,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.3", + "indexmap 2.11.4", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -9453,11 +9433,11 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", "syn 2.0.106", @@ -9481,7 +9461,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.3", + "indexmap 2.11.4", "itoa", "ryu", "serde", @@ -9591,9 +9571,9 @@ dependencies = [ [[package]] name = "shadow-rs" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8aa5c0570cd9654158bd39f0f8caba24edbc058313946e89f4648b1de1ecf49" +checksum = "72d18183cef626bce22836103349c7050d73db799be0171386b80947d157ae32" dependencies = [ "const_format", "git2", @@ -9622,16 +9602,27 @@ name = "shrink_bitvm2" version = "0.1.0" dependencies = [ "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", "blake3", "borsh", + "circom-witnesscalc", + "crypto-bigint 0.5.2", "hex", + "num-bigint 0.4.6", + "num-traits", "risc0-groth16", + "risc0-groth16-sys", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", "sha2 0.10.9", "tempfile", "tracing", + "wtns-file", ] [[package]] @@ -9683,7 +9674,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", ] @@ -9816,17 +9807,17 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.3", + "indexmap 2.11.4", "log", "memchr", "once_cell", "percent-encoding", - "rustls 0.23.31", + "rustls 0.23.32", "serde", "serde_json", "sha2 0.10.9", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -9910,7 +9901,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "whoami", ] @@ -9948,7 +9939,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "whoami", ] @@ -9973,7 +9964,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "url", ] @@ -10119,9 +10110,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c" +checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" dependencies = [ "paste", "proc-macro2", @@ -10206,15 +10197,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.22.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix 1.1.2", - "windows-sys 0.61.0", + "windows-sys 0.61.1", ] [[package]] @@ -10267,11 +10258,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.17", ] [[package]] @@ -10287,9 +10278,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", @@ -10316,11 +10307,12 @@ dependencies = [ [[package]] name = "time" -version = "0.3.43" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", + "itoa", "libc", "num-conv", "num_threads", @@ -10433,11 +10425,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.31", + "rustls 0.23.32", "tokio", ] @@ -10475,14 +10467,26 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tungstenite 0.26.2", "webpki-roots 0.26.11", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.28.0", +] + [[package]] name = "tokio-util" version = "0.7.16" @@ -10529,9 +10533,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a197c0ec7d131bfc6f7e82c8442ba1595aeab35da7adbf05b6b73cd06a16b6be" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" dependencies = [ "serde_core", ] @@ -10542,7 +10546,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.3", + "indexmap 2.11.4", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -10552,21 +10556,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.5" +version = "0.23.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad0b7ae9cfeef5605163839cb9221f453399f15cfb5c10be9885fcf56611f9" +checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" dependencies = [ - "indexmap 2.11.3", - "toml_datetime 0.7.1", + "indexmap 2.11.4", + "toml_datetime 0.7.2", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" dependencies = [ "winnow", ] @@ -10798,10 +10802,27 @@ dependencies = [ "httparse", "log", "rand 0.9.2", - "rustls 0.23.31", + "rustls 0.23.32", "rustls-pki-types", "sha1", - "thiserror 2.0.16", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "rand 0.9.2", + "sha1", + "thiserror 2.0.17", "utf-8", ] @@ -10835,9 +10856,9 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "typetag" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" +checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" dependencies = [ "erased-serde", "inventory", @@ -10848,9 +10869,9 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" +checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", @@ -11024,7 +11045,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.3", + "indexmap 2.11.4", "serde", "serde_json", "utoipa-gen", @@ -11173,9 +11194,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.102" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad224d2776649cfb4f4471124f8176e54c1cca67a88108e30a0cd98b90e7ad3" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", @@ -11186,9 +11207,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.102" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1364104bdcd3c03f22b16a3b1c9620891469f5e9f09bc38b2db121e593e732" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", @@ -11200,9 +11221,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.52" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0a08ecf5d99d5604a6666a70b3cde6ab7cc6142f5e641a8ef48fc744ce8854" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", @@ -11213,9 +11234,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.102" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d7ab4ca3e367bb1ed84ddbd83cc6e41e115f8337ed047239578210214e36c76" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11223,9 +11244,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.102" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a518014843a19e2dbbd0ed5dfb6b99b23fb886b14e6192a00803a3e14c552b0" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", @@ -11236,9 +11257,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.102" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255eb0aa4cc2eea3662a00c2bbd66e93911b7361d5e0fcd62385acfd7e15dcee" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" dependencies = [ "unicode-ident", ] @@ -11287,9 +11308,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.79" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50462a022f46851b81d5441d1a6f5bac0b21a1d72d64bd4906fbdd4bf7230ec7" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -11383,7 +11404,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.0", + "windows-sys 0.48.0", ] [[package]] @@ -11394,66 +11415,30 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections 0.2.0", - "windows-core 0.61.2", - "windows-future 0.2.1", - "windows-link 0.1.3", - "windows-numerics 0.2.0", -] - -[[package]] -name = "windows" -version = "0.62.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579d0e6970fd5250aa29aba5994052385ff55cf7b28a059e484bb79ea842e42" -dependencies = [ - "windows-collections 0.3.0", - "windows-core 0.62.0", - "windows-future 0.3.0", - "windows-link 0.2.0", - "windows-numerics 0.3.0", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" +version = "0.62.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +checksum = "49e6c4a1f363c8210c6f77ba24f645c61c6fb941eccf013da691f7e09515b8ac" dependencies = [ - "windows-core 0.61.2", + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90dd7a7b86859ec4cdf864658b311545ef19dbcf17a672b52ab7cefe80c336f" +checksum = "123e712f464a8a60ce1a13f4c446d2d43ab06464cb5842ff68f5c71b6fb7852e" dependencies = [ - "windows-core 0.62.0", + "windows-core", ] [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - -[[package]] -name = "windows-core" -version = "0.62.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" dependencies = [ "windows-implement", "windows-interface", @@ -11464,31 +11449,20 @@ dependencies = [ [[package]] name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading 0.1.0", -] - -[[package]] -name = "windows-future" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2194dee901458cb79e1148a4e9aac2b164cc95fa431891e7b296ff0b2f1d8a6" +checksum = "68f3db6b24b120200d649cd4811b4947188ed3a8d2626f7075146c5d178a9a4a" dependencies = [ - "windows-core 0.62.0", + "windows-core", "windows-link 0.2.0", - "windows-threading 0.2.0", + "windows-threading", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" dependencies = [ "proc-macro2", "quote", @@ -11497,9 +11471,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" dependencies = [ "proc-macro2", "quote", @@ -11518,23 +11492,13 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - [[package]] name = "windows-numerics" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ce3498fe0aba81e62e477408383196b4b0363db5e0c27646f932676283b43d8" dependencies = [ - "windows-core 0.62.0", + "windows-core", "windows-link 0.2.0", ] @@ -11618,14 +11582,14 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.4", ] [[package]] name = "windows-sys" -version = "0.61.0" +version = "0.61.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" dependencies = [ "windows-link 0.2.0", ] @@ -11663,11 +11627,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" dependencies = [ - "windows-link 0.1.3", + "windows-link 0.2.0", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -11678,15 +11642,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - [[package]] name = "windows-threading" version = "0.2.0" @@ -11891,7 +11846,7 @@ dependencies = [ "pharos", "rustc_version 0.4.1", "send_wrapper", - "thiserror 2.0.16", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -12020,9 +11975,9 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -12082,9 +12037,9 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.3", + "indexmap 2.11.4", "memchr", - "thiserror 2.0.16", + "thiserror 2.0.17", "zopfli", ] @@ -12097,7 +12052,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.11.3", + "indexmap 2.11.4", "memchr", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 919afa551..5f22d43b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { path = "/home/homepup/repos/shrink_bitvm2/shrink_bitvm2" } +shrink_bitvm2 = { path = "/home/etu/shrink_bitvm2/shrink_bitvm2" } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -107,5 +107,13 @@ lto = true # codegen-units = 1 [patch.crates-io] -risc0-ethereum-contracts = { path = "/home/homepup/repos/risc0-ethereum/contracts" } -risc0-aggregation = { path = "/home/homepup/repos/risc0-ethereum/crates/aggregation" } \ No newline at end of file +risc0-ethereum-contracts = { path = "/home/etu/risc0-ethereum/contracts" } +risc0-aggregation = { path = "/home/etu/risc0-ethereum/crates/aggregation" } + +risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } diff --git a/bento/Cargo.lock b/bento/Cargo.lock index 32645c52e..b45f35db1 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -222,6 +222,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -254,6 +255,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -312,6 +314,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -396,6 +399,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -411,6 +415,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -474,6 +479,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -527,6 +533,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1755,6 +1762,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -5634,16 +5650,27 @@ name = "shrink_bitvm2" version = "0.1.0" dependencies = [ "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", "blake3", "borsh", + "circom-witnesscalc", + "crypto-bigint 0.5.2", "hex", + "num-bigint 0.4.6", + "num-traits", "risc0-groth16", + "risc0-groth16-sys", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", "sha2", "tempfile", "tracing", + "wtns-file", ] [[package]] diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 134434944..a677b648f 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { path = "/home/homepup/repos/shrink_bitvm2/shrink_bitvm2" } +shrink_bitvm2 = { path = "/home/etu/shrink_bitvm2/shrink_bitvm2" } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 4653b6ccb..2fd9860fa 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -55,7 +55,7 @@ uuid = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" -shrink_bitvm2 = { workspace = true } +shrink_bitvm2 = { workspace = true, optional = true } [dev-dependencies] alloy = { workspace = true, features = ["node-bindings"] } @@ -87,3 +87,4 @@ test-log = { workspace = true } [features] test-utils = ["dep:boundless-test-utils"] shrink_bitvm2 = ["shrink_bitvm2/prove"] +cuda = ["shrink_bitvm2?/cuda"] diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index a6391af93..1553fa742 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -2731,17 +2731,7 @@ pub(crate) mod tests { ) -> Result>, ProverError> { self.default_prover.get_compressed_receipt(proof_id).await } - async fn shrink_bitvm2( - &self, - _proof_id: &str, - _work_dir: Option, - ) -> Result { - todo!("Shrink BitVM is not implemented yet"); - } - async fn get_shrink_bitvm2_receipt( - &self, - _proof_id: &str, - ) -> Result>, ProverError> { + async fn shrink_bitvm2(&self, _proof_id: &str) -> Result { todo!("Shrink BitVM is not implemented yet"); } } diff --git a/crates/broker/src/provers/bonsai.rs b/crates/broker/src/provers/bonsai.rs index c45727962..2b230ccdb 100644 --- a/crates/broker/src/provers/bonsai.rs +++ b/crates/broker/src/provers/bonsai.rs @@ -564,11 +564,7 @@ impl Prover for Bonsai { Ok(Some(receipt_buf)) } - async fn shrink_bitvm2( - &self, - proof_id: &str, - _work_dir: Option, - ) -> Result { + async fn shrink_bitvm2(&self, proof_id: &str) -> Result { let proof_id = self .retry( || async { Ok(self.client.shrink_bitvm2(proof_id.into()).await?) }, @@ -585,29 +581,6 @@ impl Prover for Bonsai { Ok(proof_id.uuid) } - - async fn get_shrink_bitvm2_receipt( - &self, - proof_id: &str, - ) -> Result>, ProverError> { - let snark_id = ShrinkBitvm2Id { uuid: proof_id.into() }; - let status = self - .retry( - || async { Ok(snark_id.status(&self.client).await?) }, - "get status of bitvm2 snark", - ) - .await?; - - let Some(output) = status.output else { return Ok(None) }; - let receipt_buf = self - .retry( - || async { Ok(self.client.download(&output).await?) }, - "download bitvm2 snark output", - ) - .await?; - - Ok(Some(receipt_buf)) - } } async fn create_pg_pool() -> Result { diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 5c7231fd8..b59272756 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -371,7 +371,8 @@ impl Prover for DefaultProver { .map(|receipt| bincode::serialize(receipt).unwrap()) .unwrap_or_default(); - let mut proofs = self.state.proofs.write().await; + let mut proofs: tokio::sync::RwLockWriteGuard<'_, HashMap> = + self.state.proofs.write().await; let proof = proofs.get_mut(&proof_id).unwrap(); match compress_result { Ok(_) => { @@ -397,11 +398,7 @@ impl Prover for DefaultProver { Ok(proof_data.compressed_receipt.as_ref().cloned()) } - async fn shrink_bitvm2( - &self, - proof_id: &str, - work_dir: Option, - ) -> Result { + async fn shrink_bitvm2(&self, proof_id: &str) -> Result { tracing::info!("Compressing proof Shrink bitvm2 {proof_id}"); let receipt = self .get_receipt(proof_id) @@ -417,22 +414,21 @@ impl Prover for DefaultProver { self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); tracing::debug!("shrink bitvm2 identity_p254 for proof {proof_id}"); - let succinct_receipt = receipt.inner.succinct().unwrap().clone(); - let compress_result = tokio::task::spawn_blocking(move || { + let compress_result: Result = tokio::task::spawn_blocking(move || { #[cfg(feature = "shrink_bitvm2")] { - tracing::warn!("r0vm does not currently support shrink_bitvm2, compressing will be done locally"); - shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes) + tracing::debug!("r0vm does not currently support shrink_bitvm2, compressing will be done locally"); + let succinct_receipt = receipt.inner.succinct().unwrap().clone(); + shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes).map_err(|e| ProverError::UnexpectedError(anyhow!(e))) } #[cfg(not(feature = "shrink_bitvm2"))] - Err(ProverError::UnexpectedError(anyhow!( + return Err(ProverError::UnexpectedError(anyhow!( "shrink_bitvm2 feature not enabled" - ))) + ))); }) .await - .unwrap() - .map_err(ProverError::from); + .unwrap(); let compressed_bytes = compress_result .as_ref() @@ -456,16 +452,6 @@ impl Prover for DefaultProver { } } } - async fn get_shrink_bitvm2_receipt( - &self, - proof_id: &str, - ) -> Result>, ProverError> { - let proofs = self.state.proofs.read().await; - let proof_data = proofs - .get(proof_id) - .ok_or_else(|| ProverError::NotFound(format!("proof {proof_id}")))?; - Ok(proof_data.compressed_receipt.as_ref().cloned()) - } } #[cfg(test)] @@ -479,10 +465,7 @@ mod tests { sha::{Digest, Digestible}, Groth16Seal, }; - use shrink_bitvm2::{ - // from_seal, get_ark_verifying_key, - ShrinkBitvm2ReceiptClaim, - }; + use shrink_bitvm2::{verify::verify_proof, ShrinkBitvm2ReceiptClaim}; use tempfile::tempdir; #[test] @@ -600,7 +583,6 @@ mod tests { #[test] async fn test_shrink_bitvm2() { - let work_dir = tempdir().expect("Failed to create temp dir"); let prover = DefaultProver::new(); // Upload test data @@ -613,8 +595,7 @@ mod tests { let ProofResult { id: stark_id, .. } = prover.prove_and_monitor_stark(&image_id.to_string(), &input_id, vec![]).await.unwrap(); - let snark_id = - prover.shrink_bitvm2(&stark_id, Some(work_dir.path().to_path_buf())).await.unwrap(); + let snark_id = prover.shrink_bitvm2(&stark_id).await.unwrap(); // Fetch the compressed receipt let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); @@ -628,32 +609,7 @@ mod tests { let final_output_bytes = ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest(); - - // let public_input_scalar = - // ark_bn254::Fr::from_be_bytes_mod_order(final_output_bytes.as_bytes()); - - // // let public_input_scalar_str = public_input_scalar.to_string(); - // // let public_input_scalar = - // // risc0_groth16::PublicInputsJson { values: vec![public_input_scalar_str] } - // // .to_scalar() - // // .unwrap(); - // println!("Verify Start"); - // let ark_vk = get_ark_verifying_key(); - // let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); - // let res = ark_groth16::Groth16::::verify_proof( - // &ark_pvk, - // &from_seal(&groth16_receipt.seal), - // &[public_input_scalar], - // ) - // .unwrap(); - - // println!("Shrink BitVM2 Verify result: {:?}", res); - - // let verifying_key = shrink_bitvm2::get_r0_verifying_key(); - - // let v = risc0_groth16::Verifier::new(&groth16_seal, &public_input_scalar, &verifying_key) - // .unwrap(); - // println!("R0 Verify result: {:?}", v.verify().is_ok()); - // assert!(v.verify().is_ok(), "R0 verification failed"); + verify_proof(&groth16_seal, final_output_bytes.as_bytes()) + .expect("Failed to verify Shrink BitVM2 receipt"); } } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index 68e9cf750..3a2ea2245 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -140,15 +140,7 @@ pub trait Prover { async fn get_journal(&self, proof_id: &str) -> Result>, ProverError>; async fn compress(&self, proof_id: &str) -> Result; async fn get_compressed_receipt(&self, proof_id: &str) -> Result>, ProverError>; - async fn shrink_bitvm2( - &self, - proof_id: &str, - work_dir: Option, - ) -> Result; - async fn get_shrink_bitvm2_receipt( - &self, - proof_id: &str, - ) -> Result>, ProverError>; + async fn shrink_bitvm2(&self, proof_id: &str) -> Result; } pub type ProverObj = Arc; diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index 4ca4f43b5..bf0cd16cd 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -115,7 +115,7 @@ impl ProvingService { .context("Failed to compress proof")?, CompressionType::ShrinkBitvm2 => self .prover - .shrink_bitvm2(stark_proof_id, None) + .shrink_bitvm2(stark_proof_id) .await .context("Failed to shrink proof")?, CompressionType::None => unreachable!("Compression type should not be None here"), diff --git a/remappings.txt b/remappings.txt index 47a9ff6b3..ffcd0d596 100644 --- a/remappings.txt +++ b/remappings.txt @@ -3,7 +3,7 @@ openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ forge-std/=lib/forge-std/src/ -risc0/=/home/homepup/repos/risc0-ethereum/contracts/src/ +risc0/=/home/etu/risc0-ethereum/contracts/src/ steel/=lib/steel/contracts/src/ solmate/=lib/solmate/src zkc/=lib/zkc/src/ From c8e7884c294a041b9aa5d1938c2f43de3166ac29 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 1 Oct 2025 14:40:51 -0400 Subject: [PATCH 08/86] fix test and lint --- Cargo.lock | 6 ----- crates/broker/Cargo.toml | 13 ++++------- crates/broker/src/order_picker.rs | 2 +- crates/broker/src/provers/bonsai.rs | 2 +- crates/broker/src/provers/default.rs | 33 +++++++++------------------- crates/broker/src/provers/mod.rs | 2 +- 6 files changed, 17 insertions(+), 41 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f55995af7..e31aa69fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2898,18 +2898,12 @@ dependencies = [ "alloy", "alloy-chains", "anyhow", - "ark-bn254", - "ark-ec", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", "async-channel 2.5.0", "async-trait", "aws-config", "aws-sdk-s3", "aws-smithy-http-client", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 2fd9860fa..bd6d2457b 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -55,7 +55,7 @@ uuid = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" -shrink_bitvm2 = { workspace = true, optional = true } +shrink_bitvm2 = { workspace = true } [dev-dependencies] alloy = { workspace = true, features = ["node-bindings"] } @@ -76,15 +76,10 @@ tokio = { workspace = true, features = ["full"] } tracing-test = { workspace = true } risc0-groth16 = { workspace = true, features = ["prove"] } -ark-bn254 = "0.5.0" -ark-ff = "0.5.0" -ark-groth16 = { version = "0.5.0" } -ark-serialize = "0.5.0" -ark-ec = "0.5.0" -blake3 = { version = "1.5.0" } test-log = { workspace = true } [features] +default = ["cuda"] test-utils = ["dep:boundless-test-utils"] -shrink_bitvm2 = ["shrink_bitvm2/prove"] -cuda = ["shrink_bitvm2?/cuda"] +prove = ["shrink_bitvm2/prove"] +cuda = ["shrink_bitvm2/cuda"] diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 1553fa742..40e8dcb32 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -1348,7 +1348,7 @@ fn calculate_max_cycles_for_time(prove_khz: u64, time_seconds: u64) -> u64 { #[cfg(test)] pub(crate) mod tests { - use std::{path::PathBuf, time::Duration}; + use std::time::Duration; use super::*; use crate::{ diff --git a/crates/broker/src/provers/bonsai.rs b/crates/broker/src/provers/bonsai.rs index 2b230ccdb..9a6955c24 100644 --- a/crates/broker/src/provers/bonsai.rs +++ b/crates/broker/src/provers/bonsai.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{future::Future, path::PathBuf}; +use std::future::Future; use async_trait::async_trait; use bonsai_sdk::{ diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index b59272756..2117ae089 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{borrow::Borrow, collections::HashMap, path::PathBuf, sync::Arc}; +use std::{borrow::Borrow, collections::HashMap, sync::Arc}; use crate::config::ProverConf; use crate::provers::{ExecutorResp, ProofResult, Prover, ProverError}; @@ -22,7 +22,6 @@ use risc0_zkvm::{ default_executor, default_prover, ExecutorEnv, ProveInfo, ProverOpts, Receipt, SessionInfo, VERSION, }; -use tempfile::tempdir; use tokio::sync::RwLock; use uuid::Uuid; @@ -416,16 +415,12 @@ impl Prover for DefaultProver { tracing::debug!("shrink bitvm2 identity_p254 for proof {proof_id}"); let compress_result: Result = tokio::task::spawn_blocking(move || { - #[cfg(feature = "shrink_bitvm2")] - { - tracing::debug!("r0vm does not currently support shrink_bitvm2, compressing will be done locally"); - let succinct_receipt = receipt.inner.succinct().unwrap().clone(); - shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes).map_err(|e| ProverError::UnexpectedError(anyhow!(e))) - } - #[cfg(not(feature = "shrink_bitvm2"))] - return Err(ProverError::UnexpectedError(anyhow!( - "shrink_bitvm2 feature not enabled" - ))); + tracing::debug!( + "r0vm does not currently support shrink_bitvm2, compressing will be done locally" + ); + let succinct_receipt = receipt.inner.succinct().unwrap().clone(); + shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes) + .map_err(|e| ProverError::UnexpectedError(anyhow!(e))) }) .await .unwrap(); @@ -460,13 +455,8 @@ mod tests { use boundless_test_utils::guests::{ECHO_ELF, ECHO_ID}; use tokio::test; - use ark_ff::PrimeField; - use risc0_zkvm::{ - sha::{Digest, Digestible}, - Groth16Seal, - }; - use shrink_bitvm2::{verify::verify_proof, ShrinkBitvm2ReceiptClaim}; - use tempfile::tempdir; + use risc0_zkvm::{sha::Digest, Groth16Seal}; + use shrink_bitvm2::verify::verify_proof; #[test] async fn test_upload_input_and_image() { @@ -584,7 +574,6 @@ mod tests { #[test] async fn test_shrink_bitvm2() { let prover = DefaultProver::new(); - // Upload test data let input_data = [255u8; 32].to_vec(); // Example input data let input_id = prover.upload_input(input_data.clone()).await.unwrap(); @@ -607,9 +596,7 @@ mod tests { let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) .expect("Failed to create Groth16 seal from receipt"); - let final_output_bytes = - ShrinkBitvm2ReceiptClaim::ok(image_id, stark_receipt.journal.bytes).digest(); - verify_proof(&groth16_seal, final_output_bytes.as_bytes()) + verify_proof(&groth16_seal, image_id, stark_receipt.journal.bytes) .expect("Failed to verify Shrink BitVM2 receipt"); } } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index 3a2ea2245..3cf80f8c3 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{path::PathBuf, sync::Arc}; +use std::sync::Arc; use async_trait::async_trait; use bonsai_sdk::SdkErr; From 9ec53f87ff9b369ae4283abf80f65d4cd818da2a Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 1 Oct 2025 17:32:28 -0400 Subject: [PATCH 09/86] some tests --- Cargo.lock | 18 ++++-- Cargo.toml | 6 +- bento/Cargo.lock | 2 + bento/Cargo.toml | 11 +++- bento/crates/workflow/Cargo.toml | 2 +- bento/crates/workflow/src/tasks/snark.rs | 4 +- crates/boundless-cli/Cargo.toml | 7 ++- crates/boundless-cli/src/bin/boundless.rs | 1 + crates/boundless-cli/src/lib.rs | 77 ++++++++++++++++++++++- 9 files changed, 111 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e31aa69fb..7ff1b8acf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2660,8 +2660,10 @@ dependencies = [ "serde_json", "serde_yaml 0.9.34+deprecated", "shadow-rs", + "shrink_bitvm2", "sqlx", "tempfile", + "test-log", "tokio", "tracing", "tracing-subscriber 0.3.20", @@ -5434,7 +5436,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.0", "system-configuration", "tokio", "tower-service", @@ -6074,7 +6076,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.53.4", ] [[package]] @@ -6829,7 +6831,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 1.1.3", + "proc-macro-crate 3.4.0", "proc-macro2", "quote", "syn 2.0.106", @@ -7684,7 +7686,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.32", - "socket2 0.5.10", + "socket2 0.6.0", "thiserror 2.0.17", "tokio", "tracing", @@ -7721,7 +7723,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.0", "tracing", "windows-sys 0.60.2", ] @@ -8294,6 +8296,7 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a022764453253ba28aab69dee4de60c0245c915e#a022764453253ba28aab69dee4de60c0245c915e" dependencies = [ "alloy-primitives 1.4.0", "alloy-sol-types", @@ -8517,6 +8520,7 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a022764453253ba28aab69dee4de60c0245c915e#a022764453253ba28aab69dee4de60c0245c915e" dependencies = [ "alloy", "alloy-primitives 1.4.0", @@ -9594,6 +9598,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=a1166bda124e53cdfa8a7b78eb26423c9ae49e26#a1166bda124e53cdfa8a7b78eb26423c9ae49e26" dependencies = [ "anyhow", "ark-bn254", @@ -9607,6 +9612,7 @@ dependencies = [ "hex", "num-bigint 0.4.6", "num-traits", + "risc0-circuit-recursion", "risc0-groth16", "risc0-groth16-sys", "risc0-zkp", @@ -11398,7 +11404,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.1", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5f22d43b9..c198e0044 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { path = "/home/etu/shrink_bitvm2/shrink_bitvm2" } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "a1166bda124e53cdfa8a7b78eb26423c9ae49e26", default-features = false } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -107,8 +107,8 @@ lto = true # codegen-units = 1 [patch.crates-io] -risc0-ethereum-contracts = { path = "/home/etu/risc0-ethereum/contracts" } -risc0-aggregation = { path = "/home/etu/risc0-ethereum/crates/aggregation" } +risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } +risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } diff --git a/bento/Cargo.lock b/bento/Cargo.lock index b45f35db1..bc0730bb8 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -5648,6 +5648,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=a1166bda124e53cdfa8a7b78eb26423c9ae49e26#a1166bda124e53cdfa8a7b78eb26423c9ae49e26" dependencies = [ "anyhow", "ark-bn254", @@ -5661,6 +5662,7 @@ dependencies = [ "hex", "num-bigint 0.4.6", "num-traits", + "risc0-circuit-recursion", "risc0-groth16", "risc0-groth16-sys", "risc0-zkp", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index a677b648f..9626f2b8a 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { path = "/home/etu/shrink_bitvm2/shrink_bitvm2" } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "a1166bda124e53cdfa8a7b78eb26423c9ae49e26", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" @@ -53,3 +53,12 @@ opt-level = 3 [profile.release] debug = 1 lto = true + +[patch.crates-io] +risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } diff --git a/bento/crates/workflow/Cargo.toml b/bento/crates/workflow/Cargo.toml index 8c35de708..0d283c410 100644 --- a/bento/crates/workflow/Cargo.toml +++ b/bento/crates/workflow/Cargo.toml @@ -16,7 +16,7 @@ path = "src/bin/agent.rs" [features] default = [] -cuda = ["risc0-zkvm/cuda"] +cuda = ["risc0-zkvm/cuda", "shrink_bitvm2/cuda"] [dependencies] anyhow = { workspace = true } diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 92bb483fd..ec019450c 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -33,7 +33,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .compress(&ProverOpts::groth16(), &receipt) .context("groth16 compress failed")?, CompressType::ShrinkBitvm2 => { - // First we compress a succinct receipt + // First we compress a succinct receipt just to make sure we have a succinct receipt let succinct_receipt = agent .prover .as_ref() @@ -48,7 +48,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .identity_p254(succinct_receipt) .context("failed to create p254 receipt")?; // TODO(ec2): Handle cpu vs gpu here? - let seal = shrink_bitvm2::shrink_wrap_gpu(&p254_receipt, &receipt.journal.bytes)?; + let seal = shrink_bitvm2::shrink_wrap(&p254_receipt, &receipt.journal.bytes)?; shrink_bitvm2::finalize( receipt.journal.bytes, p254_receipt.claim.clone(), diff --git a/crates/boundless-cli/Cargo.toml b/crates/boundless-cli/Cargo.toml index 2c28a1134..38e46de97 100644 --- a/crates/boundless-cli/Cargo.toml +++ b/crates/boundless-cli/Cargo.toml @@ -39,6 +39,7 @@ serde = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } shadow-rs = { version = "1.1", default-features = false } +shrink_bitvm2 = { workspace = true } sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } tokio = { workspace = true, features = ["rt-multi-thread"] } tracing = { workspace = true } @@ -62,9 +63,9 @@ rand = { workspace = true } sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } tempfile = { workspace = true } tracing-test = { workspace = true } - +test-log = { workspace = true } [features] # Enables the prove feature on risc0-zkvm to build the prover directly into this CLI. -prove = ["risc0-zkvm/prove"] +prove = ["risc0-zkvm/prove", "shrink_bitvm2/prove"] # Enables the cuda feature on risc0-zkvm to build the prover directly into this CLI, with CUDA support. -cuda = ["prove", "risc0-zkvm/cuda"] +cuda = ["prove", "risc0-zkvm/cuda", "shrink_bitvm2/cuda"] diff --git a/crates/boundless-cli/src/bin/boundless.rs b/crates/boundless-cli/src/bin/boundless.rs index 887cbc2a2..8b8d3a5f3 100644 --- a/crates/boundless-cli/src/bin/boundless.rs +++ b/crates/boundless-cli/src/bin/boundless.rs @@ -1096,6 +1096,7 @@ async fn submit_offer(client: StandardClient, args: &SubmitOfferArgs) -> Result< // TODO(risc0-ethereum/#597): This needs to be kept up to date with releases of // risc0-ethereum. Add a Selector::inclusion_latest() function to risc0-ethereum and use it // here. + ProofType::ShrinkBitvm2 => requirements.selector(Selector::shrink_bitvm2_latest() as u32), ProofType::Inclusion => requirements.selector(Selector::set_inclusion_latest() as u32), ProofType::Groth16 => requirements.selector(Selector::groth16_latest() as u32), ProofType::Any => &mut requirements, diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 0b3cbca04..77fa81d5a 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -45,7 +45,7 @@ use boundless_market::{ Fulfillment as BoundlessFulfillment, FulfillmentData, PredicateType, RequestInputType, }, input::GuestEnv, - selector::{is_groth16_selector, SupportedSelectors}, + selector::{is_groth16_selector, is_shrink_bitvm2_selector, SupportedSelectors}, storage::fetch_url, ProofRequest, }; @@ -180,6 +180,21 @@ impl DefaultProver { .await? } + pub(crate) async fn shrink_bitvm2(&self, succinct_receipt: &Receipt) -> Result { + let prover = default_prover(); + if is_dev_mode() { + return Ok(succinct_receipt.clone()); + } + if prover.get_name() == "bonsai" { + return shrink_bitvm2_with_bonsai(succinct_receipt).await; + } + let receipt = succinct_receipt.clone(); + tokio::task::spawn_blocking(move || { + shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, &receipt.journal.bytes) + }) + .await? + } + // Finalizes the set builder. pub(crate) async fn finalize( &self, @@ -312,6 +327,9 @@ impl DefaultProver { let order_seal = if is_groth16_selector(req.requirements.selector) { let receipt = self.compress(&receipts[i]).await?; encode_seal(&receipt)? + } else if is_shrink_bitvm2_selector(req.requirements.selector) { + let receipt = self.shrink_bitvm2(&receipts[i]).await?; + encode_seal(&receipt)? } else { order_inclusion_receipt.abi_encode_seal()? }; @@ -376,6 +394,33 @@ async fn compress_with_bonsai(succinct_receipt: &Receipt) -> Result { } } +async fn shrink_bitvm2_with_bonsai(succinct_receipt: &Receipt) -> Result { + let client = BonsaiClient::from_env(risc0_zkvm::VERSION)?; + let encoded_receipt = bincode::serialize(succinct_receipt)?; + let receipt_id = client.upload_receipt(encoded_receipt).await?; + let snark_id = client.shrink_bitvm2(receipt_id).await?; + loop { + let status = snark_id.status(&client).await?; + match status.status.as_ref() { + "RUNNING" => { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + continue; + } + "SUCCEEDED" => { + let receipt_buf = client.download(&status.output.unwrap()).await?; + let snark_receipt: Receipt = bincode::deserialize(&receipt_buf)?; + return Ok(snark_receipt); + } + status_code => { + let err_msg = status.error_msg.unwrap_or_default(); + return Err(anyhow::anyhow!( + "snark proving failed with status {status_code}: {err_msg}" + )); + } + } + } +} + // Returns `true` if the dev mode environment variable is enabled. fn is_dev_mode() -> bool { std::env::var("RISC0_DEV_MODE") @@ -398,6 +443,7 @@ mod tests { }; use boundless_test_utils::guests::{ASSESSOR_GUEST_ELF, ECHO_ID, ECHO_PATH, SET_BUILDER_ELF}; use risc0_ethereum_contracts::selector::Selector; + use shrink_bitvm2::ShrinkBitvm2ReceiptClaim; async fn setup_proving_request_and_signature( signer: &PrivateKeySigner, @@ -455,4 +501,33 @@ mod tests { prover.fulfill(&[(request, signature.as_bytes().into())]).await.unwrap(); } + + #[tokio::test] + #[tracing_test::traced_test] + async fn test_fulfill_shrink_bitvm2_selector() { + let input = [255u8; 32].to_vec(); // Example output data + let blake3_claim_digest = + ShrinkBitvm2ReceiptClaim::ok(Digest::from(ECHO_ID), input.clone()).digest(); + let signer = PrivateKeySigner::random(); + let request = ProofRequest::new( + RequestId::new(signer.address(), 0), + Requirements::new(Predicate::claim_digest_match(blake3_claim_digest)) + .with_selector(FixedBytes::from(Selector::shrink_bitvm2_latest() as u32)), + format!("file://{ECHO_PATH}"), + RequestInput::builder().write_slice(&input).build_inline().unwrap(), + Offer::default(), + ); + + let signature = request.sign_request(&signer, Address::ZERO, 1).await.unwrap(); + let domain = eip712_domain(Address::ZERO, 1); + let prover = DefaultProver::new( + SET_BUILDER_ELF.to_vec(), + ASSESSOR_GUEST_ELF.to_vec(), + Address::ZERO, + domain, + ) + .expect("failed to create prover"); + + prover.fulfill(&[(request, signature.as_bytes().into())]).await.unwrap(); + } } From 153e9840952b64c337d6dfb6013ea5288082f8bc Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 1 Oct 2025 17:37:12 -0400 Subject: [PATCH 10/86] points risc0-ethereum contracts submodule to remote --- lib/risc0-ethereum | 2 +- remappings.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/risc0-ethereum b/lib/risc0-ethereum index 365e7b2db..a02276445 160000 --- a/lib/risc0-ethereum +++ b/lib/risc0-ethereum @@ -1 +1 @@ -Subproject commit 365e7b2db4f620fa256580c27558d2623362b9ae +Subproject commit a022764453253ba28aab69dee4de60c0245c915e diff --git a/remappings.txt b/remappings.txt index ffcd0d596..0fc8524fe 100644 --- a/remappings.txt +++ b/remappings.txt @@ -3,7 +3,7 @@ openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ forge-std/=lib/forge-std/src/ -risc0/=/home/etu/risc0-ethereum/contracts/src/ +risc0/=lib/risc0-ethereum/contracts/src/ steel/=lib/steel/contracts/src/ solmate/=lib/solmate/src zkc/=lib/zkc/src/ From 385ce427dc952e5cdbbe8404843936d412bc6556 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 1 Oct 2025 19:42:19 -0400 Subject: [PATCH 11/86] docker files build --- Cargo.lock | 48 ++++++++++++++--------------- Cargo.toml | 16 +++++----- bento/Cargo.lock | 58 +++++++++++++----------------------- bento/Cargo.toml | 17 ++++++----- dockerfiles/agent.dockerfile | 32 +++++++++++++++----- 5 files changed, 85 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ff1b8acf..da0f91619 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2546,7 +2546,7 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "duplicate", "maybe-async", @@ -8312,7 +8312,7 @@ dependencies = [ [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "borsh", @@ -8332,8 +8332,8 @@ dependencies = [ [[package]] name = "risc0-build" -version = "3.0.4" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +version = "3.0.3" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "cargo_metadata", @@ -8375,7 +8375,7 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "directories", @@ -8388,7 +8388,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bytemuck", @@ -8409,7 +8409,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "cust", @@ -8424,7 +8424,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bytemuck", @@ -8449,7 +8449,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "glob", "risc0-build-kernel", @@ -8461,7 +8461,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8494,7 +8494,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "cust", @@ -8509,7 +8509,7 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "bytemuck", "nvtx", @@ -8538,7 +8538,7 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "ark-bn254", @@ -8567,7 +8567,7 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blst", @@ -8624,7 +8624,7 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blst", @@ -8636,7 +8636,7 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blake2", @@ -8676,13 +8676,13 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "3.0.4" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +version = "3.0.3" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a)", + "bonsai-sdk 1.4.1 (git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839)", "borsh", "bytemuck", "bytes", @@ -8725,8 +8725,8 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.2.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +version = "2.2.0" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "bytemuck", "cfg-if", @@ -9080,7 +9080,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "git+https://github.com/ec2/risc0.git?rev=5701800c54e1e3e9ba5fae95f901050b17eb296a#5701800c54e1e3e9ba5fae95f901050b17eb296a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "hex", "rsa", @@ -9598,7 +9598,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=a1166bda124e53cdfa8a7b78eb26423c9ae49e26#a1166bda124e53cdfa8a7b78eb26423c9ae49e26" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=bd2583c4eed80fa17fea2c79669e8a06e829c854#bd2583c4eed80fa17fea2c79669e8a06e829c854" dependencies = [ "anyhow", "ark-bn254", diff --git a/Cargo.toml b/Cargo.toml index c198e0044..4a04029b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "a1166bda124e53cdfa8a7b78eb26423c9ae49e26", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "bd2583c4eed80fa17fea2c79669e8a06e829c854", default-features = false } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -110,10 +110,10 @@ lto = true risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } -risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } diff --git a/bento/Cargo.lock b/bento/Cargo.lock index bc0730bb8..d4c05834c 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -4668,8 +4668,7 @@ checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "borsh", @@ -4690,8 +4689,7 @@ dependencies = [ [[package]] name = "risc0-build" version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "cargo_metadata", @@ -4714,8 +4712,7 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "directories", @@ -4728,8 +4725,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bytemuck", @@ -4750,8 +4746,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "cust", @@ -4766,8 +4761,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bytemuck", @@ -4792,8 +4786,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "glob", "risc0-build-kernel", @@ -4805,8 +4798,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "bit-vec", @@ -4839,8 +4831,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "cc", "cust", @@ -4855,8 +4846,7 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "bytemuck", "nvtx", @@ -4867,8 +4857,7 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "ark-bn254", @@ -4897,8 +4886,7 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blst", @@ -4909,8 +4897,7 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blst", @@ -4922,8 +4909,7 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -4933,8 +4919,7 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "anyhow", "blake2", @@ -4965,8 +4950,7 @@ dependencies = [ [[package]] name = "risc0-zkvm" version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "addr2line", "anyhow", @@ -5013,9 +4997,8 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" +version = "2.2.0" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "bytemuck", "cfg-if", @@ -5332,8 +5315,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" +source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" dependencies = [ "hex", "rsa", @@ -5648,7 +5630,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=a1166bda124e53cdfa8a7b78eb26423c9ae49e26#a1166bda124e53cdfa8a7b78eb26423c9ae49e26" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=bd2583c4eed80fa17fea2c79669e8a06e829c854#bd2583c4eed80fa17fea2c79669e8a06e829c854" dependencies = [ "anyhow", "ark-bn254", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 9626f2b8a..f15dc3e19 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "a1166bda124e53cdfa8a7b78eb26423c9ae49e26", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "bd2583c4eed80fa17fea2c79669e8a06e829c854", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" @@ -55,10 +55,11 @@ debug = 1 lto = true [patch.crates-io] -risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } -risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "5701800c54e1e3e9ba5fae95f901050b17eb296a" } +risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } diff --git a/dockerfiles/agent.dockerfile b/dockerfiles/agent.dockerfile index b37fae340..1ef6303c1 100644 --- a/dockerfiles/agent.dockerfile +++ b/dockerfiles/agent.dockerfile @@ -19,7 +19,7 @@ ENV RUSTUP_HOME=/usr/local/rustup \ # Install rust and target version (should match rust-toolchain.toml for best speed) RUN curl https://sh.rustup.rs -sSf | sh -s -- -y \ && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ - && rustup install 1.88 + && rustup install 1.89 # Install protoc RUN curl -o protoc.zip -L https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip \ @@ -36,6 +36,14 @@ RUN curl -L https://risczero.com/install | bash && \ # Clean up any temporary files to reduce image size rm -rf /tmp/* /var/tmp/* +RUN cargo install cargo-chef +RUN cargo install sccache + +FROM rust-builder AS planner +WORKDIR /src/ +COPY bento . +RUN cargo chef prepare --recipe-path recipe.json + FROM rust-builder AS builder ARG NVCC_APPEND_FLAGS="\ @@ -48,21 +56,29 @@ ARG S3_CACHE_PREFIX ENV NVCC_APPEND_FLAGS=${NVCC_APPEND_FLAGS} ENV RISC0_CUDA_OPT=${CUDA_OPT_LEVEL} ENV SCCACHE_SERVER_PORT=4227 - +# Consider using if building and running on the same CPU +ENV RUSTFLAGS="-C target-cpu=native" WORKDIR /src/ -COPY . . -RUN dockerfiles/sccache-setup.sh "x86_64-unknown-linux-musl" "v0.8.2" +COPY --from=planner /src/recipe.json recipe.json +COPY dockerfiles/sccache-config.sh dockerfiles/sccache-config.sh + SHELL ["/bin/bash", "-c"] -# Consider using if building and running on the same CPU -ENV RUSTFLAGS="-C target-cpu=native" +RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ + --mount=type=cache,target=/root/.cache/sccache/,id=bento_agent_sc \ + pwd && ls && ls dockerfiles && \ + source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ + cargo chef cook --release -p workflow --features cuda --bin agent && \ + sccache --show-stats + +COPY bento . RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ --mount=type=cache,target=/root/.cache/sccache/,id=bento_agent_sc \ source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo build --manifest-path bento/Cargo.toml --release -p workflow -F cuda --bin agent && \ - cp bento/target/release/agent /src/agent && \ + cargo build --release -p workflow -F cuda --bin agent && \ + cp target/release/agent /src/agent && \ sccache --show-stats FROM ${CUDA_RUNTIME_IMG} AS runtime From 0dac7764097283d489064fcff734fe4fcd3a282c Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 3 Oct 2025 13:27:29 -0400 Subject: [PATCH 12/86] bento integration and dockerfiles --- .dockerignore | 1 + .gitmodules | 2 +- .vscode/settings.json | 17 ++-- Cargo.lock | 6 +- Cargo.toml | 6 +- bento/Cargo.lock | 2 +- bento/Cargo.toml | 2 +- bento/crates/api/src/lib.rs | 61 ++++++++++++++- bento/crates/workflow-common/src/s3.rs | 5 +- bento/crates/workflow/src/tasks/snark.rs | 34 ++++---- compose.yml | 8 +- contracts/scripts/Deploy.s.sol | 6 +- .../src/contracts/bytecode.rs | 2 +- .../src/request_builder/finalizer.rs | 9 ++- crates/broker/Cargo.toml | 1 - crates/broker/src/order_picker.rs | 17 +++- crates/broker/src/provers/bonsai.rs | 24 +++++- crates/broker/src/provers/default.rs | 7 ++ crates/broker/src/provers/mod.rs | 1 + crates/broker/src/submitter.rs | 31 +++++++- crates/test-utils/src/verifier.rs | 4 +- dockerfiles/agent.dockerfile | 1 + dockerfiles/broker.dockerfile | 9 ++- dockerfiles/rest_api.dockerfile | 31 +++++--- examples/counter/Cargo.lock | 78 ++++++++++++++++++- justfile | 4 +- lib/risc0-ethereum | 2 +- 27 files changed, 302 insertions(+), 69 deletions(-) diff --git a/.dockerignore b/.dockerignore index 49deb695b..3d879df72 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,3 +12,4 @@ scripts examples crates/**/target examples/**/target +**/target/ diff --git a/.gitmodules b/.gitmodules index cc2770486..536b5fe67 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,7 +9,7 @@ url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable [submodule "lib/risc0-ethereum"] path = lib/risc0-ethereum - url = https://github.com/risc0/risc0-ethereum + url = https://github.com/ec2/risc0-ethereum [submodule "lib/openzeppelin-foundry-upgrades"] path = lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades diff --git a/.vscode/settings.json b/.vscode/settings.json index 2b6eba61b..984bc7cfd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,13 +8,15 @@ "CARGO_TARGET_DIR": "target/analyzer" }, "rust-analyzer.check.command": "clippy", - "rust-analyzer.check.extraArgs": ["--target-dir=target/analyzer"], + "rust-analyzer.check.extraArgs": [ + "--target-dir=target/analyzer" + ], "rust-analyzer.linkedProjects": [ "./Cargo.toml", "./crates/distributor/Cargo.toml", "./bento/crates/workflow/Cargo.toml", "./crates/povw/mint-calculator/Cargo.toml", - "./crates/povw/log-updater/Cargo.toml" + "./crates/povw/log-updater/Cargo.toml", // "./crates/guest/assessor/assessor-guest/Cargo.toml", // "./crates/guest/util/echo/Cargo.toml", // "./crates/guest/util/identity/Cargo.toml", @@ -22,7 +24,10 @@ // "./examples/smart-contract-requestor/Cargo.toml", // "./examples/counter-with-callback/Cargo.toml" ], - "rust-analyzer.files.exclude": ["./lib/", "./contracts/out/"], + "rust-analyzer.files.exclude": [ + "./lib/", + "./contracts/out/" + ], "[javascript][javascriptreact][typescript][typescriptreact][github-actions-workflow][json][css]": { "editor.defaultFormatter": "biomejs.biome", "editor.codeActionsOnSave": { @@ -34,11 +39,13 @@ "biome.rename": true, "biome.enabled": true, "biome.lspBin": "documentation/node_modules/.bin/biome", - "cSpell.words": ["offchain"], + "cSpell.words": [ + "offchain" + ], "[typescript]": { "editor.defaultFormatter": "vscode.typescript-language-features" }, "[json]": { "editor.defaultFormatter": "vscode.json-language-features" } -} +} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index da0f91619..f3a01feac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8296,7 +8296,7 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a022764453253ba28aab69dee4de60c0245c915e#a022764453253ba28aab69dee4de60c0245c915e" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=2485d3a4ed6b7d0252198c1e8c08a8a63f230313#2485d3a4ed6b7d0252198c1e8c08a8a63f230313" dependencies = [ "alloy-primitives 1.4.0", "alloy-sol-types", @@ -8520,7 +8520,7 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a022764453253ba28aab69dee4de60c0245c915e#a022764453253ba28aab69dee4de60c0245c915e" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=2485d3a4ed6b7d0252198c1e8c08a8a63f230313#2485d3a4ed6b7d0252198c1e8c08a8a63f230313" dependencies = [ "alloy", "alloy-primitives 1.4.0", @@ -9598,7 +9598,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=bd2583c4eed80fa17fea2c79669e8a06e829c854#bd2583c4eed80fa17fea2c79669e8a06e829c854" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=57b0ff68672d5c0491d7e0a94681c90a00d708b7#57b0ff68672d5c0491d7e0a94681c90a00d708b7" dependencies = [ "anyhow", "ark-bn254", diff --git a/Cargo.toml b/Cargo.toml index 4a04029b1..c56881548 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "bd2583c4eed80fa17fea2c79669e8a06e829c854", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "57b0ff68672d5c0491d7e0a94681c90a00d708b7", default-features = false } async-stream = "0.3" alloy = { version = "1.0", default-features = false } @@ -107,8 +107,8 @@ lto = true # codegen-units = 1 [patch.crates-io] -risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } -risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a022764453253ba28aab69dee4de60c0245c915e" } +risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "2485d3a4ed6b7d0252198c1e8c08a8a63f230313" } +risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "2485d3a4ed6b7d0252198c1e8c08a8a63f230313" } risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } diff --git a/bento/Cargo.lock b/bento/Cargo.lock index d4c05834c..fbf3cf0b7 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -5630,7 +5630,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=bd2583c4eed80fa17fea2c79669e8a06e829c854#bd2583c4eed80fa17fea2c79669e8a06e829c854" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=57b0ff68672d5c0491d7e0a94681c90a00d708b7#57b0ff68672d5c0491d7e0a94681c90a00d708b7" dependencies = [ "anyhow", "ark-bn254", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index f15dc3e19..94bd48e51 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "bd2583c4eed80fa17fea2c79669e8a06e829c854", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "57b0ff68672d5c0491d7e0a94681c90a00d708b7", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/bento/crates/api/src/lib.rs b/bento/crates/api/src/lib.rs index 1ba4fcfde..bcfae5f35 100644 --- a/bento/crates/api/src/lib.rs +++ b/bento/crates/api/src/lib.rs @@ -28,7 +28,8 @@ use workflow_common::{ CompressType, ExecutorReq, SnarkReq as WorkflowSnarkReq, TaskType, s3::{ ELF_BUCKET_DIR, GROTH16_BUCKET_DIR, INPUT_BUCKET_DIR, PREFLIGHT_JOURNALS_BUCKET_DIR, - RECEIPT_BUCKET_DIR, S3Client, STARK_BUCKET_DIR, WORK_RECEIPTS_BUCKET_DIR, + RECEIPT_BUCKET_DIR, S3Client, SHRINK_BITVM2_BUCKET_DIR, STARK_BUCKET_DIR, + WORK_RECEIPTS_BUCKET_DIR, }, }; @@ -598,7 +599,7 @@ async fn prove_groth16( Ok(Json(CreateSessRes { uuid: job_id.to_string() })) } -const SHRINK_BITVM2_PATH: &str = "shrink_bitvm2/create"; +const SHRINK_BITVM2_START_PATH: &str = "/shrink_bitvm2/create"; async fn shrink_bitvm2( State(state): State>, ExtractApiKey(api_key): ExtractApiKey, @@ -625,10 +626,36 @@ async fn shrink_bitvm2( ) .await .context("Failed to create exec / init task")?; - Ok(Json(CreateSessRes { uuid: job_id.to_string() })) } +const SHRINK_BITVM2_STATUS_PATH: &str = "/shrink_bitvm2/status/:job_id"; +async fn shrink_bitvm2_status( + State(state): State>, + ExtractApiKey(api_key): ExtractApiKey, + Path(job_id): Path, + Host(hostname): Host, +) -> Result, AppError> { + let job_state = taskdb::get_job_state(&state.db_pool, &job_id, &api_key) + .await + .context("Failed to get job state")?; + let (error_msg, output) = match job_state { + JobState::Running => (None, None), + JobState::Done => { + (None, Some(format!("http://{hostname}/receipts/shrink_bitvm2/receipt/{job_id}"))) + } + JobState::Failed => ( + Some( + taskdb::get_job_failure(&state.db_pool, &job_id) + .await + .context("Failed to get job error message")?, + ), + None, + ), + }; + Ok(Json(SnarkStatusRes { status: job_state.to_string(), error_msg, output })) +} + const SNARK_STATUS_PATH: &str = "/snark/status/:job_id"; async fn groth16_status( State(state): State>, @@ -680,6 +707,30 @@ async fn groth16_download( Ok(receipt) } +const GET_SHRINK_BITVM2_PATH: &str = "/receipts/shrink_bitvm2/receipt/:job_id"; +async fn shrink_bitvm2_download( + State(state): State>, + Path(job_id): Path, +) -> Result, AppError> { + let receipt_key = format!("{RECEIPT_BUCKET_DIR}/{SHRINK_BITVM2_BUCKET_DIR}/{job_id}.bincode"); + if !state + .s3_client + .object_exists(&receipt_key) + .await + .context("Failed to check if object exists")? + { + return Err(AppError::ReceiptMissing(job_id.to_string())); + } + + let receipt = state + .s3_client + .read_buf_from_s3(&receipt_key) + .await + .context("Failed to read from object store")?; + + Ok(receipt) +} + const GET_WORK_RECEIPT_PATH: &str = "/work-receipts/:receipt_id"; async fn get_work_receipt( State(state): State>, @@ -836,9 +887,11 @@ pub fn app(state: Arc) -> Router { .route(RECEIPT_DOWNLOAD_PATH, get(receipt_download)) .route(GET_JOURNAL_PATH, get(preflight_journal)) .route(SNARK_START_PATH, post(prove_groth16)) - .route(SHRINK_BITVM2_PATH, post(shrink_bitvm2)) .route(SNARK_STATUS_PATH, get(groth16_status)) + .route(SHRINK_BITVM2_START_PATH, post(shrink_bitvm2)) + .route(SHRINK_BITVM2_STATUS_PATH, get(shrink_bitvm2_status)) .route(GET_GROTH16_PATH, get(groth16_download)) + .route(GET_SHRINK_BITVM2_PATH, get(shrink_bitvm2_download)) .route(GET_WORK_RECEIPT_PATH, get(get_work_receipt)) .route(LIST_WORK_RECEIPTS_PATH, get(list_work_receipts)) .with_state(state) diff --git a/bento/crates/workflow-common/src/s3.rs b/bento/crates/workflow-common/src/s3.rs index 0b689d035..8ba9c47bf 100644 --- a/bento/crates/workflow-common/src/s3.rs +++ b/bento/crates/workflow-common/src/s3.rs @@ -31,9 +31,12 @@ pub const PREFLIGHT_JOURNALS_BUCKET_DIR: &str = "preflight_journals"; /// Object store stark receipt dir pub const STARK_BUCKET_DIR: &str = "stark"; -/// Object store receipts groth15 dir +/// Object store receipts groth16 dir pub const GROTH16_BUCKET_DIR: &str = "groth16"; +/// Object store receipts shrink_bitvm2 dir +pub const SHRINK_BITVM2_BUCKET_DIR: &str = "shrink_bitvm2"; + /// Object store work receipts dir pub const WORK_RECEIPTS_BUCKET_DIR: &str = "work_receipts"; diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index ec019450c..8720d00f4 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -8,7 +8,7 @@ use anyhow::{Context as _, Result, bail}; use risc0_zkvm::{InnerReceipt, ProverOpts, Receipt}; use workflow_common::{ CompressType, SnarkReq, SnarkResp, - s3::{GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, + s3::{GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, SHRINK_BITVM2_BUCKET_DIR, STARK_BUCKET_DIR}, }; /// Converts a stark, stored in s3 to a snark @@ -24,14 +24,17 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< tracing::debug!("performing identity predicate on receipt, {job_id}"); - let snark_receipt = match req.compress_type { + let (snark_receipt, bucket_dir) = match req.compress_type { CompressType::None => bail!("Cannot convert to snark with no compression"), - CompressType::Groth16 => agent - .prover - .as_ref() - .context("Missing prover from resolve task")? - .compress(&ProverOpts::groth16(), &receipt) - .context("groth16 compress failed")?, + CompressType::Groth16 => ( + agent + .prover + .as_ref() + .context("Missing prover from resolve task")? + .compress(&ProverOpts::groth16(), &receipt) + .context("groth16 compress failed")?, + GROTH16_BUCKET_DIR, + ), CompressType::ShrinkBitvm2 => { // First we compress a succinct receipt just to make sure we have a succinct receipt let succinct_receipt = agent @@ -49,11 +52,14 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .context("failed to create p254 receipt")?; // TODO(ec2): Handle cpu vs gpu here? let seal = shrink_bitvm2::shrink_wrap(&p254_receipt, &receipt.journal.bytes)?; - shrink_bitvm2::finalize( - receipt.journal.bytes, - p254_receipt.claim.clone(), - &seal.try_into()?, - )? + ( + shrink_bitvm2::finalize( + receipt.journal.bytes, + p254_receipt.claim.clone(), + &seal.try_into()?, + )?, + SHRINK_BITVM2_BUCKET_DIR, + ) } }; @@ -61,7 +67,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< bail!("failed to create groth16 receipt"); } - let key = &format!("{RECEIPT_BUCKET_DIR}/{GROTH16_BUCKET_DIR}/{job_id}.bincode"); + let key = &format!("{RECEIPT_BUCKET_DIR}/{bucket_dir}/{job_id}.bincode"); tracing::debug!("Uploading snark receipt to S3: {key}"); agent diff --git a/compose.yml b/compose.yml index ef3b3df72..198553ec2 100644 --- a/compose.yml +++ b/compose.yml @@ -1,4 +1,4 @@ -name: bento +name: bento-dev # Anchors: x-base-environment: &base-environment DATABASE_URL: postgresql://${POSTGRES_USER:-worker}:${POSTGRES_PASSWORD:-password}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-taskdb} @@ -189,7 +189,11 @@ services: mem_limit: 4G cpus: 4 entrypoint: /app/agent -t prove --redis-ttl ${REDIS_TTL:-57600} - + volumes: + - type: bind + source: ${RISC0_BVM2_SETUP_DIR} + target: /.bitvm2 + read_only: true # comment-out if running in CPU proving mode deploy: resources: diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 7706a892f..bd7260827 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -66,13 +66,15 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { IRiscZeroSelectable selectable = IRiscZeroSelectable(address(_verifier)); bytes4 selector = selectable.SELECTOR(); verifierRouter.addVerifier(selector, _verifier); - console2.log("Added RiscZeroGroth16Verifier"); + console2.log("Added Groth16 verifier to router with selector"); + console2.logBytes4(selector); IRiscZeroVerifier _bitvm2_verifier = deployRiscZeroBitvm2Verifier(); IRiscZeroSelectable bitvm2_selectable = IRiscZeroSelectable(address(_bitvm2_verifier)); bytes4 bitvm_selector = bitvm2_selectable.SELECTOR(); verifierRouter.addVerifier(bitvm_selector, _bitvm2_verifier); - console2.log("Added BitVM2 verifier"); + console2.log("Added BitVM2 verifier to router with selector"); + console2.logBytes4(bitvm_selector); // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. diff --git a/crates/boundless-market/src/contracts/bytecode.rs b/crates/boundless-market/src/contracts/bytecode.rs index 725f6450d..7346f1dff 100644 --- a/crates/boundless-market/src/contracts/bytecode.rs +++ b/crates/boundless-market/src/contracts/bytecode.rs @@ -52,7 +52,7 @@ alloy::sol! { } alloy::sol! { - #[sol(rpc, bytecode = "6101808060405234610a4d576040816115a280380380916100208285610a51565b833981010312610a4d5780516020918201519091600883811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169084901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08190526040517f72697363305f67726f746831362e47726f74683136526563656970745665726981526d66696572506172616d657465727360901b602082810191909152905f90602e9060025afa156108e1575f5190600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b179160e06040519161030e8284610a51565b60068352601f19820136602085013760205f604051828101907f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356982527f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c60408201526040815261037f606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f516103a584610a88565b5260205f604051828101907f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa82527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb1264604082015260408152610408606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f5161042e84610a95565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108e1575f519460205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526104c8606082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a760608201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec860808201526080815261059460a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519560205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60608201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261066060a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f519760205f604051828101907f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d82527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af2260408201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4860608201527f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee60808201526080815261072c60a082610a51565b604051918291518091835e8101838152039060025afa156108e1575f5160205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108e1575f8051610140526101008190526060610120526020610160525b88518061010051101561094a575f19810190808211610936576101005190035f190190811161093657895181101561092257610160519060051b8a01015190604051916107e76101205184610a51565b6002835261016051604090369085013761080083610a88565b5261080a82610a95565b5260405161081b6101605182610a51565b5f8152601f196101605101366101605183013781519061ffff821161090a5791604051928391610140516101605184015260408301815190916101605101905f905b8082106108ec5750505092816108a994600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a51565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108e1575f5161010080516001019052610797565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085d565b506306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8b6040519661016051880195865260408801526060870152608086015260a085015260c0840152600560f81b8784015260c2835261098e60e284610a51565b60405192518091845e820191818352806101605193039060025afa156108e1575f9182519060405194610160518601938452604086015260608501526080840152600360f81b60a0840152608283526109e860a284610a51565b60405192518091845e820191818352806101605193039060025afa156108e1575f516001600160e01b0319168152604051610afc9182610aa6833960805182610689015260a05182610644015260c0518261029001525181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7457604052565b634e487b7160e01b5f52604160045260245ffd5b8051156109225760200190565b805160011015610922576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107a4565b6106b9565b610674565b61062f565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ce565b906108f9565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108dc565b810190610976565b80516101e66040848401519301519460246101c686610794565b91013581526040516343753b4d60e01b8152958694859460048601610a67565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610773565b810190610a01565b5f6101f9565b503d610220565b610ae4565b61025461017084610276946108ce565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d7576103607f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee9160206040519161038083016040526101043561034381610811565b61034f61012435610811565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356987526103c9828801947f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c865288610842565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d6103008201527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af226103208201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4861034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761076e57604052565b61073f565b90601f801991011681019081106001600160401b0382111761076e57604052565b906107a26040519283610773565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761076e57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47111561083a57565b5f805260205ff35b604051917f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa83527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb126460208401526040830190815260408360608160076107cf195a01fa1561083a57815190526020810151606083015260409160809060066107cf195a01fa1561083a57565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610914575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d7576040519161094a604084610773565b8290604081019283116100d757905b8282106109665750505090565b8135815260209182019101610959565b610100818303126100d7576040519161098e83610753565b610998818361092f565b835280605f830112156100d75760409182516109b48482610773565b8060c08301928484116100d75785809101915b8483106109e75750505060208501526109e0919061092f565b9082015290565b6020906109f4878561092f565b81520191019085906109c7565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a2a57505050565b6020806001928551815201930191019091610a1d565b905f905b60018210610a5157505050565b6020806001928551815201930191019091610a44565b919493929094610a7c83610120810197610a19565b5f604084015b60028210610aaa5750505081610aa36101009260c06107a296950190610a19565b0190610a40565b82515f90825b60028310610ace575050506020604060019201930191019091610a82565b6020806001928451815201920192019190610ab0565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] + #[sol(rpc, bytecode = "6101808060405234610a525760408161159380380380916100208285610a56565b833981010312610a5257805160209182015191600882811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169083901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08290526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa156108de575f5191600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b17915f610120526060610120526040516103106101205182610a56565b6002815261012051601f190161010081905236602083013760205f604051828101907f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356982527f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c60408201526040815261038c6101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f516103b282610a8d565b5260205f604051828101907f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa82527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb12646040820152604081526104176101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f5161043d82610a9a565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108de575f519260205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526104d96101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a7610120518201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526105a760a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519360205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b610120518201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261067560a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f604051828101907f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d82527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af2260408201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f48610120518201527f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee60808201526080815261074360a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108de575f80516101405260206101605297885b8751808b1015610947575f19810190808211610933578b90035f190190811161093357885181101561091f57610160519060051b89010151604051916107ee6101205184610a56565b60028352610160518301916101005136843761080984610a8d565b5261081383610a9a565b526040516108246101605182610a56565b5f8152601f196101605101366101605183013782519161ffff831161090757604080516101405161016051820152945185939291840191905f905b8082106108e95750505092816108ab94600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a56565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108de5760015f519901986107a5565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085f565b826306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8a60405196610160518801958652604088015261012051870152608086015260a085015260c0840152600560f81b60e084015260c2835261098e60e284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f91825190604051946101605186019384526040860152610120518501526080840152600360f81b60a0840152608283526109ea60a284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f516001600160e01b03191660e052604051610ae89081610aab8239608051816106a6015260a05181610661015260c05181610290015260e05181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7957604052565b634e487b7160e01b5f52604160045260245ffd5b80511561091f5760200190565b80516001101561091f576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107c1565b6106d6565b610691565b61064c565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ba565b906108e5565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108c8565b810190610962565b80516101e66040848401519301519460246101c6866107b1565b91013581526040516343753b4d60e01b8152958694859460048601610a53565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610790565b8101906109ed565b5f6101f9565b503d610220565b610ad0565b61025461017084610276946108ba565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d75760405190610380820160405261010435917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001831015610644576020610360927f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee947f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356987526103de828801947f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c86528861082e565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d6103008201527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af226103208201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4861034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b5f805260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761078b57604052565b61075c565b90601f801991011681019081106001600160401b0382111761078b57604052565b906107bf6040519283610790565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761078b57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b604051917f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa83527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb126460208401526040830190815260408360608160076107cf195a01fa1561064457815190526020810151606083015260409160809060066107cf195a01fa1561064457565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610900575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610936604084610790565b8290604081019283116100d757905b8282106109525750505090565b8135815260209182019101610945565b610100818303126100d7576040519161097a83610770565b610984818361091b565b835280605f830112156100d75760409182516109a08482610790565b8060c08301928484116100d75785809101915b8483106109d35750505060208501526109cc919061091b565b9082015290565b6020906109e0878561091b565b81520191019085906109b3565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a1657505050565b6020806001928551815201930191019091610a09565b905f905b60018210610a3d57505050565b6020806001928551815201930191019091610a30565b919493929094610a6883610120810197610a05565b5f604084015b60028210610a965750505081610a8f6101009260c06107bf96950190610a05565b0190610a2c565b82515f90825b60028310610aba575050506020604060019201930191019091610a6e565b6020806001928451815201920192019190610a9c565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] contract RiscZeroBitvm2Groth16Verifier { constructor(bytes32 control_root, bytes32 bn254_control_id) {} } diff --git a/crates/boundless-market/src/request_builder/finalizer.rs b/crates/boundless-market/src/request_builder/finalizer.rs index 6593a1dbf..7631ac9d1 100644 --- a/crates/boundless-market/src/request_builder/finalizer.rs +++ b/crates/boundless-market/src/request_builder/finalizer.rs @@ -17,6 +17,7 @@ use crate::{ contracts::{ FulfillmentData, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, }, + selector::is_shrink_bitvm2_selector, util::now_timestamp, }; use anyhow::{bail, Context}; @@ -134,8 +135,12 @@ impl Adapt for RequestParams { let eval = match (&self.journal, self.image_id) { (Some(journal), Some(image_id)) => { tracing::debug!("Evaluating journal and image id against predicate "); - let eval_data = - FulfillmentData::from_image_id_and_journal(image_id, journal.bytes.clone()); + let eval_data = if is_shrink_bitvm2_selector(requirements.selector) { + // It is not possible to fulfill a shrink bitvm2 request with fulfillment data + FulfillmentData::None + } else { + FulfillmentData::from_image_id_and_journal(image_id, journal.bytes.clone()) + }; predicate.eval(&eval_data).is_some() } // Do not run the check. diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index bd6d2457b..612241185 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -79,7 +79,6 @@ risc0-groth16 = { workspace = true, features = ["prove"] } test-log = { workspace = true } [features] -default = ["cuda"] test-utils = ["dep:boundless-test-utils"] prove = ["shrink_bitvm2/prove"] cuda = ["shrink_bitvm2/cuda"] diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 40e8dcb32..199e15bab 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -671,10 +671,12 @@ where // Validate the predicates: let predicate = Predicate::try_from(order.request.requirements.predicate.clone()) .map_err(|e| OrderPickerErr::RequestError(Arc::new(e.into())))?; - let eval_data = FulfillmentData::from_image_id_and_journal( - Digest::from_hex(image_id).unwrap(), - journal, - ); + let eval_data = if is_shrink_bitvm2_selector(order.request.requirements.selector) { + // TODO(ec2): comment on this + FulfillmentData::None + } else { + FulfillmentData::from_image_id_and_journal(Digest::from_hex(image_id).unwrap(), journal) + }; if predicate.eval(&eval_data).is_none() { tracing::info!("Order {order_id} predicate check failed, skipping"); return Ok(Skip); @@ -2734,6 +2736,13 @@ pub(crate) mod tests { async fn shrink_bitvm2(&self, _proof_id: &str) -> Result { todo!("Shrink BitVM is not implemented yet"); } + + async fn get_bitvm2_receipt( + &self, + _proof_id: &str, + ) -> Result, ProverError> { + todo!("Shrink BitVM is not implemented yet"); + } } #[tokio::test] diff --git a/crates/broker/src/provers/bonsai.rs b/crates/broker/src/provers/bonsai.rs index 9a6955c24..e08307021 100644 --- a/crates/broker/src/provers/bonsai.rs +++ b/crates/broker/src/provers/bonsai.rs @@ -285,7 +285,7 @@ impl StatusPoller { self.retry_counts, self.poll_sleep_ms, || async { proof_id.status(client).await }, - "get snark status", + "get shrink_bitvm2 status", ) .await; @@ -568,7 +568,7 @@ impl Prover for Bonsai { let proof_id = self .retry( || async { Ok(self.client.shrink_bitvm2(proof_id.into()).await?) }, - "create snark", + "create bitvm2", ) .await?; @@ -581,6 +581,26 @@ impl Prover for Bonsai { Ok(proof_id.uuid) } + + async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { + let snark_id = ShrinkBitvm2Id { uuid: proof_id.into() }; + let status = self + .retry( + || async { Ok(snark_id.status(&self.client).await?) }, + "get status of shrink bitvm2", + ) + .await?; + + let Some(output) = status.output else { return Ok(None) }; + let receipt_buf = self + .retry( + || async { Ok(self.client.download(&output).await?) }, + "download shrink bitvm2 output", + ) + .await?; + + Ok(Some(receipt_buf)) + } } async fn create_pg_pool() -> Result { diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 2117ae089..9b0a9cb4f 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -447,6 +447,13 @@ impl Prover for DefaultProver { } } } + async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { + let proofs = self.state.proofs.read().await; + let proof_data = proofs + .get(proof_id) + .ok_or_else(|| ProverError::NotFound(format!("shrink bitvm2 proof {proof_id}")))?; + Ok(proof_data.compressed_receipt.as_ref().cloned()) + } } #[cfg(test)] diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index 3cf80f8c3..32c2a9488 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -141,6 +141,7 @@ pub trait Prover { async fn compress(&self, proof_id: &str) -> Result; async fn get_compressed_receipt(&self, proof_id: &str) -> Result>, ProverError>; async fn shrink_bitvm2(&self, proof_id: &str) -> Result; + async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError>; } pub type ProverObj = Arc; diff --git a/crates/broker/src/submitter.rs b/crates/broker/src/submitter.rs index aa4a6b538..11e1047a7 100644 --- a/crates/broker/src/submitter.rs +++ b/crates/broker/src/submitter.rs @@ -176,6 +176,23 @@ where Ok(encoded_seal) } + async fn fetch_encode_shrink_seal(&self, bitvm2_proof_id: &str) -> Result> { + let bitvm2_receipt = self + .prover + .get_bitvm2_receipt(bitvm2_proof_id) + .await + .context("Failed to fetch BitVM2 receipt")? + .context("BitVM2 receipt missing")?; + + let bitvm2_receipt: Receipt = bincode::deserialize(&bitvm2_receipt) + .context("Failed to deserialize BitVM2 receipt")?; + + let encoded_seal = + encode_seal(&bitvm2_receipt).context("Failed to encode BitVM2 receipt seal")?; + + Ok(encoded_seal) + } + pub async fn submit_batch(&self, batch_id: usize, batch: &Batch) -> Result<(), SubmitterErr> { tracing::info!("Submitting batch {batch_id}"); @@ -299,9 +316,7 @@ where let order_claim = ReceiptClaim::ok(order_img_id, MaybePruned::Pruned(order_journal.digest())); let order_claim_digest = order_claim.digest(); - let seal = if is_groth16_selector(order_request.requirements.selector) - || is_shrink_bitvm2_selector(order_request.requirements.selector) - { + let seal = if is_groth16_selector(order_request.requirements.selector) { let compressed_proof_id = self.db.get_order_compressed_proof_id(order_id).await.context( "Failed to get order compressed proof ID from DB for submission", @@ -309,6 +324,14 @@ where self.fetch_encode_g16(&compressed_proof_id) .await .context("Failed to fetch and encode g16 proof")? + } else if is_shrink_bitvm2_selector(order_request.requirements.selector) { + let compressed_proof_id = + self.db.get_order_compressed_proof_id(order_id).await.context( + "Failed to get order compressed proof ID from DB for submission", + )?; + self.fetch_encode_shrink_seal(&compressed_proof_id) + .await + .context("Failed to fetch and encode bitvm2 proof")? } else { let order_claim_index = aggregation_state .claim_digests @@ -374,7 +397,7 @@ where }; if let Err(err) = res.await { - tracing::error!("Failed to submit {order_id}: {err}"); + tracing::error!("Failed to submit {order_id}: {err:?}"); if let Err(db_err) = self.db.set_order_failure(order_id, "Failed to submit").await { tracing::error!("Failed to set order failure during proof submission: {order_id} {db_err:?}"); } diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index eec104d26..b2ae84f2a 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -141,7 +141,7 @@ pub async fn setup_verifiers( let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; bn254_control_id.as_mut_bytes().reverse(); let verifier_parameters_digest = Digest::from_hex( - "b72859b60cfe0bb13cbde70859fbc67ef9dbd5410bbe66bdb7be64a3dcf6814e", // TODO(ec2): fixme + "f9d5815ff56c30abce3427ca3209302e1f02d51c28067ee41fd5933cad3f5490", // TODO(ec2): fixme ) .unwrap(); let bvm2_verifier = deploy_bitvm2_verifier( @@ -155,7 +155,7 @@ pub async fn setup_verifiers( let call = &router_instance.addVerifier(bvm2_selector, bvm2_verifier).from(deployer_address); - let _ = call.send().await?; + call.send().await?.get_receipt().await?; } } diff --git a/dockerfiles/agent.dockerfile b/dockerfiles/agent.dockerfile index 1ef6303c1..e6be092f4 100644 --- a/dockerfiles/agent.dockerfile +++ b/dockerfiles/agent.dockerfile @@ -91,4 +91,5 @@ RUN apt-get update -q -y \ COPY --from=builder /src/agent /app/agent COPY --from=builder /usr/local/risc0 /usr/local/risc0 +ENV RISC0_BVM2_SETUP_DIR=/.bitvm2 ENTRYPOINT ["/app/agent"] diff --git a/dockerfiles/broker.dockerfile b/dockerfiles/broker.dockerfile index 694a07fdc..826edf6ab 100644 --- a/dockerfiles/broker.dockerfile +++ b/dockerfiles/broker.dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.88.0-bookworm AS init +FROM rust:1.89.0-bookworm AS init RUN apt-get -qq update && \ apt-get install -y -q clang @@ -22,6 +22,11 @@ RUN --mount=type=secret,id=githubTokenSecret,target=/run/secrets/githubTokenSecr RUN cargo install cargo-chef +# Install protoc +RUN curl -o protoc.zip -L https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip \ + && unzip protoc.zip -d /usr/local \ + && rm protoc.zip + FROM init AS planner WORKDIR /src/ @@ -64,7 +69,7 @@ SHELL ["/bin/bash", "-c"] RUN cargo build --release --bin broker && \ cp /src/target/release/broker /src/broker -FROM rust:1.88.0-bookworm AS runtime +FROM rust:1.89.0-bookworm AS runtime RUN mkdir /app/ diff --git a/dockerfiles/rest_api.dockerfile b/dockerfiles/rest_api.dockerfile index b45cb6772..36854940a 100644 --- a/dockerfiles/rest_api.dockerfile +++ b/dockerfiles/rest_api.dockerfile @@ -1,29 +1,40 @@ ARG S3_CACHE_PREFIX="public/rust-cache-docker-Linux-X64/sccache" -FROM rust:1.85.0-bookworm AS builder +FROM rust:1.89.0-bookworm AS builder RUN apt-get -qq update && apt-get install -y -q clang +RUN cargo install cargo-chef +RUN cargo install sccache -FROM builder AS rust-builder +FROM builder AS planner +WORKDIR /src/ +COPY bento . +RUN cargo chef prepare --recipe-path recipe.json +FROM builder AS rust-builder ARG S3_CACHE_PREFIX - +# Prevent sccache collision in compose-builds +ENV SCCACHE_SERVER_PORT=4230 WORKDIR /src/ -COPY . . -RUN dockerfiles/sccache-setup.sh "x86_64-unknown-linux-musl" "v0.8.2" +COPY --from=planner /src/recipe.json recipe.json +COPY dockerfiles/sccache-config.sh dockerfiles/sccache-config.sh SHELL ["/bin/bash", "-c"] +RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ + --mount=type=cache,target=/root/.cache/sccache/,id=bento_api_sccache \ + source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ + cargo chef cook --release -p api --bin rest_api && \ + sccache --show-stats -# Prevent sccache collision in compose-builds -ENV SCCACHE_SERVER_PORT=4230 +COPY bento . RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ --mount=type=cache,target=/root/.cache/sccache/,id=bento_api_sccache \ source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo build --manifest-path bento/Cargo.toml --release -p api --bin rest_api && \ - cp bento/target/release/rest_api /src/rest_api && \ + cargo build --release -p api --bin rest_api && \ + cp target/release/rest_api /src/rest_api && \ sccache --show-stats -FROM rust:1.85.0-bookworm AS runtime +FROM rust:1.89.0-bookworm AS runtime RUN mkdir /app/ && \ apt -qq update && \ diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 225213c99..7ae4a55da 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -835,6 +835,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -867,6 +868,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -925,6 +927,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -1009,6 +1012,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -1024,6 +1028,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -1087,6 +1092,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1140,6 +1146,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1148,6 +1155,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -2050,6 +2063,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -2093,8 +2119,7 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -2196,6 +2221,7 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", + "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", @@ -2246,6 +2272,8 @@ dependencies = [ "http-cache-reqwest", "moka", "notify", + "num-bigint 0.4.6", + "num-traits", "rand 0.9.2", "reqwest", "reqwest-middleware", @@ -2256,6 +2284,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "shrink_bitvm2", "sqlx", "tempfile", "thiserror 2.0.16", @@ -2612,6 +2641,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2771,6 +2806,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -7597,6 +7641,36 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shrink_bitvm2" +version = "0.1.0" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=a1166bda124e53cdfa8a7b78eb26423c9ae49e26#a1166bda124e53cdfa8a7b78eb26423c9ae49e26" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "blake3", + "borsh", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-circuit-recursion", + "risc0-groth16", + "risc0-groth16-sys", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tracing", + "wtns-file", +] + [[package]] name = "signal-hook-registry" version = "1.4.6" diff --git a/justfile b/justfile index b0f28d339..55b47f3cf 100644 --- a/justfile +++ b/justfile @@ -174,6 +174,7 @@ localnet action="up": check-deps PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" ADMIN_ADDRESS="0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" DEPOSIT_AMOUNT="100000000000000000000" + CHAIN_ID="31337" CI=${CI:-0} if [ "{{action}}" = "up" ]; then @@ -287,7 +288,8 @@ localnet action="up": check-deps BOUNDLESS_MARKET_ADDRESS=$BOUNDLESS_MARKET_ADDRESS \ SET_VERIFIER_ADDRESS=$SET_VERIFIER_ADDRESS \ VERIFIER_ADDRESS=$VERIFIER_ADDRESS \ - ./target/debug/boundless account deposit-stake 100 || echo "Note: Stake deposit failed, but this is non-critical for localnet setup" + CHAIN_ID=$CHAIN_ID \ + ./target/debug/boundless account deposit-collateral 100 || echo "Note: Stake deposit failed, but this is non-critical for localnet setup" echo "Localnet is running with RISC0_DEV_MODE=$RISC0_DEV_MODE" if [ ! -f broker.toml ]; then diff --git a/lib/risc0-ethereum b/lib/risc0-ethereum index a02276445..2485d3a4e 160000 --- a/lib/risc0-ethereum +++ b/lib/risc0-ethereum @@ -1 +1 @@ -Subproject commit a022764453253ba28aab69dee4de60c0245c915e +Subproject commit 2485d3a4ed6b7d0252198c1e8c08a8a63f230313 From bcbd89270fc5129b46eb9da2ecc410fa1dfbb2b1 Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 13 Oct 2025 12:42:34 -0400 Subject: [PATCH 13/86] update env var and shrink repo --- Cargo.lock | 3 +-- Cargo.toml | 2 +- bento/Cargo.lock | 3 +-- bento/Cargo.toml | 2 +- bento/crates/workflow/src/tasks/snark.rs | 7 +++--- compose.yml | 4 ++-- crates/boundless-cli/src/lib.rs | 4 +++- crates/broker/src/provers/default.rs | 28 ++++++++++++++++++------ 8 files changed, 34 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f3a01feac..70e372412 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9598,7 +9598,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=57b0ff68672d5c0491d7e0a94681c90a00d708b7#57b0ff68672d5c0491d7e0a94681c90a00d708b7" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=e3933355820e468a217387dd11fa0a1a0fc309ed#e3933355820e468a217387dd11fa0a1a0fc309ed" dependencies = [ "anyhow", "ark-bn254", @@ -9606,7 +9606,6 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "blake3", - "borsh", "circom-witnesscalc", "crypto-bigint 0.5.2", "hex", diff --git a/Cargo.toml b/Cargo.toml index c56881548..b550db5bd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "57b0ff68672d5c0491d7e0a94681c90a00d708b7", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "e3933355820e468a217387dd11fa0a1a0fc309ed", default-features = false } async-stream = "0.3" alloy = { version = "1.0", default-features = false } diff --git a/bento/Cargo.lock b/bento/Cargo.lock index fbf3cf0b7..e63e90f54 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -5630,7 +5630,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=57b0ff68672d5c0491d7e0a94681c90a00d708b7#57b0ff68672d5c0491d7e0a94681c90a00d708b7" +source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=e3933355820e468a217387dd11fa0a1a0fc309ed#e3933355820e468a217387dd11fa0a1a0fc309ed" dependencies = [ "anyhow", "ark-bn254", @@ -5638,7 +5638,6 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "blake3", - "borsh", "circom-witnesscalc", "crypto-bigint 0.5.2", "hex", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 94bd48e51..bb2b11491 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "57b0ff68672d5c0491d7e0a94681c90a00d708b7", default-features = false } +shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "e3933355820e468a217387dd11fa0a1a0fc309ed", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 8720d00f4..0080543f3 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -51,12 +51,13 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .identity_p254(succinct_receipt) .context("failed to create p254 receipt")?; // TODO(ec2): Handle cpu vs gpu here? - let seal = shrink_bitvm2::shrink_wrap(&p254_receipt, &receipt.journal.bytes)?; + let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; + let seal_json = shrink_bitvm2::shrink_wrap(&p254_receipt, journal)?; ( shrink_bitvm2::finalize( - receipt.journal.bytes, + journal, p254_receipt.claim.clone(), - &seal.try_into()?, + &seal_json.try_into()?, )?, SHRINK_BITVM2_BUCKET_DIR, ) diff --git a/compose.yml b/compose.yml index 198553ec2..df501de49 100644 --- a/compose.yml +++ b/compose.yml @@ -191,8 +191,8 @@ services: entrypoint: /app/agent -t prove --redis-ttl ${REDIS_TTL:-57600} volumes: - type: bind - source: ${RISC0_BVM2_SETUP_DIR} - target: /.bitvm2 + source: ${BLAKE3_GROTH16_SETUP_DIR} + target: /.blake3_groth16 read_only: true # comment-out if running in CPU proving mode deploy: diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 77fa81d5a..6b16da83b 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -190,7 +190,9 @@ impl DefaultProver { } let receipt = succinct_receipt.clone(); tokio::task::spawn_blocking(move || { - shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, &receipt.journal.bytes) + let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; + let seal = shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, journal)?; + shrink_bitvm2::finalize(journal, receipt.claim()?, &seal.try_into()?) }) .await? } diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 9b0a9cb4f..ca0161470 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -418,9 +418,25 @@ impl Prover for DefaultProver { tracing::debug!( "r0vm does not currently support shrink_bitvm2, compressing will be done locally" ); + let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into().map_err(|_| { + ProverError::UnexpectedError(anyhow!( + "Failed to convert journal to [u8; 32] as expected for blake3 groth16", + )) + })?; + let succinct_receipt = receipt.inner.succinct().unwrap().clone(); - shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, &receipt.journal.bytes) - .map_err(|e| ProverError::UnexpectedError(anyhow!(e))) + let seal = shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, journal) + .map_err(|e| ProverError::UnexpectedError(anyhow!(e)))?; + shrink_bitvm2::finalize( + journal, + receipt.claim().map_err(|e| ProverError::UnexpectedError(anyhow!(e)))?, + &seal.try_into().map_err(|_| { + ProverError::UnexpectedError(anyhow!( + "Failed to convert blake3 groth16 seal from json" + )) + })?, + ) + .map_err(|e| ProverError::UnexpectedError(anyhow!(e))) }) .await .unwrap(); @@ -463,7 +479,6 @@ mod tests { use tokio::test; use risc0_zkvm::{sha::Digest, Groth16Seal}; - use shrink_bitvm2::verify::verify_proof; #[test] async fn test_upload_input_and_image() { @@ -597,13 +612,12 @@ mod tests { let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); let shrink_receipt: Receipt = bincode::deserialize(&compressed_receipt).unwrap(); - let stark_receipt = prover.get_receipt(&stark_id).await.unwrap().unwrap(); - let groth16_receipt = shrink_receipt.inner.groth16().unwrap(); let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) .expect("Failed to create Groth16 seal from receipt"); - - verify_proof(&groth16_seal, image_id, stark_receipt.journal.bytes) + let claim_digest = + shrink_bitvm2::ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); + shrink_bitvm2::verify::verify(&groth16_seal, claim_digest) .expect("Failed to verify Shrink BitVM2 receipt"); } } From df4d6ff107160c4c7d0c06aecaf46a8da2dda1db Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 13 Oct 2025 12:53:19 -0400 Subject: [PATCH 14/86] fix BLAKE3_GROTH16_SETUP_DIR path in agent dockerfile --- dockerfiles/agent.dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dockerfiles/agent.dockerfile b/dockerfiles/agent.dockerfile index e6be092f4..a2db446e5 100644 --- a/dockerfiles/agent.dockerfile +++ b/dockerfiles/agent.dockerfile @@ -91,5 +91,5 @@ RUN apt-get update -q -y \ COPY --from=builder /src/agent /app/agent COPY --from=builder /usr/local/risc0 /usr/local/risc0 -ENV RISC0_BVM2_SETUP_DIR=/.bitvm2 +ENV BLAKE3_GROTH16_SETUP_DIR=/.blake3_groth16 ENTRYPOINT ["/app/agent"] From 7031390ccf0a820a7f80c0e48bbd5adc92987aa6 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 5 Nov 2025 20:39:18 -0500 Subject: [PATCH 15/86] fix compilation issues when merging main --- crates/boundless-cli/src/lib.rs | 75 +++++++++----------------------- crates/broker/src/provers/mod.rs | 27 ++++++++++++ crates/broker/src/proving.rs | 18 +++++++- crates/broker/src/storage.rs | 6 +-- 4 files changed, 68 insertions(+), 58 deletions(-) diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 75b683007..f5cb80923 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -354,22 +354,22 @@ impl OrderFulfiller { Ok(proof_id) } - pub(crate) async fn shrink_bitvm2(&self, succinct_receipt: &Receipt) -> Result { - let prover = risc0_zkvm::default_prover(); - if is_dev_mode() { - return Ok(succinct_receipt.clone()); - } - if prover.get_name() == "bonsai" { - return shrink_bitvm2_with_bonsai(succinct_receipt).await; - } - let receipt = succinct_receipt.clone(); - tokio::task::spawn_blocking(move || { - let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; - let seal = shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, journal)?; - shrink_bitvm2::finalize(journal, receipt.claim()?, &seal.try_into()?) - }) - .await? - } + // pub(crate) async fn shrink_bitvm2(&self, succinct_receipt: &Receipt) -> Result { + // let prover = risc0_zkvm::default_prover(); + // if is_dev_mode() { + // return Ok(succinct_receipt.clone()); + // } + // if prover.get_name() == "bonsai" { + // return shrink_bitvm2_with_bonsai(succinct_receipt).await; + // } + // let receipt = succinct_receipt.clone(); + // tokio::task::spawn_blocking(move || { + // let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; + // let seal = shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, journal)?; + // shrink_bitvm2::finalize(journal, receipt.claim()?, &seal.try_into()?) + // }) + // .await? + // } // Finalizes the set builder. pub(crate) async fn finalize( @@ -575,7 +575,7 @@ impl OrderFulfiller { let compressed_receipt_bytes = self .prover - .get_compressed_receipt(&compressed_proof_id) + .get_bitvm2_receipt(&compressed_proof_id) .await .map_err(|e| anyhow::anyhow!("Failed to get compressed order receipt: {}", e))? .ok_or_else(|| anyhow::anyhow!("Compressed order receipt not found"))?; @@ -622,34 +622,6 @@ impl OrderFulfiller { } } -async fn shrink_bitvm2_with_bonsai(succinct_receipt: &Receipt) -> Result { - todo!() - // let client = BonsaiClient::from_env(risc0_zkvm::VERSION)?; - // let encoded_receipt = bincode::serialize(succinct_receipt)?; - // let receipt_id = client.upload_receipt(encoded_receipt).await?; - // let snark_id = client.shrink_bitvm2(receipt_id).await?; - // loop { - // let status = snark_id.status(&client).await?; - // match status.status.as_ref() { - // "RUNNING" => { - // tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; - // continue; - // } - // "SUCCEEDED" => { - // let receipt_buf = client.download(&status.output.unwrap()).await?; - // let snark_receipt: Receipt = bincode::deserialize(&receipt_buf)?; - // return Ok(snark_receipt); - // } - // status_code => { - // let err_msg = status.error_msg.unwrap_or_default(); - // return Err(anyhow::anyhow!( - // "snark proving failed with status {status_code}: {err_msg}" - // )); - // } - // } - // } -} - // Returns `true` if the dev mode environment variable is enabled. fn is_dev_mode() -> bool { std::env::var("RISC0_DEV_MODE") @@ -756,14 +728,9 @@ mod tests { let signature = request.sign_request(&signer, Address::ZERO, 1).await.unwrap(); let domain = eip712_domain(Address::ZERO, 1); - let prover = DefaultProver::new( - SET_BUILDER_ELF.to_vec(), - ASSESSOR_GUEST_ELF.to_vec(), - Address::ZERO, - domain, - ) - .expect("failed to create prover"); - - prover.fulfill(&[(request, signature.as_bytes().into())]).await.unwrap(); + let prover: Arc = Arc::new(BrokerDefaultProver::default()); + let mut fulfiller = OrderFulfiller::initialize(prover, &client).await.unwrap(); + fulfiller.domain = eip712_domain(Address::ZERO, 1); + fulfiller.fulfill(&[(request, signature.as_bytes().into())]).await.unwrap(); } } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index bb457661e..a24032755 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -132,6 +132,33 @@ pub(crate) async fn verify_groth16_receipt( Ok(()) } +/// Verify a blake3 Groth16 compressed receipt +/// +/// This helper fetches the compressed receipt, deserializes it, and verifies its integrity. +/// Used by both aggregator and proving services to validate Groth16 proofs before submission. +pub(crate) async fn verify_blake3_groth16_receipt( + prover: &ProverObj, + proof_id: &str, +) -> Result<(), ProverError> { + tracing::trace!("Verifying Blake3 Groth16 receipt locally for proof_id: {proof_id}"); + + let receipt_bytes = prover.get_bitvm2_receipt(proof_id).await?.ok_or_else(|| { + ProverError::NotFound(format!("Blake3 Groth16 receipt not found: {proof_id}")) + })?; + + let receipt: Receipt = bincode::deserialize(&receipt_bytes).map_err(|e| { + ProverError::ProverInternalError(format!("Failed to deserialize receipt: {e}")) + })?; + + // TODO(ec2): verify this with blake3 groth16 verifier + // receipt.verify_integrity_with_context(&Default::default()).map_err(|e| { + // ProverError::ProverInternalError(format!("Blake3 Groth16 verification failed: {e}")) + // })?; + + tracing::debug!("Blake3 Groth16 verification passed for proof_id: {proof_id}"); + Ok(()) +} + #[async_trait] pub trait Prover { async fn has_image(&self, image_id: &str) -> Result; diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index 035e30441..0327891eb 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -122,7 +122,23 @@ impl ProvingService { unreachable!("Compression type should not be None here") } }; - provers::verify_groth16_receipt(&self.prover, &proof_id).await?; + match compression_type { + CompressionType::Groth16 => { + tracing::trace!( + "Verifying compressed Groth16 receipt locally for proof_id: {proof_id}" + ); + provers::verify_groth16_receipt(&self.prover, &proof_id).await?; + } + CompressionType::ShrinkBitvm2 => { + tracing::trace!( + "Verifying compressed BitVM2 receipt locally for proof_id: {proof_id}" + ); + provers::verify_blake3_groth16_receipt(&self.prover, &proof_id).await?; + } + CompressionType::None => { + unreachable!("Compression type should not be None here") + } + } Ok::(proof_id) }, "compress_and_verify", diff --git a/crates/broker/src/storage.rs b/crates/broker/src/storage.rs index 6aae0b692..ccfd16849 100644 --- a/crates/broker/src/storage.rs +++ b/crates/broker/src/storage.rs @@ -82,9 +82,9 @@ pub(crate) async fn create_uri_handler( match uri.scheme() { "file" => { - if !is_dev_mode() { - return Err(StorageErr::UnsupportedScheme("file".to_string())); - } + // if !is_dev_mode() { + // return Err(StorageErr::UnsupportedScheme("file".to_string())); + // } let max_size = if skip_max_size_check { usize::MAX } else { From 422a0b0e51690347dc16610e69163b51bf41ae97 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 5 Nov 2025 21:57:30 -0500 Subject: [PATCH 16/86] move shrink_bitvm2 into this repo --- .cargo/config.toml | 3 + Cargo.lock | 40 +++++- Cargo.toml | 7 +- bento/Cargo.toml | 2 +- dockerfiles/agent.dockerfile | 32 ++--- dockerfiles/broker.dockerfile | 2 +- dockerfiles/rest_api.dockerfile | 33 ++--- shrink_bitvm2/Cargo.toml | 37 ++++++ shrink_bitvm2/src/lib.rs | 139 ++++++++++++++++++++ shrink_bitvm2/src/prove.rs | 82 ++++++++++++ shrink_bitvm2/src/prove/cuda.rs | 76 +++++++++++ shrink_bitvm2/src/prove/rapidsnark.rs | 44 +++++++ shrink_bitvm2/src/prove/witgen.rs | 10 ++ shrink_bitvm2/src/receipt_claim.rs | 94 ++++++++++++++ shrink_bitvm2/src/verify.rs | 175 ++++++++++++++++++++++++++ xtask/Cargo.toml | 21 ++++ xtask/src/main.rs | 30 +++++ xtask/src/setup_blake3_groth16.rs | 159 +++++++++++++++++++++++ 18 files changed, 933 insertions(+), 53 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 shrink_bitvm2/Cargo.toml create mode 100644 shrink_bitvm2/src/lib.rs create mode 100644 shrink_bitvm2/src/prove.rs create mode 100644 shrink_bitvm2/src/prove/cuda.rs create mode 100644 shrink_bitvm2/src/prove/rapidsnark.rs create mode 100644 shrink_bitvm2/src/prove/witgen.rs create mode 100644 shrink_bitvm2/src/receipt_claim.rs create mode 100644 shrink_bitvm2/src/verify.rs create mode 100644 xtask/Cargo.toml create mode 100644 xtask/src/main.rs create mode 100644 xtask/src/setup_blake3_groth16.rs diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 000000000..be5caa341 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +[alias] +xtask = "run --package xtask --release --" +xtask-blake3-groth16 = "run --package xtask --no-default-features -F cuda --release -- setup-groth16" \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 44320177e..beb00ad01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9080,6 +9080,15 @@ dependencies = [ "stability", ] +[[package]] +name = "rlimit" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7043b63bd0cd1aaa628e476b80e6d4023a3b50eb32789f2728908107bd0c793a" +dependencies = [ + "libc", +] + [[package]] name = "rlp" version = "0.5.2" @@ -9939,8 +9948,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shrink_bitvm2" -version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=e3933355820e468a217387dd11fa0a1a0fc309ed#e3933355820e468a217387dd11fa0a1a0fc309ed" +version = "1.1.0" dependencies = [ "anyhow", "ark-bn254", @@ -9953,6 +9961,7 @@ dependencies = [ "hex", "num-bigint 0.4.6", "num-traits", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-groth16", "risc0-groth16-sys", @@ -12306,6 +12315,33 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "xshell" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e7290c623014758632efe00737145b6867b66292c42167f2ec381eb566a373d" +dependencies = [ + "xshell-macros", +] + +[[package]] +name = "xshell-macros" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" + +[[package]] +name = "xtask" +version = "1.1.0" +dependencies = [ + "clap", + "risc0-groth16-sys", + "rlimit", + "tracing", + "tracing-subscriber 0.3.20", + "xshell", +] + [[package]] name = "xxhash-rust" version = "0.8.15" diff --git a/Cargo.toml b/Cargo.toml index 9de62f87d..b21676bc9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,10 +18,11 @@ members = [ "crates/povw", "crates/requestor-lists", "crates/rewards", + "shrink_bitvm2", "crates/slasher", "crates/test-utils", "crates/zkc", - "documentation/doc-test", + "documentation/doc-test", "xtask", ] [workspace.package] @@ -42,7 +43,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "e3933355820e468a217387dd11fa0a1a0fc309ed", default-features = false } +shrink_bitvm2 = { path = "shrink_bitvm2", default-features = false } requestor-lists = { path = "crates/requestor-lists" } alloy = { version = "1.0", default-features = false } @@ -83,7 +84,7 @@ risc0-ethereum-contracts = { version = "3.0.1" } risc0-povw = { version = "0.4", default-features = false } risc0-zkp = { version = "3.0.2" } risc0-groth16 = { version = "3.0.2" } - +risc0-groth16-sys = { version = "0.1.0" } risc0-zkvm = { version = "3.0.3", default-features = false } rmp-serde = { version = "1.3" } serde = { version = "1.0", features = ["derive"] } diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 142cc5780..5e07a43e4 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -35,7 +35,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { git = "https://github.com/ec2/shrink_bitvm2.git", rev = "e3933355820e468a217387dd11fa0a1a0fc309ed", default-features = false } +shrink_bitvm2 = { path = "../shrink_bitvm2", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/dockerfiles/agent.dockerfile b/dockerfiles/agent.dockerfile index a2db446e5..98e02b356 100644 --- a/dockerfiles/agent.dockerfile +++ b/dockerfiles/agent.dockerfile @@ -19,7 +19,7 @@ ENV RUSTUP_HOME=/usr/local/rustup \ # Install rust and target version (should match rust-toolchain.toml for best speed) RUN curl https://sh.rustup.rs -sSf | sh -s -- -y \ && chmod -R a+w $RUSTUP_HOME $CARGO_HOME \ - && rustup install 1.89 + && rustup install 1.88 # Install protoc RUN curl -o protoc.zip -L https://github.com/protocolbuffers/protobuf/releases/download/v31.1/protoc-31.1-linux-x86_64.zip \ @@ -36,14 +36,6 @@ RUN curl -L https://risczero.com/install | bash && \ # Clean up any temporary files to reduce image size rm -rf /tmp/* /var/tmp/* -RUN cargo install cargo-chef -RUN cargo install sccache - -FROM rust-builder AS planner -WORKDIR /src/ -COPY bento . -RUN cargo chef prepare --recipe-path recipe.json - FROM rust-builder AS builder ARG NVCC_APPEND_FLAGS="\ @@ -56,29 +48,21 @@ ARG S3_CACHE_PREFIX ENV NVCC_APPEND_FLAGS=${NVCC_APPEND_FLAGS} ENV RISC0_CUDA_OPT=${CUDA_OPT_LEVEL} ENV SCCACHE_SERVER_PORT=4227 -# Consider using if building and running on the same CPU -ENV RUSTFLAGS="-C target-cpu=native" -WORKDIR /src/ -COPY --from=planner /src/recipe.json recipe.json -COPY dockerfiles/sccache-config.sh dockerfiles/sccache-config.sh +WORKDIR /src/ +COPY . . +RUN dockerfiles/sccache-setup.sh "x86_64-unknown-linux-musl" "v0.8.2" SHELL ["/bin/bash", "-c"] -RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ - --mount=type=cache,target=/root/.cache/sccache/,id=bento_agent_sc \ - pwd && ls && ls dockerfiles && \ - source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo chef cook --release -p workflow --features cuda --bin agent && \ - sccache --show-stats - -COPY bento . +# Consider using if building and running on the same CPU +ENV RUSTFLAGS="-C target-cpu=native" RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ --mount=type=cache,target=/root/.cache/sccache/,id=bento_agent_sc \ source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo build --release -p workflow -F cuda --bin agent && \ - cp target/release/agent /src/agent && \ + cargo build --manifest-path bento/Cargo.toml --release -p workflow -F cuda --bin agent && \ + cp bento/target/release/agent /src/agent && \ sccache --show-stats FROM ${CUDA_RUNTIME_IMG} AS runtime diff --git a/dockerfiles/broker.dockerfile b/dockerfiles/broker.dockerfile index 826edf6ab..083b67020 100644 --- a/dockerfiles/broker.dockerfile +++ b/dockerfiles/broker.dockerfile @@ -40,7 +40,7 @@ COPY documentation/ ./documentation/ COPY lib/ ./lib/ COPY remappings.txt . COPY foundry.toml . - +COPY shrink_bitvm2/ ./shrink_bitvm2/ RUN cargo chef prepare --recipe-path recipe.json FROM init AS builder diff --git a/dockerfiles/rest_api.dockerfile b/dockerfiles/rest_api.dockerfile index 36854940a..c9fbf1364 100644 --- a/dockerfiles/rest_api.dockerfile +++ b/dockerfiles/rest_api.dockerfile @@ -1,44 +1,33 @@ ARG S3_CACHE_PREFIX="public/rust-cache-docker-Linux-X64/sccache" -FROM rust:1.89.0-bookworm AS builder +FROM rust:1.85.0-bookworm AS builder RUN apt-get -qq update && apt-get install -y -q clang -RUN cargo install cargo-chef -RUN cargo install sccache - -FROM builder AS planner -WORKDIR /src/ -COPY bento . -RUN cargo chef prepare --recipe-path recipe.json FROM builder AS rust-builder + ARG S3_CACHE_PREFIX -# Prevent sccache collision in compose-builds -ENV SCCACHE_SERVER_PORT=4230 + WORKDIR /src/ -COPY --from=planner /src/recipe.json recipe.json -COPY dockerfiles/sccache-config.sh dockerfiles/sccache-config.sh +COPY . . +RUN dockerfiles/sccache-setup.sh "x86_64-unknown-linux-musl" "v0.8.2" SHELL ["/bin/bash", "-c"] -RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ - --mount=type=cache,target=/root/.cache/sccache/,id=bento_api_sccache \ - source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo chef cook --release -p api --bin rest_api && \ - sccache --show-stats -COPY bento . +# Prevent sccache collision in compose-builds +ENV SCCACHE_SERVER_PORT=4230 RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ --mount=type=cache,target=/root/.cache/sccache/,id=bento_api_sccache \ source dockerfiles/sccache-config.sh ${S3_CACHE_PREFIX} && \ - cargo build --release -p api --bin rest_api && \ - cp target/release/rest_api /src/rest_api && \ + cargo build --manifest-path bento/Cargo.toml --release -p api --bin rest_api && \ + cp bento/target/release/rest_api /src/rest_api && \ sccache --show-stats -FROM rust:1.89.0-bookworm AS runtime +FROM rust:1.85.0-bookworm AS runtime RUN mkdir /app/ && \ apt -qq update && \ apt install -y -q openssl COPY --from=rust-builder /src/rest_api /app/rest_api -ENTRYPOINT ["/app/rest_api"] +ENTRYPOINT ["/app/rest_api"] \ No newline at end of file diff --git a/shrink_bitvm2/Cargo.toml b/shrink_bitvm2/Cargo.toml new file mode 100644 index 000000000..7bf8f32a2 --- /dev/null +++ b/shrink_bitvm2/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "shrink_bitvm2" +version.workspace = true +edition.workspace = true +homepage.workspace = true +repository.workspace = true + +[features] +default = ["prove"] +prove = ["risc0-zkvm/prove"] +cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] + +[dependencies] +anyhow.workspace = true +ark-bn254 = "0.5.0" +ark-ff = "0.5.0" +ark-groth16 = { version = "0.5.0" } +ark-serialize = "0.5.0" +blake3 = { version = "1.5.0" } + +circom-witnesscalc = { version = "0.2.1" } +crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } +hex.workspace = true +num-bigint = { version = "0.4.5", features = ["std"] } +num-traits = "0.2.19" +risc0-binfmt = { version = "3.0.2", default-features = false } +risc0-circuit-recursion = { workspace = true, default-features = false } +risc0-groth16 = { workspace = true } +risc0-groth16-sys = { workspace = true, optional = true } +risc0-zkp = { workspace = true, default-features = false } +risc0-zkvm.workspace = true +serde.workspace = true +serde_json.workspace = true +sha2.workspace = true +tempfile.workspace = true +tracing.workspace = true +wtns-file = { version = "0.1.5" } diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs new file mode 100644 index 000000000..529021b65 --- /dev/null +++ b/shrink_bitvm2/src/lib.rs @@ -0,0 +1,139 @@ +use anyhow::Result; +pub use receipt_claim::*; +use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; +pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; +use risc0_zkvm::{MaybePruned, Receipt, ReceiptClaim, SuccinctReceipt}; + +#[cfg(feature = "prove")] +use { + anyhow::Context, risc0_zkvm::Groth16Receipt, risc0_zkvm::sha::Digestible, std::path::Path, + tempfile::tempdir, +}; + +#[cfg(feature = "prove")] +mod prove; +pub mod receipt_claim; +pub mod verify; + +/// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. +/// It will first run the identity_p254 program to convert the STARK to BN254, +/// which is more efficient to verify. +#[cfg(feature = "prove")] +pub fn succinct_to_bitvm2( + succinct_receipt: &SuccinctReceipt, + journal: [u8; 32], +) -> Result { + let p254_receipt: SuccinctReceipt = + risc0_zkvm::recursion::identity_p254(succinct_receipt).unwrap(); + shrink_wrap(&p254_receipt, journal) +} + +/// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. +#[cfg(feature = "prove")] +pub fn shrink_wrap( + p254_receipt: &SuccinctReceipt, + journal: [u8; 32], +) -> Result { + let seal_json = prove::identity_seal_json(journal, p254_receipt)?; + + let tmp_dir = tempdir().context("failed to create temporary directory")?; + let work_dir = std::env::var("BLAKE3_GROTH16_WORK_DIR"); + let work_dir = work_dir.as_ref().map(Path::new).unwrap_or(tmp_dir.path()); + + #[cfg(feature = "cuda")] + let proof_json = prove::cuda::shrink_wrap(work_dir, seal_json)?; + #[cfg(not(feature = "cuda"))] + let proof_json = prove::rapidsnark::shrink_wrap(work_dir, seal_json)?; + + Ok(proof_json) +} + +/// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. +#[cfg(feature = "prove")] +pub fn finalize( + journal: [u8; 32], + receipt_claim: MaybePruned, + seal: &Groth16Seal, +) -> Result { + let receipt_claim_value = receipt_claim + .as_value() + .context("receipt claim must not be pruned")?; + let blake3_claim_digest = + ShrinkBitvm2ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); + verify::verify(seal, blake3_claim_digest)?; + + let verifier_parameters = crate::verify::verifier_parameters(); + let groth16_receipt = + Groth16Receipt::new(seal.to_vec(), receipt_claim, verifier_parameters.digest()); + let receipt = Receipt::new( + risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), + journal.to_vec(), + ); + Ok(receipt) +} + +#[cfg(not(feature = "prove"))] +pub fn succinct_to_bitvm2( + _succinct_receipt: &SuccinctReceipt, + _journal: [u8; 32], +) -> Result { + unimplemented!( + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + ); +} + +#[cfg(not(feature = "prove"))] +pub fn shrink_wrap( + _p254_receipt: &SuccinctReceipt, + _journal: [u8; 32], +) -> Result { + unimplemented!( + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + ); +} + +#[cfg(not(feature = "prove"))] +pub fn finalize( + _journal_bytes: [u8; 32], + _receipt_claim: MaybePruned, + _seal: &Groth16Seal, +) -> Result { + unimplemented!( + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + ); +} + +#[cfg(test)] +mod tests { + use super::*; + use guest::ECHO_ELF; + #[cfg(feature = "prove")] + use risc0_zkvm::{ExecutorEnv, ProverOpts, default_prover}; + #[cfg(feature = "prove")] + #[test] + fn test_succinct_to_bitvm2() { + use guest::ECHO_ID; + + let input = [3u8; 32]; + + let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); + + // Obtain the default prover. + let prover = default_prover(); + + // Produce a receipt by proving the specified ELF binary. + let receipt = prover + .prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()) + .unwrap() + .receipt; + let succinct_receipt = receipt.inner.succinct().unwrap(); + + let blake3_g16_seal_json = succinct_to_bitvm2(succinct_receipt, input).unwrap(); + let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); + let blake3_g16_seal: Groth16Seal = blake3_g16_seal_json.try_into().unwrap(); + verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); + + let _ = + finalize(input, receipt.claim().unwrap(), &blake3_g16_seal).expect("finalize failed"); + } +} diff --git a/shrink_bitvm2/src/prove.rs b/shrink_bitvm2/src/prove.rs new file mode 100644 index 000000000..3e53bcee5 --- /dev/null +++ b/shrink_bitvm2/src/prove.rs @@ -0,0 +1,82 @@ +use anyhow::{Context, Result}; +use num_bigint::BigUint; +use num_traits::Num; +use risc0_groth16::prove::to_json as seal_to_json; +use risc0_zkvm::sha::Digestible; +use risc0_zkvm::{ReceiptClaim, SuccinctReceipt}; +#[cfg(feature = "cuda")] +pub(crate) mod cuda; +#[cfg(not(feature = "cuda"))] +pub(crate) mod rapidsnark; +pub(crate) mod witgen; + +pub(crate) fn identity_seal_json( + journal_bytes: [u8; 32], + p254_receipt: &SuccinctReceipt, +) -> Result { + let seal_bytes = p254_receipt.get_seal_bytes(); + let seal_json = seal_to_json(seal_bytes.as_slice())?; // TODO(ec2): This is currently using a local version of risc0 which exposes this method + let mut seal_json: serde_json::Value = serde_json::from_str(&seal_json)?; + + let mut journal_bits = Vec::new(); + for byte in journal_bytes { + for i in 0..8 { + journal_bits.push((byte >> (7 - i)) & 1); + } + } + let receipt_claim = p254_receipt.claim.as_value().unwrap(); + let pre_state_digest_bits: Vec<_> = receipt_claim + .pre + .digest() + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + + let post_state_digest_bits: Vec<_> = receipt_claim + .post + .digest() + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + + let mut id_bn254_fr_bits: Vec = p254_receipt + .control_id + .as_bytes() + .iter() + .flat_map(|&byte| (0..8).rev().map(move |i| ((byte >> i) & 1).to_string())) + .collect(); + // remove 248th and 249th bits + id_bn254_fr_bits.remove(248); + id_bn254_fr_bits.remove(248); + + let mut succinct_control_root_bytes: [u8; 32] = + risc0_zkvm::SuccinctReceiptVerifierParameters::default() + .control_root + .as_bytes() + .try_into()?; + + succinct_control_root_bytes.reverse(); + let succinct_control_root_hex = hex::encode(succinct_control_root_bytes); + + let a1_str = succinct_control_root_hex[0..32].to_string(); + let a0_str = succinct_control_root_hex[32..64].to_string(); + let a0_dec = to_decimal(&a0_str).context("a0_str returned None")?; + let a1_dec = to_decimal(&a1_str).context("a1_str returned None")?; + + let control_root = vec![a0_dec, a1_dec]; + + seal_json["journal_digest_bits"] = journal_bits.into(); + seal_json["pre_state_digest_bits"] = pre_state_digest_bits.into(); + seal_json["post_state_digest_bits"] = post_state_digest_bits.into(); + seal_json["id_bn254_fr_bits"] = id_bn254_fr_bits.into(); + seal_json["control_root"] = control_root.into(); + + Ok(seal_json) +} + +fn to_decimal(s: &str) -> Option { + let int = BigUint::from_str_radix(s, 16).ok(); + int.map(|n| n.to_str_radix(10)) +} diff --git a/shrink_bitvm2/src/prove/cuda.rs b/shrink_bitvm2/src/prove/cuda.rs new file mode 100644 index 000000000..959ad651f --- /dev/null +++ b/shrink_bitvm2/src/prove/cuda.rs @@ -0,0 +1,76 @@ +// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::{io::Cursor, path::Path}; + +use anyhow::{Context as _, Result}; +use risc0_groth16_sys::{ProverParams, SetupParams, WitnessParams}; + +use crate::prove::witgen::calculate_witness_encoded; +use risc0_groth16::ProofJson as Groth16ProofJson; + +struct CalcWitness { + witness: Vec>, +} + +impl CalcWitness { + fn as_ptr(&self) -> *const u8 { + self.witness.as_ptr() as *const u8 + } +} + +fn calculate_witness(graph_path: &Path, inputs: &str) -> Result { + let witness_encoded = calculate_witness_encoded(graph_path, inputs)?; + let wtns_f = wtns_file::WtnsFile::read(Cursor::new(witness_encoded))?; + Ok(CalcWitness { + witness: wtns_f.witness.0, + }) +} + +pub fn shrink_wrap( + work_dir: &Path, + identity_seal_json: serde_json::Value, +) -> Result { + tracing::info!("shrink_wrap with cuda"); + let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); + let root_dir = root_dir + .as_ref() + .map(Path::new) + .expect("must provide BLAKE3_GROTH16_SETUP_DIR"); + + let mut setup_params = + SetupParams::new(root_dir).context("failed to create groth16 work directories")?; + setup_params.srs_path = root_dir.join("verify_for_guest_final.zkey").try_into()?; + + let mut witness_params = WitnessParams::new(root_dir); + witness_params.graph_path = root_dir.join("verify_for_guest_graph.bin"); + + let witness = calculate_witness( + &witness_params.graph_path, + identity_seal_json.to_string().as_str(), + )?; + + { + let _lock = risc0_zkp::hal::cuda::singleton().lock(); + + let prover_params = ProverParams::new(work_dir, witness.as_ptr()) + .context("failed to create groth16 prover parameters")?; + risc0_groth16_sys::prove(&prover_params, &setup_params) + .context("failed to run groth16 prove operation")?; + + let contents = std::fs::read_to_string(prover_params.proof_path.as_path()) + .context("failed to read groth16 prove output file")?; + serde_json::from_str(&contents).context("failed to decode groth16 prove output file JSON") + } +} diff --git a/shrink_bitvm2/src/prove/rapidsnark.rs b/shrink_bitvm2/src/prove/rapidsnark.rs new file mode 100644 index 000000000..f92b2e032 --- /dev/null +++ b/shrink_bitvm2/src/prove/rapidsnark.rs @@ -0,0 +1,44 @@ +use std::path::Path; + +use crate::prove::witgen::calculate_witness_encoded; + +use anyhow::Result; +use risc0_groth16::ProofJson as Groth16ProofJson; +use std::process::Command; + +pub fn shrink_wrap( + work_dir: &Path, + identity_seal_json: serde_json::Value, +) -> Result { + tracing::debug!("shrink_wrap with rapidsnark"); + let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); + let root_dir = root_dir + .as_ref() + .map(Path::new) + .expect("must provide BLAKE3_GROTH16_SETUP_DIR"); + + let graph_path = root_dir.join("verify_for_guest_graph.bin"); + let witness_path = work_dir.join("output.wtns"); + let proof_path = work_dir.join("proof.json"); + let public_path = work_dir.join("public.json"); + + let witness_encoded = + calculate_witness_encoded(&graph_path, identity_seal_json.to_string().as_str())?; + std::fs::write(&witness_path, witness_encoded)?; + + let status = Command::new("rapidsnark") + .arg(root_dir.join("verify_for_guest_final.zkey")) + .arg(witness_path) + .arg(&proof_path) + .arg(public_path) + .status()?; + + anyhow::ensure!(status.success(), "rapidsnark failed: {:?}", status.code()); + + let proof_content = std::fs::read_to_string(&proof_path)?; + + let proof_json: Groth16ProofJson = + serde_json::from_str(proof_content.trim_matches(char::from(0)))?; + + Ok(proof_json) +} diff --git a/shrink_bitvm2/src/prove/witgen.rs b/shrink_bitvm2/src/prove/witgen.rs new file mode 100644 index 000000000..12d6adc28 --- /dev/null +++ b/shrink_bitvm2/src/prove/witgen.rs @@ -0,0 +1,10 @@ +use anyhow::{Result, anyhow}; +use std::path::Path; + +pub fn calculate_witness_encoded(graph_path: &Path, inputs: &str) -> Result> { + tracing::info!("calculate_witness"); + let graph = std::fs::read(graph_path)?; + let witness_encoded = circom_witnesscalc::calc_witness(inputs, &graph) + .map_err(|err| anyhow!("witness failure: {err}"))?; + Ok(witness_encoded) +} diff --git a/shrink_bitvm2/src/receipt_claim.rs b/shrink_bitvm2/src/receipt_claim.rs new file mode 100644 index 000000000..2b4b7bd4a --- /dev/null +++ b/shrink_bitvm2/src/receipt_claim.rs @@ -0,0 +1,94 @@ +use anyhow::Context; +use risc0_zkvm::{ + sha::{self, Digestible, Sha256, DIGEST_BYTES}, + Digest, MaybePruned, SystemState, VerifierContext, +}; +use serde::{Deserialize, Serialize}; + +/// A claim about the guest program execution, such as the journal. +/// The digest of this is what the BLAKE3 Groth16 proof outputs. +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct ShrinkBitvm2ReceiptClaim { + pub pre: MaybePruned, + pub post: MaybePruned, + /// Note: This journal has to be exactly 32 bytes + pub journal: Vec, + + pub control_root: Digest, + pub control_id: Digest, +} + +impl ShrinkBitvm2ReceiptClaim { + pub fn ok(image_id: impl Into, journal: impl Into>) -> Self { + Self::ok_with_ctx(image_id, journal, VerifierContext::default()) + .expect("default verifier context is expected to supply succinct verifier parameters") + } + + pub fn ok_with_ctx( + image_id: impl Into, + journal: impl Into>, + ctx: VerifierContext, + ) -> anyhow::Result { + let verifier_params = ctx + .succinct_verifier_parameters + .as_ref() + .context("succinct verifier parameters is required but was not provided")?; + let control_root = verifier_params.control_root; + Ok(Self { + control_root, + pre: MaybePruned::Pruned(image_id.into()), + post: MaybePruned::Value(SystemState { + pc: 0, + merkle_root: Digest::ZERO, + }), + control_id: crate::BN254_IDENTITY_CONTROL_ID, + journal: journal.into(), + }) + } + + pub fn claim_digest(&self) -> Digest { + self.claim_digest_inner::() + } + + // Implementation of the claim digest using the provided generic implementation of + // SHA-256. There is no known reason to use an implemention other than the one provided as + // risc0-zkvm::sha::Impl, so this method is not exported. + fn claim_digest_inner(&self) -> Digest { + // Byte-order of the control root is reversed for usage in the recursive verifier circuit. + // NOTE: In this case, the root is a Poseidon hash using BN-254 scalar field. + let mut control_root_bytes: [u8; 32] = self.control_root.as_bytes().try_into().unwrap(); + for byte in &mut control_root_bytes { + *byte = byte.reverse_bits(); + } + + let mut buffer = [0u8; DIGEST_BYTES * 4]; + let (buffer_chunks, &mut []) = buffer.as_chunks_mut::() else { + unreachable!() + }; + + buffer_chunks[0] = control_root_bytes; + buffer_chunks[1] = self.pre.digest().into(); + buffer_chunks[2] = self.post.digest().into(); + buffer_chunks[3] = self.control_id.into(); + + let output_prefix = S::hash_bytes(&buffer); + + // final blake3 hash + let mut hasher = blake3::Hasher::new(); + hasher.update(output_prefix.as_bytes()); + hasher.update(&self.journal); + + let mut digest_bytes: [u8; 32] = hasher.finalize().into(); + // trim to 31 bytes + digest_bytes[31] = 0; + // shift because of endianness + digest_bytes.rotate_right(1); + digest_bytes.into() + } +} + +impl risc0_binfmt::Digestible for ShrinkBitvm2ReceiptClaim { + fn digest(&self) -> Digest { + self.claim_digest_inner::() + } +} diff --git a/shrink_bitvm2/src/verify.rs b/shrink_bitvm2/src/verify.rs new file mode 100644 index 000000000..7b46b89f8 --- /dev/null +++ b/shrink_bitvm2/src/verify.rs @@ -0,0 +1,175 @@ +use anyhow::{Result, ensure}; +use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; +use ark_ff::PrimeField; +use ark_serialize::CanonicalSerialize; +use risc0_groth16::Seal as Groth16Seal; +use risc0_zkvm::Digest; +use std::str::FromStr; + +// Constants from: risc0-ethereum/contracts/src/blake3/Groth16Verifier.sol +// When running a new ceremony, update them by running cargo xtask bootstrap-blake3-groth16 +// after updating the new Groth16Verifier.sol on the risc0-ethereum repo. +const ALPHA_X: &str = + "16428432848801857252194528405604668803277877773566238944394625302971855135431"; +const ALPHA_Y: &str = + "16846502678714586896801519656441059708016666274385668027902869494772365009666"; +const BETA_X1: &str = + "3182164110458002340215786955198810119980427837186618912744689678939861918171"; +const BETA_X2: &str = + "16348171800823588416173124589066524623406261996681292662100840445103873053252"; +const BETA_Y1: &str = + "4920802715848186258981584729175884379674325733638798907835771393452862684714"; +const BETA_Y2: &str = + "19687132236965066906216944365591810874384658708175106803089633851114028275753"; +const GAMMA_X1: &str = + "11559732032986387107991004021392285783925812861821192530917403151452391805634"; +const GAMMA_X2: &str = + "10857046999023057135944570762232829481370756359578518086990519993285655852781"; +const GAMMA_Y1: &str = + "4082367875863433681332203403145435568316851327593401208105741076214120093531"; +const GAMMA_Y2: &str = + "8495653923123431417604973247489272438418190587263600148770280649306958101930"; +const DELTA_X1: &str = + "18786665442134809547367793008388252094276956707083189371748822844215202271178"; +const DELTA_X2: &str = + "17296777349791701671871010047490559682924748762983962242018229225890177681165"; +const DELTA_Y1: &str = + "21546884238630900902634517213362010321565339505810557359182294051078510536811"; +const DELTA_Y2: &str = + "7214627676570978956115414107903354102221009447018809863680303520130992055423"; + +const IC0_X: &str = "1396989810128049774239906514097458055670219613079348950494410066757721605523"; +const IC0_Y: &str = "20069629286434534534516684991063672335613842540347999544849171590987775766961"; +const IC1_X: &str = "19282603452922066135228857769519044667044696173320493211119861249451600114594"; +const IC1_Y: &str = "11966256187809052800087108088094647243345273965264062329687482664981607072161"; + + +/// Verifies the soundness of a Groth16Seal against the BLAKE3 claim digest. +pub fn verify(seal: &Groth16Seal, blake3_claim_digest: impl Into) -> Result<()> { + let ark_proof = from_seal(&seal.to_vec()); + let public_input_scalar = + ark_bn254::Fr::from_be_bytes_mod_order(blake3_claim_digest.into().as_ref()); + let ark_vk = get_ark_verifying_key(); + let ark_pvk = ark_groth16::prepare_verifying_key(&ark_vk); + let res = ark_groth16::Groth16::::verify_proof( + &ark_pvk, + &ark_proof, + &[public_input_scalar], + ) + .unwrap(); + ensure!(res, "proof verification failed"); + Ok(()) +} +pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { + let ark_key = get_ark_verifying_key(); + let mut b = vec![]; + ark_key.serialize_uncompressed(&mut b).unwrap(); + let j = serde_json::to_string(&b).expect("Failed to serialize verification key to JSON"); + let vk: risc0_groth16::VerifyingKey = + serde_json::from_str(j.as_str()).expect("failed to parse JSON"); + vk +} + +pub fn verifier_parameters() -> risc0_zkvm::Groth16ReceiptVerifierParameters { + let vk: risc0_groth16::VerifyingKey = get_r0_verifying_key(); + risc0_zkvm::Groth16ReceiptVerifierParameters { + verifying_key: vk, + ..Default::default() + } +} + +fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { + use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; + use ark_ff::{Field, PrimeField}; + + let a = G1Affine::new( + Fq::from_be_bytes_mod_order(&seal_bytes[0..32]), + Fq::from_be_bytes_mod_order(&seal_bytes[32..64]), + ); + + let b = G2Affine::new( + Fq2::from_base_prime_field_elems([ + Fq::from_be_bytes_mod_order(&seal_bytes[96..128]), + Fq::from_be_bytes_mod_order(&seal_bytes[64..96]), + ]) + .unwrap(), + Fq2::from_base_prime_field_elems([ + Fq::from_be_bytes_mod_order(&seal_bytes[160..192]), + Fq::from_be_bytes_mod_order(&seal_bytes[128..160]), + ]) + .unwrap(), + ); + + let c = G1Affine::new( + Fq::from_be_bytes_mod_order(&seal_bytes[192..224]), + Fq::from_be_bytes_mod_order(&seal_bytes[224..256]), + ); + + ark_groth16::Proof { a, b, c } +} + +pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { + let alpha_g1 = G1Affine::new( + Fq::from_str(ALPHA_X).unwrap(), + Fq::from_str(ALPHA_Y).unwrap(), + ); + + let beta_g2 = G2Affine::new( + Fq2::new( + Fq::from_str(BETA_X2).unwrap(), + Fq::from_str(BETA_X1).unwrap(), + ), + Fq2::new( + Fq::from_str(BETA_Y2).unwrap(), + Fq::from_str(BETA_Y1).unwrap(), + ), + ); + + let gamma_g2 = G2Affine::new( + Fq2::new( + Fq::from_str(GAMMA_X2).unwrap(), + Fq::from_str(GAMMA_X1).unwrap(), + ), + Fq2::new( + Fq::from_str(GAMMA_Y2).unwrap(), + Fq::from_str(GAMMA_Y1).unwrap(), + ), + ); + + let delta_g2 = G2Affine::new( + Fq2::new( + Fq::from_str(DELTA_X2).unwrap(), + Fq::from_str(DELTA_X1).unwrap(), + ), + Fq2::new( + Fq::from_str(DELTA_Y2).unwrap(), + Fq::from_str(DELTA_Y1).unwrap(), + ), + ); + + let gamma_abc_g1 = vec![ + G1Affine::new(Fq::from_str(IC0_X).unwrap(), Fq::from_str(IC0_Y).unwrap()), + G1Affine::new(Fq::from_str(IC1_X).unwrap(), Fq::from_str(IC1_Y).unwrap()), + ]; + + ark_groth16::VerifyingKey { + alpha_g1, + beta_g2, + gamma_g2, + delta_g2, + gamma_abc_g1, + } +} + +#[cfg(test)] +mod test { + use risc0_zkvm::sha::Digestible; + + use super::*; + + #[test] + fn print_verifier_params_digest() { + let digest = verifier_parameters().digest(); + println!("Blake3 Groth16 verifier parameters digest: {}", digest); + } +} diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml new file mode 100644 index 000000000..d735bff20 --- /dev/null +++ b/xtask/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "xtask" +version.workspace = true +edition.workspace = true +homepage.workspace = true +repository.workspace = true + +[dependencies] +clap = { version = "4.5", features = ["derive", "env"] } +rlimit = "0.10.2" +risc0-groth16-sys = { workspace = true, optional = true, features = [ + "cuda", + "setup", +] } +tracing = { workspace = true } +tracing-subscriber = {version = "0.3", features = ["env-filter"] } +xshell = "0.2" + +[features] +default = [] +cuda = ["dep:risc0-groth16-sys"] diff --git a/xtask/src/main.rs b/xtask/src/main.rs new file mode 100644 index 000000000..867fd65e4 --- /dev/null +++ b/xtask/src/main.rs @@ -0,0 +1,30 @@ +use clap::{Parser, Subcommand}; + +mod setup_blake3_groth16; + +#[derive(Parser)] +struct Cli { + #[command(subcommand)] + cmd: Commands, +} + +#[derive(Subcommand)] +enum Commands { + SetupBlake3Groth16(crate::setup_blake3_groth16::SetupBlake3Groth16), +} + +impl Commands { + fn run(&self) { + match self { + Commands::SetupBlake3Groth16(cmd) => cmd.run(), + } + } +} + +fn main() { + tracing_subscriber::fmt() + .with_env_filter(tracing_subscriber::filter::EnvFilter::from_default_env()) + .init(); + + Cli::parse().cmd.run(); +} diff --git a/xtask/src/setup_blake3_groth16.rs b/xtask/src/setup_blake3_groth16.rs new file mode 100644 index 000000000..8339b96cf --- /dev/null +++ b/xtask/src/setup_blake3_groth16.rs @@ -0,0 +1,159 @@ +// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use clap::Parser; +use rlimit::{INFINITY, Resource, setrlimit}; +use std::path::PathBuf; +use xshell::{Shell, cmd}; + +const CIRCOM_WITNESSCALC_URL: &str = "https://github.com/iden3/circom-witnesscalc.git"; +const CIRCOM_WITNESSCALC_COMMIT: &str = "b7ff0ffd9c72c8f60896ce131ee98a35aba96009"; // 0.2.1 + +const RISC0_TO_BITVM2_URL: &str = "https://github.com/ec2/risc0-to-bitvm2-boundless.git"; +const RISC0_TO_BITVM2_COMMIT: &str = "b47483ae7ff2bbfbf6d4448bac76aa26afc80e47"; + +const CIRCOMLIB_URL: &str = "https://github.com/iden3/circomlib.git"; +const CIRCOMLIB_COMMIT: &str = "35e54ea21da3e8762557234298dbb553c175ea8d"; + +#[derive(Debug, Parser)] +pub struct SetupBlake3Groth16 { + /// Directory to store Groth16 setup files + dir: PathBuf, +} + +const CIRCUIT_FILES: &[&str] = &[ + "blake3_common.circom", + "blake3_compression.circom", + "risc0.circom", + "stark_verify.circom", + "verify_for_guest.circom", +]; + +fn download_circuits(sh: &Shell) { + if !sh.path_exists("risc0-to-bitvm2") { + cmd!(sh, "git clone {RISC0_TO_BITVM2_URL} risc0-to-bitvm2") + .run() + .unwrap(); + } + { + let _cd = sh.push_dir("risc0-to-bitvm2"); + cmd!(sh, "git checkout {RISC0_TO_BITVM2_COMMIT}") + .run() + .unwrap(); + cmd!(sh, "git lfs pull").run().unwrap(); + } + sh.create_dir("groth16_proof").unwrap(); + sh.create_dir("groth16_proof/circuits").unwrap(); + // Copy circuit files every time because we modify stark_verify.circom + for file in CIRCUIT_FILES { + let src = format!("risc0-to-bitvm2/groth16_proof/circuits/{file}"); + let dst = format!("groth16_proof/circuits/{file}"); + sh.copy_file(&src, &dst).unwrap(); + } + // Delete the last line of stark_verify.circom so that we only use its template + cmd!( + sh, + "sed -i '$d' ./groth16_proof/circuits/stark_verify.circom" + ) + .run() + .unwrap(); +} + +impl SetupBlake3Groth16 { + pub fn run(&self) { + tracing::info!("Setting up Groth16 in {}", self.dir.display()); + setrlimit(Resource::STACK, INFINITY, INFINITY).unwrap(); + let sh = Shell::new().unwrap(); + + let setup_dir = sh.create_dir(&self.dir).unwrap(); + + let srs_path = setup_dir.join("verify_for_guest_final.zkey"); + + if !sh.path_exists(srs_path.as_path()) { + let zkey_path = srs_path.as_path().to_path_buf(); + let url = "https://static.testnet.citrea.xyz/conf/verify_for_guest_final.zkey"; + cmd!(sh, "curl -o {zkey_path} {url}").run().unwrap(); + } + + sh.change_dir(&setup_dir); + + download_circuits(&sh); + + if !sh.path_exists("circom-witnesscalc") { + cmd!(sh, "git clone {CIRCOM_WITNESSCALC_URL}") + .run() + .unwrap(); + } + + if !sh.path_exists("circomlib") { + cmd!(sh, "git clone {CIRCOMLIB_URL}").run().unwrap(); + } + { + let _cd = sh.push_dir("circomlib"); + cmd!(sh, "git checkout {CIRCOMLIB_COMMIT}").run().unwrap(); + } + + let build_circuit = "circom-witnesscalc/target/release/build-circuit"; + if !sh.path_exists(build_circuit) { + let _cd = sh.push_dir("circom-witnesscalc"); + cmd!(sh, "git checkout {CIRCOM_WITNESSCALC_COMMIT}") + .run() + .unwrap(); + cmd!(sh, "cargo build --release -p build-circuit") + .run() + .unwrap(); + } + + let stark_verify_circom = setup_dir.join("groth16_proof/circuits/verify_for_guest.circom"); + if !sh.path_exists(&stark_verify_circom) { + panic!( + "Run from top of workspace. Could not find: {}", + stark_verify_circom.display() + ); + } + + let graph_path = setup_dir.join("verify_for_guest_graph.bin"); + // verify_for_guest.circom -> verify_for_guest_graph.bin + if !sh.path_exists(graph_path.as_path()) { + cmd!(sh, "{build_circuit} {stark_verify_circom} {graph_path}") + .run() + .unwrap(); + } + + let verifier_sol_path = setup_dir.join("verifier.sol"); + if !sh.path_exists(verifier_sol_path.as_path()) { + tracing::info!( + "Exporting Solidity verifier to {}", + verifier_sol_path.display() + ); + // Export Solidity verifier + cmd!( + sh, + "snarkjs zkey export solidityverifier {srs_path} {verifier_sol_path}" + ) + .run() + .unwrap(); + } + + #[cfg(feature = "cuda")] + { + tracing::info!("Setting up Groth16 with CUDA"); + let mut setup_params = risc0_groth16_sys::SetupParams::new(&setup_dir).unwrap(); + setup_params.srs_path = srs_path.try_into().unwrap(); + + // stark_verify_final.zkey -> (fuzzed_msm_results.bin, preprocessed_coeffs.bin) + risc0_groth16_sys::setup(&setup_params).unwrap(); + } + } +} From 2e1061362a2a584f9627d399cb45fddc67d781d4 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 5 Nov 2025 22:42:25 -0500 Subject: [PATCH 17/86] update risc0-ethereum --- Cargo.lock | 4 +- Cargo.toml | 7 +- bento/crates/workflow/src/tasks/snark.rs | 3 +- .../src/contracts/bytecode.rs | 2 +- lib/risc0-ethereum | 2 +- shrink_bitvm2/src/lib.rs | 81 +++++++++---------- 6 files changed, 49 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index beb00ad01..3a3ea7d39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8638,7 +8638,7 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=2485d3a4ed6b7d0252198c1e8c08a8a63f230313#2485d3a4ed6b7d0252198c1e8c08a8a63f230313" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a5bf55285c5ea2e65de9c53421987449e2db046d#a5bf55285c5ea2e65de9c53421987449e2db046d" dependencies = [ "alloy-primitives 1.4.0", "alloy-sol-types", @@ -8862,7 +8862,7 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=2485d3a4ed6b7d0252198c1e8c08a8a63f230313#2485d3a4ed6b7d0252198c1e8c08a8a63f230313" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a5bf55285c5ea2e65de9c53421987449e2db046d#a5bf55285c5ea2e65de9c53421987449e2db046d" dependencies = [ "alloy", "alloy-primitives 1.4.0", diff --git a/Cargo.toml b/Cargo.toml index b21676bc9..87776acbf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,8 @@ members = [ "crates/slasher", "crates/test-utils", "crates/zkc", - "documentation/doc-test", "xtask", + "documentation/doc-test", + "xtask", ] [workspace.package] @@ -118,8 +119,8 @@ lto = true # codegen-units = 1 [patch.crates-io] -risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "2485d3a4ed6b7d0252198c1e8c08a8a63f230313" } -risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "2485d3a4ed6b7d0252198c1e8c08a8a63f230313" } +risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } +risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 1b8e542bb..742c2ee59 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -52,7 +52,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .context("failed to create p254 receipt")?; // TODO(ec2): Handle cpu vs gpu here? let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; - let seal_json = shrink_bitvm2::shrink_wrap(&p254_receipt, journal)?; + let seal_json = shrink_bitvm2::shrink_wrap(&p254_receipt, journal).context("shrink blake3 groth16 failed")?; ( shrink_bitvm2::finalize( journal, @@ -68,6 +68,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< } let key = &format!("{RECEIPT_BUCKET_DIR}/{bucket_dir}/{job_id}.bincode"); + // TODO(ec2): fixme // receipt // .verify_integrity_with_context(&agent.verifier_ctx) // .context("[BENTO-SNARK-005] Failed to verify compressed snark receipt")?; diff --git a/crates/boundless-market/src/contracts/bytecode.rs b/crates/boundless-market/src/contracts/bytecode.rs index 22c350df9..a301b7cbd 100644 --- a/crates/boundless-market/src/contracts/bytecode.rs +++ b/crates/boundless-market/src/contracts/bytecode.rs @@ -52,7 +52,7 @@ alloy::sol! { } alloy::sol! { - #[sol(rpc, bytecode = "6101808060405234610a525760408161159380380380916100208285610a56565b833981010312610a5257805160209182015191600882811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169083901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08290526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa156108de575f5191600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b17915f610120526060610120526040516103106101205182610a56565b6002815261012051601f190161010081905236602083013760205f604051828101907f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356982527f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c60408201526040815261038c6101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f516103b282610a8d565b5260205f604051828101907f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa82527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb12646040820152604081526104176101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f5161043d82610a9a565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108de575f519260205f604051828101907f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e282527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266040820152604081526104d96101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f519460205f604051828101907f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c82527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab60408201527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a7610120518201527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86080820152608081526105a760a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519360205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b610120518201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261067560a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f604051828101907f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d82527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af2260408201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f48610120518201527f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee60808201526080815261074360a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108de575f80516101405260206101605297885b8751808b1015610947575f19810190808211610933578b90035f190190811161093357885181101561091f57610160519060051b89010151604051916107ee6101205184610a56565b60028352610160518301916101005136843761080984610a8d565b5261081383610a9a565b526040516108246101605182610a56565b5f8152601f196101605101366101605183013782519161ffff831161090757604080516101405161016051820152945185939291840191905f905b8082106108e95750505092816108ab94600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a56565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108de5760015f519901986107a5565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085f565b826306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8a60405196610160518801958652604088015261012051870152608086015260a085015260c0840152600560f81b60e084015260c2835261098e60e284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f91825190604051946101605186019384526040860152610120518501526080840152600360f81b60a0840152608283526109ea60a284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f516001600160e01b03191660e052604051610ae89081610aab8239608051816106a6015260a05181610661015260c05181610290015260e05181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7957604052565b634e487b7160e01b5f52604160045260245ffd5b80511561091f5760200190565b80516001101561091f576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107c1565b6106d6565b610691565b61064c565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ba565b906108e5565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108c8565b810190610962565b80516101e66040848401519301519460246101c6866107b1565b91013581526040516343753b4d60e01b8152958694859460048601610a53565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610790565b8101906109ed565b5f6101f9565b503d610220565b610ad0565b61025461017084610276946108ba565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d75760405190610380820160405261010435917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001831015610644576020610360927f0a22cacd7e87b85c3cd035641338c9f41a9492765db7a2d59bbdcc32911200ee947f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0ecf6f8bd15c247a360bd40aad38aca3c05122d867574d6d9fa4578d62a2356987526103de828801947f170fc95a0b81b960145a374c5441fda1713baa2c68fe5d82906abe3d17a78e3c86528861082e565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e26101408501527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266101608501527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c6101808501527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab6101a08501527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a76101c08501527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec86101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2c0859cec32a8ac8272b87c11cf949b67388d6f48c43a92abe715a622d72cd7d6103008201527f2c0f395435a8745c2512fb6dac5146577d65f3079c56d308065491783ec4af226103208201527f01ff15f2902311b2ef58617c7d89079bf87a7c9502a47ea310a81d5236a29f4861034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b5f805260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761078b57604052565b61075c565b90601f801991011681019081106001600160401b0382111761078b57604052565b906107bf6040519283610790565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761078b57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b604051917f2cb74a0c83341e68f50b891a4a87fb9dc4b39e6a161afd12175930c503f1d3fa83527f0727afd0d191e04d7ebd951bb440668a5756d6bc6f4abbb0cca6bb2a94fb126460208401526040830190815260408360608160076107cf195a01fa1561064457815190526020810151606083015260409160809060066107cf195a01fa1561064457565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610900575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610936604084610790565b8290604081019283116100d757905b8282106109525750505090565b8135815260209182019101610945565b610100818303126100d7576040519161097a83610770565b610984818361091b565b835280605f830112156100d75760409182516109a08482610790565b8060c08301928484116100d75785809101915b8483106109d35750505060208501526109cc919061091b565b9082015290565b6020906109e0878561091b565b81520191019085906109b3565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a1657505050565b6020806001928551815201930191019091610a09565b905f905b60018210610a3d57505050565b6020806001928551815201930191019091610a30565b919493929094610a6883610120810197610a05565b5f604084015b60028210610a965750505081610a8f6101009260c06107bf96950190610a05565b0190610a2c565b82515f90825b60028310610aba575050506020604060019201930191019091610a6e565b6020806001928451815201920192019190610a9c565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] + #[sol(rpc, bytecode = "6101808060405234610a525760408161159380380380916100208285610a56565b833981010312610a5257805160209182015191600882811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169083901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08290526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa156108de575f5191600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b17915f610120526060610120526040516103106101205182610a56565b6002815261012051601f190161010081905236602083013760205f604051828101907f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459382527f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b160408201526040815261038c6101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f516103b282610a8d565b5260205f604051828101907f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a282527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a16040820152604081526104176101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f5161043d82610a9a565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108de575f519260205f604051828101907f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c782527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026040820152604081526104d96101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f519460205f604051828101907f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db82527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d24460408201527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a610120518201527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296080820152608081526105a760a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519360205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b610120518201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261067560a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f604051828101907f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca82527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d60408201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b610120518201527f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f60808201526080815261074360a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108de575f80516101405260206101605297885b8751808b1015610947575f19810190808211610933578b90035f190190811161093357885181101561091f57610160519060051b89010151604051916107ee6101205184610a56565b60028352610160518301916101005136843761080984610a8d565b5261081383610a9a565b526040516108246101605182610a56565b5f8152601f196101605101366101605183013782519161ffff831161090757604080516101405161016051820152945185939291840191905f905b8082106108e95750505092816108ab94600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a56565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108de5760015f519901986107a5565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085f565b826306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8a60405196610160518801958652604088015261012051870152608086015260a085015260c0840152600560f81b60e084015260c2835261098e60e284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f91825190604051946101605186019384526040860152610120518501526080840152600360f81b60a0840152608283526109ea60a284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f516001600160e01b03191660e052604051610ae89081610aab8239608051816106a6015260a05181610661015260c05181610290015260e05181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7957604052565b634e487b7160e01b5f52604160045260245ffd5b80511561091f5760200190565b80516001101561091f576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107c1565b6106d6565b610691565b61064c565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ba565b906108e5565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108c8565b810190610962565b80516101e66040848401519301519460246101c6866107b1565b91013581526040516343753b4d60e01b8152958694859460048601610a53565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610790565b8101906109ed565b5f6101f9565b503d610220565b610ad0565b61025461017084610276946108ba565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d75760405190610380820160405261010435917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001831015610644576020610360927f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f947f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459387526103de828801947f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b186528861082e565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c76101408501527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026101608501527f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db6101808501527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d2446101a08501527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a6101c08501527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca6103008201527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d6103208201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b61034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b5f805260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761078b57604052565b61075c565b90601f801991011681019081106001600160401b0382111761078b57604052565b906107bf6040519283610790565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761078b57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b604051917f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a283527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a160208401526040830190815260408360608160076107cf195a01fa1561064457815190526020810151606083015260409160809060066107cf195a01fa1561064457565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610900575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610936604084610790565b8290604081019283116100d757905b8282106109525750505090565b8135815260209182019101610945565b610100818303126100d7576040519161097a83610770565b610984818361091b565b835280605f830112156100d75760409182516109a08482610790565b8060c08301928484116100d75785809101915b8483106109d35750505060208501526109cc919061091b565b9082015290565b6020906109e0878561091b565b81520191019085906109b3565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a1657505050565b6020806001928551815201930191019091610a09565b905f905b60018210610a3d57505050565b6020806001928551815201930191019091610a30565b919493929094610a6883610120810197610a05565b5f604084015b60028210610a965750505081610a8f6101009260c06107bf96950190610a05565b0190610a2c565b82515f90825b60028310610aba575050506020604060019201930191019091610a6e565b6020806001928451815201920192019190610a9c565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] contract RiscZeroBitvm2Groth16Verifier { constructor(bytes32 control_root, bytes32 bn254_control_id) {} } diff --git a/lib/risc0-ethereum b/lib/risc0-ethereum index 2485d3a4e..a5bf55285 160000 --- a/lib/risc0-ethereum +++ b/lib/risc0-ethereum @@ -1 +1 @@ -Subproject commit 2485d3a4ed6b7d0252198c1e8c08a8a63f230313 +Subproject commit a5bf55285c5ea2e65de9c53421987449e2db046d diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs index 529021b65..d1101c7f4 100644 --- a/shrink_bitvm2/src/lib.rs +++ b/shrink_bitvm2/src/lib.rs @@ -6,7 +6,7 @@ use risc0_zkvm::{MaybePruned, Receipt, ReceiptClaim, SuccinctReceipt}; #[cfg(feature = "prove")] use { - anyhow::Context, risc0_zkvm::Groth16Receipt, risc0_zkvm::sha::Digestible, std::path::Path, + anyhow::Context, risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt, std::path::Path, tempfile::tempdir, }; @@ -55,9 +55,8 @@ pub fn finalize( receipt_claim: MaybePruned, seal: &Groth16Seal, ) -> Result { - let receipt_claim_value = receipt_claim - .as_value() - .context("receipt claim must not be pruned")?; + let receipt_claim_value = + receipt_claim.as_value().context("receipt claim must not be pruned")?; let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); verify::verify(seal, blake3_claim_digest)?; @@ -65,10 +64,8 @@ pub fn finalize( let verifier_parameters = crate::verify::verifier_parameters(); let groth16_receipt = Groth16Receipt::new(seal.to_vec(), receipt_claim, verifier_parameters.digest()); - let receipt = Receipt::new( - risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), - journal.to_vec(), - ); + let receipt = + Receipt::new(risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), journal.to_vec()); Ok(receipt) } @@ -103,37 +100,37 @@ pub fn finalize( ); } -#[cfg(test)] -mod tests { - use super::*; - use guest::ECHO_ELF; - #[cfg(feature = "prove")] - use risc0_zkvm::{ExecutorEnv, ProverOpts, default_prover}; - #[cfg(feature = "prove")] - #[test] - fn test_succinct_to_bitvm2() { - use guest::ECHO_ID; - - let input = [3u8; 32]; - - let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); - - // Obtain the default prover. - let prover = default_prover(); - - // Produce a receipt by proving the specified ELF binary. - let receipt = prover - .prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()) - .unwrap() - .receipt; - let succinct_receipt = receipt.inner.succinct().unwrap(); - - let blake3_g16_seal_json = succinct_to_bitvm2(succinct_receipt, input).unwrap(); - let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); - let blake3_g16_seal: Groth16Seal = blake3_g16_seal_json.try_into().unwrap(); - verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); - - let _ = - finalize(input, receipt.claim().unwrap(), &blake3_g16_seal).expect("finalize failed"); - } -} +// #[cfg(test)] +// mod tests { +// use super::*; +// use guest::ECHO_ELF; +// #[cfg(feature = "prove")] +// use risc0_zkvm::{ExecutorEnv, ProverOpts, default_prover}; +// #[cfg(feature = "prove")] +// #[test] +// fn test_succinct_to_bitvm2() { +// use guest::ECHO_ID; + +// let input = [3u8; 32]; + +// let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); + +// // Obtain the default prover. +// let prover = default_prover(); + +// // Produce a receipt by proving the specified ELF binary. +// let receipt = prover +// .prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()) +// .unwrap() +// .receipt; +// let succinct_receipt = receipt.inner.succinct().unwrap(); + +// let blake3_g16_seal_json = succinct_to_bitvm2(succinct_receipt, input).unwrap(); +// let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); +// let blake3_g16_seal: Groth16Seal = blake3_g16_seal_json.try_into().unwrap(); +// verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); + +// let _ = +// finalize(input, receipt.claim().unwrap(), &blake3_g16_seal).expect("finalize failed"); +// } +// } From c12b0e7fd6bf728df95a6ac10203e2c918ec27dc Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 5 Nov 2025 23:00:21 -0500 Subject: [PATCH 18/86] bootstrap solidity contracts --- Cargo.lock | 4 + shrink_bitvm2/src/verify.rs | 51 ++-------- xtask/Cargo.toml | 12 ++- xtask/src/bootstrap_blake3_groth16.rs | 140 ++++++++++++++++++++++++++ xtask/src/main.rs | 3 + xtask/src/setup_blake3_groth16.rs | 58 +++-------- 6 files changed, 180 insertions(+), 88 deletions(-) create mode 100644 xtask/src/bootstrap_blake3_groth16.rs diff --git a/Cargo.lock b/Cargo.lock index 3a3ea7d39..dc913a9b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12335,6 +12335,10 @@ name = "xtask" version = "1.1.0" dependencies = [ "clap", + "hex", + "memmap2 0.9.8", + "regex", + "risc0-circuit-recursion", "risc0-groth16-sys", "rlimit", "tracing", diff --git a/shrink_bitvm2/src/verify.rs b/shrink_bitvm2/src/verify.rs index 7b46b89f8..41366c9ea 100644 --- a/shrink_bitvm2/src/verify.rs +++ b/shrink_bitvm2/src/verify.rs @@ -1,4 +1,4 @@ -use anyhow::{Result, ensure}; +use anyhow::{ensure, Result}; use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; use ark_ff::PrimeField; use ark_serialize::CanonicalSerialize; @@ -43,7 +43,6 @@ const IC0_Y: &str = "20069629286434534534516684991063672335613842540347999544849 const IC1_X: &str = "19282603452922066135228857769519044667044696173320493211119861249451600114594"; const IC1_Y: &str = "11966256187809052800087108088094647243345273965264062329687482664981607072161"; - /// Verifies the soundness of a Groth16Seal against the BLAKE3 claim digest. pub fn verify(seal: &Groth16Seal, blake3_claim_digest: impl Into) -> Result<()> { let ark_proof = from_seal(&seal.to_vec()); @@ -72,10 +71,7 @@ pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { pub fn verifier_parameters() -> risc0_zkvm::Groth16ReceiptVerifierParameters { let vk: risc0_groth16::VerifyingKey = get_r0_verifying_key(); - risc0_zkvm::Groth16ReceiptVerifierParameters { - verifying_key: vk, - ..Default::default() - } + risc0_zkvm::Groth16ReceiptVerifierParameters { verifying_key: vk, ..Default::default() } } fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { @@ -109,42 +105,21 @@ fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { } pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { - let alpha_g1 = G1Affine::new( - Fq::from_str(ALPHA_X).unwrap(), - Fq::from_str(ALPHA_Y).unwrap(), - ); + let alpha_g1 = G1Affine::new(Fq::from_str(ALPHA_X).unwrap(), Fq::from_str(ALPHA_Y).unwrap()); let beta_g2 = G2Affine::new( - Fq2::new( - Fq::from_str(BETA_X2).unwrap(), - Fq::from_str(BETA_X1).unwrap(), - ), - Fq2::new( - Fq::from_str(BETA_Y2).unwrap(), - Fq::from_str(BETA_Y1).unwrap(), - ), + Fq2::new(Fq::from_str(BETA_X2).unwrap(), Fq::from_str(BETA_X1).unwrap()), + Fq2::new(Fq::from_str(BETA_Y2).unwrap(), Fq::from_str(BETA_Y1).unwrap()), ); let gamma_g2 = G2Affine::new( - Fq2::new( - Fq::from_str(GAMMA_X2).unwrap(), - Fq::from_str(GAMMA_X1).unwrap(), - ), - Fq2::new( - Fq::from_str(GAMMA_Y2).unwrap(), - Fq::from_str(GAMMA_Y1).unwrap(), - ), + Fq2::new(Fq::from_str(GAMMA_X2).unwrap(), Fq::from_str(GAMMA_X1).unwrap()), + Fq2::new(Fq::from_str(GAMMA_Y2).unwrap(), Fq::from_str(GAMMA_Y1).unwrap()), ); let delta_g2 = G2Affine::new( - Fq2::new( - Fq::from_str(DELTA_X2).unwrap(), - Fq::from_str(DELTA_X1).unwrap(), - ), - Fq2::new( - Fq::from_str(DELTA_Y2).unwrap(), - Fq::from_str(DELTA_Y1).unwrap(), - ), + Fq2::new(Fq::from_str(DELTA_X2).unwrap(), Fq::from_str(DELTA_X1).unwrap()), + Fq2::new(Fq::from_str(DELTA_Y2).unwrap(), Fq::from_str(DELTA_Y1).unwrap()), ); let gamma_abc_g1 = vec![ @@ -152,13 +127,7 @@ pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { G1Affine::new(Fq::from_str(IC1_X).unwrap(), Fq::from_str(IC1_Y).unwrap()), ]; - ark_groth16::VerifyingKey { - alpha_g1, - beta_g2, - gamma_g2, - delta_g2, - gamma_abc_g1, - } + ark_groth16::VerifyingKey { alpha_g1, beta_g2, gamma_g2, delta_g2, gamma_abc_g1 } } #[cfg(test)] diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index d735bff20..e5b94a1f6 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -7,14 +7,16 @@ repository.workspace = true [dependencies] clap = { version = "4.5", features = ["derive", "env"] } +hex = { workspace = true } rlimit = "0.10.2" -risc0-groth16-sys = { workspace = true, optional = true, features = [ - "cuda", - "setup", -] } +risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } tracing = { workspace = true } -tracing-subscriber = {version = "0.3", features = ["env-filter"] } +tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" +memmap2 = { version = "0.9", optional = true } +regex = "1" +# risc0-binfmt = { workspace = true } +risc0-circuit-recursion = { workspace = true } [features] default = [] diff --git a/xtask/src/bootstrap_blake3_groth16.rs b/xtask/src/bootstrap_blake3_groth16.rs new file mode 100644 index 000000000..496f66b91 --- /dev/null +++ b/xtask/src/bootstrap_blake3_groth16.rs @@ -0,0 +1,140 @@ +// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0, or the MIT license , at your option. This file may not be +// copied, modified, or distributed except according to those terms. +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT + +use std::{fs, path::Path, process::Command}; + +use clap::Parser; +use regex::Regex; +use risc0_circuit_recursion::control_id::{ALLOWED_CONTROL_ROOT, BN254_IDENTITY_CONTROL_ID}; + +#[derive(Debug, Parser)] +pub struct BootstrapBlake3Groth16 { + /// risc0-ethereum repository path + #[arg(long, env)] + risc0_ethereum_path: String, + + /// blake3-groth16 setup directory + #[arg(long, env)] + blake3_groth16_setup_dir: String, +} + +const SOL_HEADER: &str = r#"// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +// This file is automatically generated by: +// cargo xtask bootstrap-groth16 + +"#; + +const SOLIDITY_VERIFIER_TARGET: &str = "contracts/src/bitvm/Groth16Verifier.sol"; +const SOLIDITY_CONTROL_ID_PATH: &str = "contracts/src/bitvm/ControlID.sol"; +const RUST_VERIFIER_PATH: &str = "shrink_bitvm2/src/verify.rs"; + +impl BootstrapBlake3Groth16 { + pub fn run(&self) { + let current_dir = std::env::current_dir().unwrap(); + let blake3_setup_path = current_dir.join(&self.blake3_groth16_setup_dir); + let risc0_ethereum_path = current_dir.join(&self.risc0_ethereum_path); + bootstrap_verifying_key(&blake3_setup_path, &risc0_ethereum_path); + bootstrap_control_id(&risc0_ethereum_path); + } +} + +fn bootstrap_verifying_key(blake3_setup_path: &Path, risc0_ethereum_path: &Path) { + let solidity_verifier_target = risc0_ethereum_path.join(SOLIDITY_VERIFIER_TARGET); + let solidity_verifier_source = blake3_setup_path.join("verifier.sol"); + std::fs::copy(&solidity_verifier_source, solidity_verifier_target).unwrap(); + let solidity_code = fs::read_to_string(solidity_verifier_source).unwrap(); + let mut rust_code = fs::read_to_string(RUST_VERIFIER_PATH).unwrap(); + + let solidity_constants = [ + "alphax", "alphay", "betax1", "betax2", "betay1", "betay2", "gammax1", "gammax2", + "gammay1", "gammay2", "deltax1", "deltax2", "deltay1", "deltay2", "IC0x", "IC0y", "IC1x", + "IC1y", + ]; + + let rust_constants = [ + "ALPHA_X", "ALPHA_Y", "BETA_X1", "BETA_X2", "BETA_Y1", "BETA_Y2", "GAMMA_X1", "GAMMA_X2", + "GAMMA_Y1", "GAMMA_Y2", "DELTA_X1", "DELTA_X2", "DELTA_Y1", "DELTA_Y2", "IC0_X", "IC0_Y", + "IC1_X", "IC1_Y", + ]; + + for (i, constant) in solidity_constants.into_iter().enumerate() { + let re = Regex::new(&format!(r"uint256 constant\s+{constant}\s*=\s*(\d+);")).unwrap(); + if let Some(caps) = re.captures(&solidity_code) { + let rust_re = + Regex::new(&format!("const {}: &str =[\\r\\n\\s]*\"\\d+\";", rust_constants[i])) + .unwrap(); + rust_code = rust_re + .replace( + &rust_code, + &format!("const {}: &str = \"{}\";", rust_constants[i], &caps[1]), + ) + .to_string(); + } else { + println!("{constant} not found"); + } + } + + fs::write(RUST_VERIFIER_PATH, rust_code).unwrap(); + + // Use rustfmt to format the file. + Command::new("rustfmt") + .arg(RUST_VERIFIER_PATH) + .status() + .unwrap_or_else(|_| panic!("failed to format {RUST_VERIFIER_PATH}")); +} + +fn bootstrap_control_id(risc0_ethereum_path: &Path) { + const LIB_HEADER: &str = r#"pragma solidity ^0.8.9; + + library ControlID { +"#; + let control_root = + format!(r#"bytes32 public constant CONTROL_ROOT = hex"{ALLOWED_CONTROL_ROOT}";"#); + let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; + // NOTE: The solidity verifier interprets it as a uint256 and expects the opposite byte order. + bn254_control_id.as_mut_bytes().reverse(); + let bn254_control_id = format!( + r#"// NOTE: This has the opposite byte order to the value in the risc0 repository.{}bytes32 public constant BN254_CONTROL_ID = hex"{}";"#, + "\n", + hex::encode(bn254_control_id) + ); + let content = &format!("{SOL_HEADER}{LIB_HEADER}\n{control_root}\n{bn254_control_id}\n}}"); + let solidity_control_id_path = risc0_ethereum_path.join(SOLIDITY_CONTROL_ID_PATH); + fs::write(&solidity_control_id_path, content).unwrap_or_else(|_| { + panic!("failed to save changes to {}", solidity_control_id_path.display()) + }); + + // Use forge fmt to format the file. + Command::new("forge") + .arg("fmt") + .arg(solidity_control_id_path.as_os_str()) + .status() + .unwrap_or_else(|_| panic!("failed to format {}", solidity_control_id_path.display())); +} diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 867fd65e4..1e2025fe3 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -1,5 +1,6 @@ use clap::{Parser, Subcommand}; +mod bootstrap_blake3_groth16; mod setup_blake3_groth16; #[derive(Parser)] @@ -11,12 +12,14 @@ struct Cli { #[derive(Subcommand)] enum Commands { SetupBlake3Groth16(crate::setup_blake3_groth16::SetupBlake3Groth16), + BootstrapBlake3Groth16(crate::bootstrap_blake3_groth16::BootstrapBlake3Groth16), } impl Commands { fn run(&self) { match self { Commands::SetupBlake3Groth16(cmd) => cmd.run(), + Commands::BootstrapBlake3Groth16(cmd) => cmd.run(), } } } diff --git a/xtask/src/setup_blake3_groth16.rs b/xtask/src/setup_blake3_groth16.rs index 8339b96cf..5bea05c81 100644 --- a/xtask/src/setup_blake3_groth16.rs +++ b/xtask/src/setup_blake3_groth16.rs @@ -13,9 +13,9 @@ // limitations under the License. use clap::Parser; -use rlimit::{INFINITY, Resource, setrlimit}; +use rlimit::{setrlimit, Resource, INFINITY}; use std::path::PathBuf; -use xshell::{Shell, cmd}; +use xshell::{cmd, Shell}; const CIRCOM_WITNESSCALC_URL: &str = "https://github.com/iden3/circom-witnesscalc.git"; const CIRCOM_WITNESSCALC_COMMIT: &str = "b7ff0ffd9c72c8f60896ce131ee98a35aba96009"; // 0.2.1 @@ -42,15 +42,11 @@ const CIRCUIT_FILES: &[&str] = &[ fn download_circuits(sh: &Shell) { if !sh.path_exists("risc0-to-bitvm2") { - cmd!(sh, "git clone {RISC0_TO_BITVM2_URL} risc0-to-bitvm2") - .run() - .unwrap(); + cmd!(sh, "git clone {RISC0_TO_BITVM2_URL} risc0-to-bitvm2").run().unwrap(); } { let _cd = sh.push_dir("risc0-to-bitvm2"); - cmd!(sh, "git checkout {RISC0_TO_BITVM2_COMMIT}") - .run() - .unwrap(); + cmd!(sh, "git checkout {RISC0_TO_BITVM2_COMMIT}").run().unwrap(); cmd!(sh, "git lfs pull").run().unwrap(); } sh.create_dir("groth16_proof").unwrap(); @@ -62,12 +58,7 @@ fn download_circuits(sh: &Shell) { sh.copy_file(&src, &dst).unwrap(); } // Delete the last line of stark_verify.circom so that we only use its template - cmd!( - sh, - "sed -i '$d' ./groth16_proof/circuits/stark_verify.circom" - ) - .run() - .unwrap(); + cmd!(sh, "sed -i '$d' ./groth16_proof/circuits/stark_verify.circom").run().unwrap(); } impl SetupBlake3Groth16 { @@ -82,7 +73,7 @@ impl SetupBlake3Groth16 { if !sh.path_exists(srs_path.as_path()) { let zkey_path = srs_path.as_path().to_path_buf(); - let url = "https://static.testnet.citrea.xyz/conf/verify_for_guest_final.zkey"; + let url = "https://static.mainnet.citrea.xyz/verify_for_guest_final.zkey"; cmd!(sh, "curl -o {zkey_path} {url}").run().unwrap(); } @@ -91,9 +82,7 @@ impl SetupBlake3Groth16 { download_circuits(&sh); if !sh.path_exists("circom-witnesscalc") { - cmd!(sh, "git clone {CIRCOM_WITNESSCALC_URL}") - .run() - .unwrap(); + cmd!(sh, "git clone {CIRCOM_WITNESSCALC_URL}").run().unwrap(); } if !sh.path_exists("circomlib") { @@ -107,43 +96,28 @@ impl SetupBlake3Groth16 { let build_circuit = "circom-witnesscalc/target/release/build-circuit"; if !sh.path_exists(build_circuit) { let _cd = sh.push_dir("circom-witnesscalc"); - cmd!(sh, "git checkout {CIRCOM_WITNESSCALC_COMMIT}") - .run() - .unwrap(); - cmd!(sh, "cargo build --release -p build-circuit") - .run() - .unwrap(); + cmd!(sh, "git checkout {CIRCOM_WITNESSCALC_COMMIT}").run().unwrap(); + cmd!(sh, "cargo build --release -p build-circuit").run().unwrap(); } let stark_verify_circom = setup_dir.join("groth16_proof/circuits/verify_for_guest.circom"); if !sh.path_exists(&stark_verify_circom) { - panic!( - "Run from top of workspace. Could not find: {}", - stark_verify_circom.display() - ); + panic!("Run from top of workspace. Could not find: {}", stark_verify_circom.display()); } let graph_path = setup_dir.join("verify_for_guest_graph.bin"); // verify_for_guest.circom -> verify_for_guest_graph.bin if !sh.path_exists(graph_path.as_path()) { - cmd!(sh, "{build_circuit} {stark_verify_circom} {graph_path}") - .run() - .unwrap(); + cmd!(sh, "{build_circuit} {stark_verify_circom} {graph_path}").run().unwrap(); } - let verifier_sol_path = setup_dir.join("verifier.sol"); + let verifier_sol_path = setup_dir.join("verifier.sol"); if !sh.path_exists(verifier_sol_path.as_path()) { - tracing::info!( - "Exporting Solidity verifier to {}", - verifier_sol_path.display() - ); + tracing::info!("Exporting Solidity verifier to {}", verifier_sol_path.display()); // Export Solidity verifier - cmd!( - sh, - "snarkjs zkey export solidityverifier {srs_path} {verifier_sol_path}" - ) - .run() - .unwrap(); + cmd!(sh, "snarkjs zkey export solidityverifier {srs_path} {verifier_sol_path}") + .run() + .unwrap(); } #[cfg(feature = "cuda")] From dd71c89a01450e058054cf97ec3771bdee9cae48 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 09:51:49 -0500 Subject: [PATCH 19/86] readme --- shrink_bitvm2/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 shrink_bitvm2/README.md diff --git a/shrink_bitvm2/README.md b/shrink_bitvm2/README.md new file mode 100644 index 000000000..1bc147496 --- /dev/null +++ b/shrink_bitvm2/README.md @@ -0,0 +1,26 @@ +# Boundless BLAKE3 Groth16 + +Boundless and Risc0 supports the standard Risc0 Groth16 compression which outputs the ReceiptClaim which can be hashed using SHA2 to get the claim digest. This is not ideal for environments which SHA2 hashing may be costly or impossible. + +The Chainway Labs team has written a new Groth16 circuit which has a single public output which is the BLAKE3 claim digest of a Risc0 execution. + +This repo contains components for creating such proofs and is used in Boundless to enable this type of compression. + +We use circom-witnesscalc to do witness generation and either rapidsnark or Risc0's cuda enabled Groth16 prover to generate proofs. + +## Setup + +Setting up involves downloading `circomlib`, `circom-witnesscalc`, the SRS file, and the circuits which live in a [separate repo](https://github.com/chainwayxyz/risc0-to-bitvm2) maintained by Chainway Labs. +Because we are using circom-witnesscalc, we need to perform a setup to generate the witness graph as well. All of this can be done by running + +``` +cargo xtask-blake3-groth16 +``` + +### Building Rapidsnark + +If using rapidsnark for CPU proving instead of CUDA, you will need to need to manually build rapidsnark. This crate will look for the `rapidsnark` binary in your PATH. + +## Proving + +The prover looks for an environment variable `BLAKE3_GROTH16_SETUP_DIR` which is the directory in which we output the artifacts from the setup step. The Bento docker contains will also look for this env variable, so before running a prover, make sure to set that environment variable. From 3c10bd85d7d9b6d9fa17ec4051fbba67b77aad9d Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 13:37:32 -0500 Subject: [PATCH 20/86] fix default prover and fix test --- Cargo.lock | 5 + crates/boundless-cli/src/lib.rs | 17 --- crates/broker/src/provers/default.rs | 30 +----- shrink_bitvm2/Cargo.toml | 9 +- shrink_bitvm2/src/lib.rs | 155 +++++++++++++++++++-------- 5 files changed, 124 insertions(+), 92 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dc913a9b3..361fe1f1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9955,9 +9955,12 @@ dependencies = [ "ark-ff 0.5.0", "ark-groth16", "ark-serialize 0.5.0", + "bincode", "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "circom-witnesscalc", "crypto-bigint 0.5.2", + "guest-util", "hex", "num-bigint 0.4.6", "num-traits", @@ -9971,6 +9974,8 @@ dependencies = [ "serde_json", "sha2 0.10.9", "tempfile", + "test-log", + "tokio", "tracing", "wtns-file", ] diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index f5cb80923..b16267b1d 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -354,23 +354,6 @@ impl OrderFulfiller { Ok(proof_id) } - // pub(crate) async fn shrink_bitvm2(&self, succinct_receipt: &Receipt) -> Result { - // let prover = risc0_zkvm::default_prover(); - // if is_dev_mode() { - // return Ok(succinct_receipt.clone()); - // } - // if prover.get_name() == "bonsai" { - // return shrink_bitvm2_with_bonsai(succinct_receipt).await; - // } - // let receipt = succinct_receipt.clone(); - // tokio::task::spawn_blocking(move || { - // let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; - // let seal = shrink_bitvm2::succinct_to_bitvm2(receipt.inner.succinct()?, journal)?; - // shrink_bitvm2::finalize(journal, receipt.claim()?, &seal.try_into()?) - // }) - // .await? - // } - // Finalizes the set builder. pub(crate) async fn finalize( &self, diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index d51f55ddc..8fd45d67e 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -412,34 +412,8 @@ impl Prover for DefaultProver { let proof_id = format!("snark_{}", Uuid::new_v4()); self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); - tracing::debug!("shrink bitvm2 identity_p254 for proof {proof_id}"); - - let compress_result: Result = tokio::task::spawn_blocking(move || { - tracing::debug!( - "r0vm does not currently support shrink_bitvm2, compressing will be done locally" - ); - let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into().map_err(|_| { - ProverError::UnexpectedError(anyhow!( - "Failed to convert journal to [u8; 32] as expected for blake3 groth16", - )) - })?; - - let succinct_receipt = receipt.inner.succinct().unwrap().clone(); - let seal = shrink_bitvm2::succinct_to_bitvm2(&succinct_receipt, journal) - .map_err(|e| ProverError::UnexpectedError(anyhow!(e)))?; - shrink_bitvm2::finalize( - journal, - receipt.claim().map_err(|e| ProverError::UnexpectedError(anyhow!(e)))?, - &seal.try_into().map_err(|_| { - ProverError::UnexpectedError(anyhow!( - "Failed to convert blake3 groth16 seal from json" - )) - })?, - ) - .map_err(|e| ProverError::UnexpectedError(anyhow!(e))) - }) - .await - .unwrap(); + let compress_result = + shrink_bitvm2::compress_bitvm2(&receipt).await.map_err(ProverError::from); let compressed_bytes = compress_result .as_ref() diff --git a/shrink_bitvm2/Cargo.toml b/shrink_bitvm2/Cargo.toml index 7bf8f32a2..802969faa 100644 --- a/shrink_bitvm2/Cargo.toml +++ b/shrink_bitvm2/Cargo.toml @@ -16,7 +16,9 @@ ark-bn254 = "0.5.0" ark-ff = "0.5.0" ark-groth16 = { version = "0.5.0" } ark-serialize = "0.5.0" +bincode.workspace = true blake3 = { version = "1.5.0" } +bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } circom-witnesscalc = { version = "0.2.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } @@ -28,10 +30,15 @@ risc0-circuit-recursion = { workspace = true, default-features = false } risc0-groth16 = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true } risc0-zkp = { workspace = true, default-features = false } -risc0-zkvm.workspace = true +risc0-zkvm = { workspace = true, features = ["bonsai"] } serde.workspace = true serde_json.workspace = true sha2.workspace = true tempfile.workspace = true +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } tracing.workspace = true wtns-file = { version = "0.1.5" } + +[dev-dependencies] +guest-util = { workspace = true } +test-log = { workspace = true } diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs index d1101c7f4..0284381a1 100644 --- a/shrink_bitvm2/src/lib.rs +++ b/shrink_bitvm2/src/lib.rs @@ -1,14 +1,11 @@ -use anyhow::Result; +use anyhow::{Context, Result}; pub use receipt_claim::*; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; -use risc0_zkvm::{MaybePruned, Receipt, ReceiptClaim, SuccinctReceipt}; +use risc0_zkvm::{default_prover, MaybePruned, ProverOpts, Receipt, ReceiptClaim, SuccinctReceipt}; #[cfg(feature = "prove")] -use { - anyhow::Context, risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt, std::path::Path, - tempfile::tempdir, -}; +use {risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt, std::path::Path, tempfile::tempdir}; #[cfg(feature = "prove")] mod prove; @@ -23,12 +20,13 @@ pub fn succinct_to_bitvm2( succinct_receipt: &SuccinctReceipt, journal: [u8; 32], ) -> Result { - let p254_receipt: SuccinctReceipt = - risc0_zkvm::recursion::identity_p254(succinct_receipt).unwrap(); + let p254_receipt = risc0_zkvm::get_prover_server(&ProverOpts::default())? + .identity_p254(succinct_receipt) + .context("failed to create p254 receipt")?; shrink_wrap(&p254_receipt, journal) } -/// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. +/// Creates a BLAKE3 Groth16 proof from a identity p254 Risc0 SuccinctReceipt. #[cfg(feature = "prove")] pub fn shrink_wrap( p254_receipt: &SuccinctReceipt, @@ -69,13 +67,77 @@ pub fn finalize( Ok(receipt) } +/// Compresses a Receipt into a BLAKE3 Groth16 Receipt. +pub async fn compress_bitvm2(receipt: &Receipt) -> Result { + tracing::debug!("Compressing receipt to shrink_bitvm2"); + if is_dev_mode() { + return Ok(receipt.clone()); + } + if default_prover().get_name() == "bonsai" { + let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; + tracing::info!("Using bonsai to compress to shrink_bitvm2"); + return compress_bitvm2_with_bonsai(&client, receipt).await; + } + let receipt = receipt.clone(); + + tokio::task::spawn_blocking(move || { + let succinct_receipt = default_prover().compress(&ProverOpts::succinct(), &receipt)?; + tracing::debug!("Succinct receipt created, proceeding to convert to shrink_bitvm2"); + let receipt = succinct_receipt.clone(); + let journal: [u8; 32] = receipt + .journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for shrink blake3")?; + let seal = succinct_to_bitvm2( + receipt + .inner + .succinct() + .context("compressing to blake3 groth16 requires a succinct receipt")?, + journal, + )?; + finalize(journal, receipt.claim()?, &seal.try_into()?) + }) + .await? +} + +async fn compress_bitvm2_with_bonsai( + client: &bonsai_sdk::non_blocking::Client, + succinct_receipt: &Receipt, +) -> Result { + let encoded_receipt = bincode::serialize(succinct_receipt)?; + let receipt_id = client.upload_receipt(encoded_receipt).await?; + let snark_id = client.shrink_bitvm2(receipt_id).await?; + loop { + let status = snark_id.status(client).await?; + match status.status.as_ref() { + "RUNNING" => { + tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + continue; + } + "SUCCEEDED" => { + let receipt_buf = client.download(&status.output.unwrap()).await?; + let snark_receipt: Receipt = bincode::deserialize(&receipt_buf)?; + return Ok(snark_receipt); + } + status_code => { + let err_msg = status.error_msg.unwrap_or_default(); + return Err(anyhow::anyhow!( + "snark proving failed with status {status_code}: {err_msg}" + )); + } + } + } +} + #[cfg(not(feature = "prove"))] pub fn succinct_to_bitvm2( _succinct_receipt: &SuccinctReceipt, _journal: [u8; 32], ) -> Result { unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" ); } @@ -85,7 +147,7 @@ pub fn shrink_wrap( _journal: [u8; 32], ) -> Result { unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" ); } @@ -96,41 +158,42 @@ pub fn finalize( _seal: &Groth16Seal, ) -> Result { unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt" + "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" ); } -// #[cfg(test)] -// mod tests { -// use super::*; -// use guest::ECHO_ELF; -// #[cfg(feature = "prove")] -// use risc0_zkvm::{ExecutorEnv, ProverOpts, default_prover}; -// #[cfg(feature = "prove")] -// #[test] -// fn test_succinct_to_bitvm2() { -// use guest::ECHO_ID; - -// let input = [3u8; 32]; - -// let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); - -// // Obtain the default prover. -// let prover = default_prover(); - -// // Produce a receipt by proving the specified ELF binary. -// let receipt = prover -// .prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()) -// .unwrap() -// .receipt; -// let succinct_receipt = receipt.inner.succinct().unwrap(); - -// let blake3_g16_seal_json = succinct_to_bitvm2(succinct_receipt, input).unwrap(); -// let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); -// let blake3_g16_seal: Groth16Seal = blake3_g16_seal_json.try_into().unwrap(); -// verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); - -// let _ = -// finalize(input, receipt.claim().unwrap(), &blake3_g16_seal).expect("finalize failed"); -// } -// } +fn is_dev_mode() -> bool { + std::env::var("RISC0_DEV_MODE") + .ok() + .map(|x| x.to_lowercase()) + .filter(|x| x == "1" || x == "true" || x == "yes") + .is_some() +} + +#[cfg(test)] +mod tests { + use super::*; + use guest_util::ECHO_ELF; + use risc0_zkvm::{default_prover, ExecutorEnv, ProverOpts}; + + #[tokio::test] + #[test_log::test] + async fn test_succinct_to_bitvm2() { + use guest_util::ECHO_ID; + + let input = [3u8; 32]; + + let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); + tracing::info!("Proving echo program to get initial receipt"); + let prover = default_prover(); + // Produce a receipt by proving the specified ELF binary. + let receipt = + prover.prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()).unwrap().receipt; + tracing::info!("Initial receipt created, compressing to shrink_bitvm2"); + let groth16_receipt = compress_bitvm2(&receipt).await.unwrap(); + let groth16_receipt = groth16_receipt.inner.groth16().unwrap(); + let blake3_g16_seal = Groth16Seal::decode(&groth16_receipt.seal).unwrap(); + let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); + verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); + } +} From db580d9298ae0f49bdb47accc3d10a9b7bc75a47 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 13:54:22 -0500 Subject: [PATCH 21/86] update interface --- bento/crates/workflow/src/tasks/snark.rs | 33 ++----- shrink_bitvm2/Cargo.toml | 4 +- shrink_bitvm2/src/lib.rs | 113 +++++++++-------------- 3 files changed, 52 insertions(+), 98 deletions(-) diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 742c2ee59..09d631de8 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -35,33 +35,12 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .context("groth16 compress failed")?, GROTH16_BUCKET_DIR, ), - CompressType::ShrinkBitvm2 => { - // First we compress a succinct receipt just to make sure we have a succinct receipt - let succinct_receipt = agent - .prover - .as_ref() - .context("Missing prover from resolve task")? - .compress(&ProverOpts::succinct(), &receipt) - .context("succinct compress failed")?; - let succinct_receipt = succinct_receipt.inner.succinct()?; - let p254_receipt = agent - .prover - .as_ref() - .context("Missing prover from resolve task")? - .identity_p254(succinct_receipt) - .context("failed to create p254 receipt")?; - // TODO(ec2): Handle cpu vs gpu here? - let journal: [u8; 32] = receipt.journal.bytes.as_slice().try_into()?; - let seal_json = shrink_bitvm2::shrink_wrap(&p254_receipt, journal).context("shrink blake3 groth16 failed")?; - ( - shrink_bitvm2::finalize( - journal, - p254_receipt.claim.clone(), - &seal_json.try_into()?, - )?, - SHRINK_BITVM2_BUCKET_DIR, - ) - } + CompressType::ShrinkBitvm2 => ( + shrink_bitvm2::compress_bitvm2(&receipt) + .await + .context("shrink blake3 groth16 failed")?, + SHRINK_BITVM2_BUCKET_DIR, + ), }; if !matches!(snark_receipt.inner, InnerReceipt::Groth16(_)) { bail!("[BENTO-SNARK-004] failed to create groth16 receipt"); diff --git a/shrink_bitvm2/Cargo.toml b/shrink_bitvm2/Cargo.toml index 802969faa..dcbe9a0ae 100644 --- a/shrink_bitvm2/Cargo.toml +++ b/shrink_bitvm2/Cargo.toml @@ -26,10 +26,10 @@ hex.workspace = true num-bigint = { version = "0.4.5", features = ["std"] } num-traits = "0.2.19" risc0-binfmt = { version = "3.0.2", default-features = false } -risc0-circuit-recursion = { workspace = true, default-features = false } +risc0-circuit-recursion = { workspace = true } risc0-groth16 = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true } -risc0-zkp = { workspace = true, default-features = false } +risc0-zkp = { workspace = true } risc0-zkvm = { workspace = true, features = ["bonsai"] } serde.workspace = true serde_json.workspace = true diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs index 0284381a1..26adafd42 100644 --- a/shrink_bitvm2/src/lib.rs +++ b/shrink_bitvm2/src/lib.rs @@ -12,11 +12,52 @@ mod prove; pub mod receipt_claim; pub mod verify; +/// Compresses a Receipt into a BLAKE3 Groth16 Receipt. +pub async fn compress_bitvm2(receipt: &Receipt) -> Result { + tracing::debug!("Compressing receipt to shrink_bitvm2"); + if is_dev_mode() { + return Ok(receipt.clone()); + } + if default_prover().get_name() == "bonsai" { + let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; + tracing::info!("Using bonsai to compress to shrink_bitvm2"); + return compress_bitvm2_with_bonsai(&client, receipt).await; + } + let receipt = receipt.clone(); + #[cfg(not(feature = "prove"))] + { + Err(anyhow!( + "shrink_bitvm2 must be built with the 'prove' feature to compress receipts locally" + )) + } + #[cfg(feature = "prove")] + tokio::task::spawn_blocking(move || { + let succinct_receipt = default_prover().compress(&ProverOpts::succinct(), &receipt)?; + tracing::debug!("Succinct receipt created, proceeding to convert to shrink_bitvm2"); + let receipt = succinct_receipt.clone(); + let journal: [u8; 32] = receipt + .journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for shrink blake3")?; + let seal = succinct_to_bitvm2( + receipt + .inner + .succinct() + .context("compressing to blake3 groth16 requires a succinct receipt")?, + journal, + )?; + finalize(journal, receipt.claim()?, &seal.try_into()?) + }) + .await? +} + /// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. /// It will first run the identity_p254 program to convert the STARK to BN254, /// which is more efficient to verify. #[cfg(feature = "prove")] -pub fn succinct_to_bitvm2( +fn succinct_to_bitvm2( succinct_receipt: &SuccinctReceipt, journal: [u8; 32], ) -> Result { @@ -28,7 +69,7 @@ pub fn succinct_to_bitvm2( /// Creates a BLAKE3 Groth16 proof from a identity p254 Risc0 SuccinctReceipt. #[cfg(feature = "prove")] -pub fn shrink_wrap( +fn shrink_wrap( p254_receipt: &SuccinctReceipt, journal: [u8; 32], ) -> Result { @@ -48,7 +89,7 @@ pub fn shrink_wrap( /// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. #[cfg(feature = "prove")] -pub fn finalize( +fn finalize( journal: [u8; 32], receipt_claim: MaybePruned, seal: &Groth16Seal, @@ -67,41 +108,6 @@ pub fn finalize( Ok(receipt) } -/// Compresses a Receipt into a BLAKE3 Groth16 Receipt. -pub async fn compress_bitvm2(receipt: &Receipt) -> Result { - tracing::debug!("Compressing receipt to shrink_bitvm2"); - if is_dev_mode() { - return Ok(receipt.clone()); - } - if default_prover().get_name() == "bonsai" { - let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; - tracing::info!("Using bonsai to compress to shrink_bitvm2"); - return compress_bitvm2_with_bonsai(&client, receipt).await; - } - let receipt = receipt.clone(); - - tokio::task::spawn_blocking(move || { - let succinct_receipt = default_prover().compress(&ProverOpts::succinct(), &receipt)?; - tracing::debug!("Succinct receipt created, proceeding to convert to shrink_bitvm2"); - let receipt = succinct_receipt.clone(); - let journal: [u8; 32] = receipt - .journal - .bytes - .as_slice() - .try_into() - .context("invalid journal length, expected 32 bytes for shrink blake3")?; - let seal = succinct_to_bitvm2( - receipt - .inner - .succinct() - .context("compressing to blake3 groth16 requires a succinct receipt")?, - journal, - )?; - finalize(journal, receipt.claim()?, &seal.try_into()?) - }) - .await? -} - async fn compress_bitvm2_with_bonsai( client: &bonsai_sdk::non_blocking::Client, succinct_receipt: &Receipt, @@ -131,37 +137,6 @@ async fn compress_bitvm2_with_bonsai( } } -#[cfg(not(feature = "prove"))] -pub fn succinct_to_bitvm2( - _succinct_receipt: &SuccinctReceipt, - _journal: [u8; 32], -) -> Result { - unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" - ); -} - -#[cfg(not(feature = "prove"))] -pub fn shrink_wrap( - _p254_receipt: &SuccinctReceipt, - _journal: [u8; 32], -) -> Result { - unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" - ); -} - -#[cfg(not(feature = "prove"))] -pub fn finalize( - _journal_bytes: [u8; 32], - _receipt_claim: MaybePruned, - _seal: &Groth16Seal, -) -> Result { - unimplemented!( - "shrink_bitvm2 must be built with the 'prove' feature to convert a SuccinctReceipt to a ShrinkBitvm2 Receipt locally" - ); -} - fn is_dev_mode() -> bool { std::env::var("RISC0_DEV_MODE") .ok() From 381c1d5531305b9c693b376eac5c094281127104 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 14:28:25 -0500 Subject: [PATCH 22/86] put rapidsnark into a docker container --- .../dockerfiles/rapidsnark.dockerfile | 36 ++++++++++ shrink_bitvm2/src/lib.rs | 6 +- shrink_bitvm2/src/prove.rs | 2 +- shrink_bitvm2/src/prove/docker.rs | 70 +++++++++++++++++++ shrink_bitvm2/src/prove/rapidsnark.rs | 44 ------------ 5 files changed, 110 insertions(+), 48 deletions(-) create mode 100644 shrink_bitvm2/dockerfiles/rapidsnark.dockerfile create mode 100644 shrink_bitvm2/src/prove/docker.rs delete mode 100644 shrink_bitvm2/src/prove/rapidsnark.rs diff --git a/shrink_bitvm2/dockerfiles/rapidsnark.dockerfile b/shrink_bitvm2/dockerfiles/rapidsnark.dockerfile new file mode 100644 index 000000000..aae0723f3 --- /dev/null +++ b/shrink_bitvm2/dockerfiles/rapidsnark.dockerfile @@ -0,0 +1,36 @@ +# syntax=docker/dockerfile:1.4 +FROM debian:bookworm-slim AS dependencies + +WORKDIR /src/ + +# APT deps +RUN apt -qq update && \ + apt install -y -q build-essential cmake libgmp-dev libsodium-dev nasm curl m4 git + +WORKDIR /src/ + +# Build rapidsnark +RUN git clone https://github.com/iden3/rapidsnark.git && \ + cd rapidsnark && \ + git checkout 808462cdcfdea6112269a4652d23999c8e4bc6d6 + +WORKDIR /src/rapidsnark/ + +RUN git submodule init && \ + git submodule update && \ + ./build_gmp.sh host && \ + make host && \ + cp ./package/bin/prover /usr/local/sbin/rapidsnark + + +# Create a final clean image with all the dependencies to perform stark->snark +FROM debian:bookworm-slim AS prover + +RUN apt -qq update && \ + apt install -y -q build-essential cmake libgmp-dev libsodium-dev nasm curl m4 + +COPY --from=dependencies /usr/local/sbin/rapidsnark /usr/local/sbin/rapidsnark + +RUN ulimit -s unlimited + +ENTRYPOINT ["/usr/local/sbin/rapidsnark"] \ No newline at end of file diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs index 26adafd42..2975fa132 100644 --- a/shrink_bitvm2/src/lib.rs +++ b/shrink_bitvm2/src/lib.rs @@ -26,7 +26,7 @@ pub async fn compress_bitvm2(receipt: &Receipt) -> Result { let receipt = receipt.clone(); #[cfg(not(feature = "prove"))] { - Err(anyhow!( + Err(anyhow::anyhow!( "shrink_bitvm2 must be built with the 'prove' feature to compress receipts locally" )) } @@ -82,7 +82,7 @@ fn shrink_wrap( #[cfg(feature = "cuda")] let proof_json = prove::cuda::shrink_wrap(work_dir, seal_json)?; #[cfg(not(feature = "cuda"))] - let proof_json = prove::rapidsnark::shrink_wrap(work_dir, seal_json)?; + let proof_json = prove::docker::shrink_wrap(work_dir, seal_json)?; Ok(proof_json) } @@ -149,7 +149,7 @@ fn is_dev_mode() -> bool { mod tests { use super::*; use guest_util::ECHO_ELF; - use risc0_zkvm::{default_prover, ExecutorEnv, ProverOpts}; + use risc0_zkvm::{default_prover, sha::Digestible, ExecutorEnv, ProverOpts}; #[tokio::test] #[test_log::test] diff --git a/shrink_bitvm2/src/prove.rs b/shrink_bitvm2/src/prove.rs index 3e53bcee5..2091e15a5 100644 --- a/shrink_bitvm2/src/prove.rs +++ b/shrink_bitvm2/src/prove.rs @@ -7,7 +7,7 @@ use risc0_zkvm::{ReceiptClaim, SuccinctReceipt}; #[cfg(feature = "cuda")] pub(crate) mod cuda; #[cfg(not(feature = "cuda"))] -pub(crate) mod rapidsnark; +pub(crate) mod docker; pub(crate) mod witgen; pub(crate) fn identity_seal_json( diff --git a/shrink_bitvm2/src/prove/docker.rs b/shrink_bitvm2/src/prove/docker.rs new file mode 100644 index 000000000..e02bf3599 --- /dev/null +++ b/shrink_bitvm2/src/prove/docker.rs @@ -0,0 +1,70 @@ +use std::{path::Path, process::ExitStatus}; + +use crate::prove::witgen::calculate_witness_encoded; + +use anyhow::{anyhow, bail, Result}; +use risc0_groth16::ProofJson as Groth16ProofJson; +use std::process::Command; + +pub fn shrink_wrap( + work_dir: &Path, + identity_seal_json: serde_json::Value, +) -> Result { + tracing::debug!("shrink_wrap with rapidsnark"); + if !is_docker_installed() { + bail!("Please install docker first.") + } + let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); + let root_dir = root_dir.as_ref().map(Path::new).expect("must provide BLAKE3_GROTH16_SETUP_DIR"); + + let graph_path = root_dir.join("verify_for_guest_graph.bin"); + let witness_path = work_dir.join("output.wtns"); + let proof_path = work_dir.join("proof.json"); + let public_path = work_dir.join("public.json"); + + let witness_encoded = + calculate_witness_encoded(&graph_path, identity_seal_json.to_string().as_str())?; + std::fs::write(&witness_path, witness_encoded)?; + + let output = Command::new("docker") + .arg("run") + .arg("--rm") + .arg("-v") + .arg(format!("{}:/mnt", work_dir.display())) + .arg("-v") + .arg(format!("{}:/setup", root_dir.display())) + .arg("rpsnark:latest") + .arg("/setup/verify_for_guest_final.zkey") + .arg(format!("/mnt/{}", witness_path.file_name().unwrap().to_str().unwrap())) + .arg(format!("/mnt/{}", proof_path.file_name().unwrap().to_str().unwrap())) + .arg(format!("/mnt/{}", public_path.file_name().unwrap().to_str().unwrap())) + .output()?; + if !output.status.success() { + return Err(error_from_status(output.status)); + } + + let proof_content = std::fs::read_to_string(&proof_path)?; + + let proof_json: Groth16ProofJson = + serde_json::from_str(proof_content.trim_matches(char::from(0)))?; + + Ok(proof_json) +} + +fn is_docker_installed() -> bool { + Command::new("docker") + .arg("--version") + .output() + .map(|output| output.status.success()) + .unwrap_or(false) +} + +fn error_from_status(status: ExitStatus) -> anyhow::Error { + let err = anyhow!("docker returned failure exit code: {:?}", status.code()); + + // Add a hint to the error context for certain error codes. + match status.code() { + Some(126) => err.context("This process may not have permission to run containers."), + _ => err, + } +} diff --git a/shrink_bitvm2/src/prove/rapidsnark.rs b/shrink_bitvm2/src/prove/rapidsnark.rs deleted file mode 100644 index f92b2e032..000000000 --- a/shrink_bitvm2/src/prove/rapidsnark.rs +++ /dev/null @@ -1,44 +0,0 @@ -use std::path::Path; - -use crate::prove::witgen::calculate_witness_encoded; - -use anyhow::Result; -use risc0_groth16::ProofJson as Groth16ProofJson; -use std::process::Command; - -pub fn shrink_wrap( - work_dir: &Path, - identity_seal_json: serde_json::Value, -) -> Result { - tracing::debug!("shrink_wrap with rapidsnark"); - let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); - let root_dir = root_dir - .as_ref() - .map(Path::new) - .expect("must provide BLAKE3_GROTH16_SETUP_DIR"); - - let graph_path = root_dir.join("verify_for_guest_graph.bin"); - let witness_path = work_dir.join("output.wtns"); - let proof_path = work_dir.join("proof.json"); - let public_path = work_dir.join("public.json"); - - let witness_encoded = - calculate_witness_encoded(&graph_path, identity_seal_json.to_string().as_str())?; - std::fs::write(&witness_path, witness_encoded)?; - - let status = Command::new("rapidsnark") - .arg(root_dir.join("verify_for_guest_final.zkey")) - .arg(witness_path) - .arg(&proof_path) - .arg(public_path) - .status()?; - - anyhow::ensure!(status.success(), "rapidsnark failed: {:?}", status.code()); - - let proof_content = std::fs::read_to_string(&proof_path)?; - - let proof_json: Groth16ProofJson = - serde_json::from_str(proof_content.trim_matches(char::from(0)))?; - - Ok(proof_json) -} From a94d3f73088f3ba0473d93c41e861aee446a36af Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 14:52:34 -0500 Subject: [PATCH 23/86] fix order picker test --- crates/broker/src/order_picker.rs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index c2cf15561..468705caf 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -2912,15 +2912,12 @@ pub(crate) mod tests { ) -> Result>, ProverError> { self.default_prover.get_compressed_receipt(proof_id).await } - async fn shrink_bitvm2(&self, _proof_id: &str) -> Result { - todo!("Shrink BitVM is not implemented yet"); + async fn shrink_bitvm2(&self, proof_id: &str) -> Result { + self.default_prover.shrink_bitvm2(proof_id).await } - async fn get_bitvm2_receipt( - &self, - _proof_id: &str, - ) -> Result, ProverError> { - todo!("Shrink BitVM is not implemented yet"); + async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { + self.default_prover.get_bitvm2_receipt(proof_id).await } } From a3ed56addd02afad7c347f2c00b68bdb2d2d605f Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 15:34:19 -0500 Subject: [PATCH 24/86] calculate claim digest in request builder --- Cargo.lock | 1 + crates/boundless-market/Cargo.toml | 1 + .../src/request_builder/requirements_layer.rs | 23 +++++++++++++++---- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 361fe1f1f..1a8dcba71 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2851,6 +2851,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.9", + "shrink_bitvm2", "siwe", "tempfile", "thiserror 2.0.17", diff --git a/crates/boundless-market/Cargo.toml b/crates/boundless-market/Cargo.toml index d54bc3284..9e73be07c 100644 --- a/crates/boundless-market/Cargo.toml +++ b/crates/boundless-market/Cargo.toml @@ -45,6 +45,7 @@ risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-zkvm = { workspace = true, features = ["std", "client"] } rmp-serde = { workspace = true } serde_json = { workspace = true } +shrink_bitvm2 = { workspace = true, default-features = false } tempfile = { workspace = true } tokio = { workspace = true } tokio-tungstenite = { workspace = true } diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index 5c396f108..5e9e5ece0 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -14,6 +14,7 @@ use super::{Adapt, Layer, MissingFieldError, RequestParams}; use crate::contracts::{Callback, Predicate, Requirements}; +use crate::selector::is_shrink_bitvm2_selector; use alloy::primitives::{aliases::U96, Address, FixedBytes, B256}; use anyhow::{ensure, Context}; use clap::Args; @@ -155,10 +156,24 @@ impl Layer<(Digest, &Journal, &RequirementParams)> for RequirementsLayer { &self, (image_id, journal, params): (Digest, &Journal, &RequirementParams), ) -> Result { - let predicate = params - .predicate - .clone() - .unwrap_or_else(|| Predicate::digest_match(image_id, journal.digest())); + let mut predicate = params.predicate.clone(); + + if let Some(selector) = ¶ms.selector { + if is_shrink_bitvm2_selector(*selector) { + predicate = Some(params.predicate.clone().unwrap_or_else(|| { + let blake3_claim_digest = shrink_bitvm2::ShrinkBitvm2ReceiptClaim::ok( + image_id, + journal.bytes.clone(), + ) + .digest(); + Predicate::claim_digest_match(blake3_claim_digest) + })); + } + } + + let predicate = + predicate.unwrap_or_else(|| Predicate::digest_match(image_id, journal.digest())); + if let Some(params_image_id) = params.image_id { ensure!( image_id == Digest::from(<[u8; 32]>::from(params_image_id)), From 6dbfc0b8be2dd37a2fe5247c41724cd05f7eab47 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 15:40:11 -0500 Subject: [PATCH 25/86] update Readme --- shrink_bitvm2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shrink_bitvm2/README.md b/shrink_bitvm2/README.md index 1bc147496..66e72c8e8 100644 --- a/shrink_bitvm2/README.md +++ b/shrink_bitvm2/README.md @@ -19,7 +19,7 @@ cargo xtask-blake3-groth16 ### Building Rapidsnark -If using rapidsnark for CPU proving instead of CUDA, you will need to need to manually build rapidsnark. This crate will look for the `rapidsnark` binary in your PATH. +If using rapidsnark for CPU proving instead of CUDA, you will need to need to manually build rapidsnark. This is all packaged in a dockerfile. ## Proving From 5ae9fbe6442515d69821d82f97b78959233d9ff2 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 15:57:03 -0500 Subject: [PATCH 26/86] fix xtask command --- .cargo/config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index be5caa341..5315d90b6 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [alias] xtask = "run --package xtask --release --" -xtask-blake3-groth16 = "run --package xtask --no-default-features -F cuda --release -- setup-groth16" \ No newline at end of file +xtask-blake3-groth16 = "run --package xtask --no-default-features -F cuda --release -- setup-blake3-groth16" From 8117f335def8f78257fa16d3f969308fb45fded1 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 16:20:38 -0500 Subject: [PATCH 27/86] fix docker files --- .cargo/config.toml | 2 +- Cargo.toml | 16 ++++++++-------- bento/Cargo.toml | 24 ++++++++++++++---------- dockerfiles/broker.dockerfile | 3 +++ 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 5315d90b6..4ba7ea3e0 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,3 @@ [alias] xtask = "run --package xtask --release --" -xtask-blake3-groth16 = "run --package xtask --no-default-features -F cuda --release -- setup-blake3-groth16" +xtask-setup-blake3-groth16 = "run --package xtask --no-default-features -F cuda --release -- setup-blake3-groth16" diff --git a/Cargo.toml b/Cargo.toml index 87776acbf..7130220d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -121,11 +121,11 @@ lto = true [patch.crates-io] risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } - -risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +# TODO(ec2): Needs these patches until this is backported https://github.com/risc0/risc0/pull/3370 +risc0-groth16 = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-groth16-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-zkp = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-binfmt = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-build = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-zkvm = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-circuit-recursion = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 5e07a43e4..8c3d20d2a 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -18,10 +18,13 @@ repository = "https://github.com/boundless-xyz/boundless" [workspace.dependencies] anyhow = "1.0.98" -aws-sdk-s3 = "1.34" # used for minio for max compatibility +aws-sdk-s3 = "1.34" # used for minio for max compatibility bento-client = { path = "crates/bento-client" } bincode = "1.3.3" -bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bitvm2", features = ["non_blocking", "shrink_bitvm2"] } +bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bitvm2", features = [ + "non_blocking", + "shrink_bitvm2", +] } bytemuck = "1.16" clap = { version = "4.5", features = ["derive", "env"] } deadpool-redis = "0.15" @@ -55,11 +58,12 @@ debug = 1 lto = true [patch.crates-io] -risc0-groth16 = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-groth16-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-zkp = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-sys = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-binfmt = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-build = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-zkvm = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } -risc0-circuit-recursion = { git = "https://github.com/ec2/risc0.git", rev = "193ebbb3ea5e7a73388cb97724c7581116c58839" } +# TODO(ec2): Needs these patches until this is backported https://github.com/risc0/risc0/pull/3370 +risc0-groth16 = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-groth16-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-zkp = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-binfmt = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-build = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-zkvm = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } +risc0-circuit-recursion = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } diff --git a/dockerfiles/broker.dockerfile b/dockerfiles/broker.dockerfile index 083b67020..e76e92e5f 100644 --- a/dockerfiles/broker.dockerfile +++ b/dockerfiles/broker.dockerfile @@ -41,6 +41,7 @@ COPY lib/ ./lib/ COPY remappings.txt . COPY foundry.toml . COPY shrink_bitvm2/ ./shrink_bitvm2/ +COPY xtask/ ./xtask/ RUN cargo chef prepare --recipe-path recipe.json FROM init AS builder @@ -60,6 +61,8 @@ COPY documentation/ ./documentation/ COPY lib/ ./lib/ COPY remappings.txt . COPY foundry.toml . +COPY shrink_bitvm2/ ./shrink_bitvm2/ +COPY xtask/ ./xtask/ ENV PATH="$PATH:/root/.foundry/bin" RUN forge build From 28186eb5cd5539806545aee0403ce18050f2a702 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 16:20:58 -0500 Subject: [PATCH 28/86] cargo lock --- Cargo.lock | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1a8dcba71..2b7490762 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2616,26 +2616,26 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "duplicate", "maybe-async", "reqwest", "serde", "thiserror 2.0.17", - "tokio", ] [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", "reqwest", "serde", "thiserror 2.0.17", + "tokio", ] [[package]] @@ -8655,7 +8655,7 @@ dependencies = [ [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "borsh", @@ -8676,7 +8676,7 @@ dependencies = [ [[package]] name = "risc0-build" version = "3.0.3" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "cargo_metadata", @@ -8718,7 +8718,7 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "directories", @@ -8731,7 +8731,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bytemuck", @@ -8752,7 +8752,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "cust", @@ -8767,7 +8767,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bytemuck", @@ -8792,7 +8792,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "glob", "risc0-build-kernel", @@ -8804,7 +8804,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8837,7 +8837,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "cust", @@ -8852,7 +8852,7 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "bytemuck", "nvtx", @@ -8881,7 +8881,7 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "ark-bn254", @@ -8910,7 +8910,7 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blst", @@ -8967,7 +8967,7 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blst", @@ -8979,7 +8979,7 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -8989,7 +8989,7 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blake2", @@ -9020,12 +9020,12 @@ dependencies = [ [[package]] name = "risc0-zkvm" version = "3.0.3" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839)", + "bonsai-sdk 1.4.1 (git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370)", "borsh", "bytemuck", "bytes", @@ -9069,7 +9069,7 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" version = "2.2.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "bytemuck", "cfg-if", @@ -9432,7 +9432,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "hex", "rsa", From 0dbc4608810bd70d4637450b2b73f7acd3b02958 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 18:47:33 -0500 Subject: [PATCH 29/86] bitvm2 -> blake3_groth16 everywhere except the actual crate and bento --- Cargo.lock | 4 +- Cargo.toml | 4 +- contracts/scripts/Deploy.s.sol | 12 +- crates/boundless-cli/src/lib.rs | 17 +- crates/boundless-market/build.rs | 4 +- .../src/contracts/bytecode.rs | 2 +- crates/boundless-market/src/contracts/mod.rs | 13 +- .../src/request_builder/finalizer.rs | 6 +- .../src/request_builder/mod.rs | 6 +- .../src/request_builder/requirements_layer.rs | 6 +- crates/boundless-market/src/selector.rs | 14 +- crates/broker/src/lib.rs | 12 +- crates/broker/src/order_picker.rs | 23 +- crates/broker/src/provers/bonsai.rs | 25 +- crates/broker/src/provers/default.rs | 23 +- crates/broker/src/provers/mod.rs | 11 +- crates/broker/src/proving.rs | 8 +- crates/broker/src/storage.rs | 1 + crates/broker/src/submitter.rs | 26 +- crates/broker/src/utils.rs | 2 +- .../guest/assessor/assessor-guest/Cargo.lock | 733 +++++++++++++++++- crates/test-utils/src/verifier.rs | 25 +- lib/risc0-ethereum | 2 +- shrink_bitvm2/src/lib.rs | 28 +- shrink_bitvm2/src/prove/cuda.rs | 17 +- shrink_bitvm2/src/prove/docker.rs | 2 +- shrink_bitvm2/src/prove/witgen.rs | 2 +- shrink_bitvm2/src/receipt_claim.rs | 11 +- xtask/src/bootstrap_blake3_groth16.rs | 6 +- 29 files changed, 876 insertions(+), 169 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 15da0f1bb..943bed0c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8640,7 +8640,7 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a5bf55285c5ea2e65de9c53421987449e2db046d#a5bf55285c5ea2e65de9c53421987449e2db046d" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64#1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" dependencies = [ "alloy-primitives 1.4.0", "alloy-sol-types", @@ -8864,7 +8864,7 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=a5bf55285c5ea2e65de9c53421987449e2db046d#a5bf55285c5ea2e65de9c53421987449e2db046d" +source = "git+https://github.com/ec2/risc0-ethereum.git?rev=1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64#1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" dependencies = [ "alloy", "alloy-primitives 1.4.0", diff --git a/Cargo.toml b/Cargo.toml index 7130220d2..3f99c5631 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,8 +119,8 @@ lto = true # codegen-units = 1 [patch.crates-io] -risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } -risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "a5bf55285c5ea2e65de9c53421987449e2db046d" } +risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" } +risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" } # TODO(ec2): Needs these patches until this is backported https://github.com/risc0/risc0/pull/3370 risc0-groth16 = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } risc0-groth16-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index c70896ed2..6dad4f5df 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -69,12 +69,12 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { console2.log("Added Groth16 verifier to router with selector"); console2.logBytes4(selector); - IRiscZeroVerifier _bitvm2_verifier = deployRiscZeroBitvm2Verifier(); - IRiscZeroSelectable bitvm2_selectable = IRiscZeroSelectable(address(_bitvm2_verifier)); - bytes4 bitvm_selector = bitvm2_selectable.SELECTOR(); - verifierRouter.addVerifier(bitvm_selector, _bitvm2_verifier); - console2.log("Added BitVM2 verifier to router with selector"); - console2.logBytes4(bitvm_selector); + IRiscZeroVerifier _blake3_g16_verifier = deployRiscZeroBlake3Verifier(); + IRiscZeroSelectable blake3_g16_selectable = IRiscZeroSelectable(address(_blake3_g16_verifier)); + bytes4 blake3_g16_selector = blake3_g16_selectable.SELECTOR(); + verifierRouter.addVerifier(blake3_g16_selector, _blake3_g16_verifier); + console2.log("Added Blake3 Groth16 verifier to router with selector"); + console2.logBytes4(blake3_g16_selector); // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index b16267b1d..ffc4d0dc0 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -53,7 +53,7 @@ use boundless_market::{ Fulfillment as BoundlessFulfillment, FulfillmentData, PredicateType, RequestInputType, }, input::GuestEnv, - selector::{is_groth16_selector, is_shrink_bitvm2_selector, SupportedSelectors}, + selector::{is_blake3_groth16_selector, is_groth16_selector, SupportedSelectors}, storage::fetch_url, ProofRequest, }; @@ -548,17 +548,16 @@ impl OrderFulfiller { .context("Failed to deserialize compressed order receipt")?; encode_seal(&compressed_receipt)? - } else if is_shrink_bitvm2_selector(req.requirements.selector) { - // Compress the STARK proof to Groth16 + } else if is_blake3_groth16_selector(req.requirements.selector) { let compressed_proof_id = self .prover - .shrink_bitvm2(&proof_ids[i]) + .compress_blake3_groth16(&proof_ids[i]) .await .map_err(|e| anyhow::anyhow!("Failed to compress order proof: {}", e))?; let compressed_receipt_bytes = self .prover - .get_bitvm2_receipt(&compressed_proof_id) + .get_blake3_groth16_receipt(&compressed_proof_id) .await .map_err(|e| anyhow::anyhow!("Failed to get compressed order receipt: {}", e))? .ok_or_else(|| anyhow::anyhow!("Compressed order receipt not found"))?; @@ -633,7 +632,7 @@ mod tests { use boundless_test_utils::guests::{ECHO_ID, ECHO_PATH}; use boundless_test_utils::market::create_test_ctx; use risc0_ethereum_contracts::selector::Selector; - use shrink_bitvm2::ShrinkBitvm2ReceiptClaim; + use shrink_bitvm2::Blake3Groth16ReceiptClaim; use std::sync::Arc; async fn setup_proving_request_and_signature( @@ -695,15 +694,15 @@ mod tests { #[tokio::test] #[tracing_test::traced_test] - async fn test_fulfill_shrink_bitvm2_selector() { + async fn test_fulfill_blake3_groth16_selector() { let input = [255u8; 32].to_vec(); // Example output data let blake3_claim_digest = - ShrinkBitvm2ReceiptClaim::ok(Digest::from(ECHO_ID), input.clone()).digest(); + Blake3Groth16ReceiptClaim::ok(Digest::from(ECHO_ID), input.clone()).digest(); let signer = PrivateKeySigner::random(); let request = ProofRequest::new( RequestId::new(signer.address(), 0), Requirements::new(Predicate::claim_digest_match(blake3_claim_digest)) - .with_selector(FixedBytes::from(Selector::shrink_bitvm2_latest() as u32)), + .with_selector(FixedBytes::from(Selector::blake3_groth16_latest() as u32)), format!("file://{ECHO_PATH}"), RequestInput::builder().write_slice(&input).build_inline().unwrap(), Offer::default(), diff --git a/crates/boundless-market/build.rs b/crates/boundless-market/build.rs index 8a81c0cdb..18d8eef93 100644 --- a/crates/boundless-market/build.rs +++ b/crates/boundless-market/build.rs @@ -33,7 +33,7 @@ const ARTIFACT_TARGET_CONTRACTS: [&str; 9] = [ "ERC1967Proxy", "RiscZeroVerifierRouter", "RiscZeroGroth16Verifier", - "RiscZeroBitvm2Groth16Verifier", + "RiscZeroBlake3Groth16Verifier", "MockCallback", ]; @@ -267,7 +267,7 @@ fn get_interfaces(contract: &str) -> &str { "RiscZeroGroth16Verifier" => { r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# } - "RiscZeroBitvm2Groth16Verifier" => { + "RiscZeroBlake3Groth16Verifier" => { r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# } "MockCallback" => { diff --git a/crates/boundless-market/src/contracts/bytecode.rs b/crates/boundless-market/src/contracts/bytecode.rs index a301b7cbd..1ea750f94 100644 --- a/crates/boundless-market/src/contracts/bytecode.rs +++ b/crates/boundless-market/src/contracts/bytecode.rs @@ -53,7 +53,7 @@ alloy::sol! { alloy::sol! { #[sol(rpc, bytecode = "6101808060405234610a525760408161159380380380916100208285610a56565b833981010312610a5257805160209182015191600882811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169083901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08290526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa156108de575f5191600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b17915f610120526060610120526040516103106101205182610a56565b6002815261012051601f190161010081905236602083013760205f604051828101907f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459382527f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b160408201526040815261038c6101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f516103b282610a8d565b5260205f604051828101907f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a282527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a16040820152604081526104176101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f5161043d82610a9a565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108de575f519260205f604051828101907f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c782527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026040820152604081526104d96101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f519460205f604051828101907f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db82527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d24460408201527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a610120518201527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296080820152608081526105a760a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519360205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b610120518201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261067560a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f604051828101907f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca82527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d60408201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b610120518201527f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f60808201526080815261074360a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108de575f80516101405260206101605297885b8751808b1015610947575f19810190808211610933578b90035f190190811161093357885181101561091f57610160519060051b89010151604051916107ee6101205184610a56565b60028352610160518301916101005136843761080984610a8d565b5261081383610a9a565b526040516108246101605182610a56565b5f8152601f196101605101366101605183013782519161ffff831161090757604080516101405161016051820152945185939291840191905f905b8082106108e95750505092816108ab94600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a56565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108de5760015f519901986107a5565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085f565b826306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8a60405196610160518801958652604088015261012051870152608086015260a085015260c0840152600560f81b60e084015260c2835261098e60e284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f91825190604051946101605186019384526040860152610120518501526080840152600360f81b60a0840152608283526109ea60a284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f516001600160e01b03191660e052604051610ae89081610aab8239608051816106a6015260a05181610661015260c05181610290015260e05181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7957604052565b634e487b7160e01b5f52604160045260245ffd5b80511561091f5760200190565b80516001101561091f576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107c1565b6106d6565b610691565b61064c565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ba565b906108e5565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108c8565b810190610962565b80516101e66040848401519301519460246101c6866107b1565b91013581526040516343753b4d60e01b8152958694859460048601610a53565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610790565b8101906109ed565b5f6101f9565b503d610220565b610ad0565b61025461017084610276946108ba565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d75760405190610380820160405261010435917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001831015610644576020610360927f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f947f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459387526103de828801947f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b186528861082e565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c76101408501527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026101608501527f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db6101808501527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d2446101a08501527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a6101c08501527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca6103008201527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d6103208201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b61034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b5f805260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761078b57604052565b61075c565b90601f801991011681019081106001600160401b0382111761078b57604052565b906107bf6040519283610790565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761078b57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b604051917f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a283527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a160208401526040830190815260408360608160076107cf195a01fa1561064457815190526020810151606083015260409160809060066107cf195a01fa1561064457565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610900575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610936604084610790565b8290604081019283116100d757905b8282106109525750505090565b8135815260209182019101610945565b610100818303126100d7576040519161097a83610770565b610984818361091b565b835280605f830112156100d75760409182516109a08482610790565b8060c08301928484116100d75785809101915b8483106109d35750505060208501526109cc919061091b565b9082015290565b6020906109e0878561091b565b81520191019085906109b3565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a1657505050565b6020806001928551815201930191019091610a09565b905f905b60018210610a3d57505050565b6020806001928551815201930191019091610a30565b919493929094610a6883610120810197610a05565b5f604084015b60028210610a965750505081610a8f6101009260c06107bf96950190610a05565b0190610a2c565b82515f90825b60028310610aba575050506020604060019201930191019091610a6e565b6020806001928451815201920192019190610a9c565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] - contract RiscZeroBitvm2Groth16Verifier { + contract RiscZeroBlake3Groth16Verifier { constructor(bytes32 control_root, bytes32 bn254_control_id) {} } } diff --git a/crates/boundless-market/src/contracts/mod.rs b/crates/boundless-market/src/contracts/mod.rs index 39b09ef22..5814de698 100644 --- a/crates/boundless-market/src/contracts/mod.rs +++ b/crates/boundless-market/src/contracts/mod.rs @@ -572,18 +572,19 @@ impl Requirements { } } - /// Set the selector for a shrink bitvm2 proof. + /// Set the selector for a blake3 groth16 proof. /// /// This will set the selector to the appropriate value based on the current environment. /// In dev mode, the selector will be set to `FakeReceipt`, otherwise it will be set - /// to the latest ShrinkBitvm2 selector. + /// to the latest Blake3Groth16 selector. #[cfg(not(target_os = "zkvm"))] - pub fn with_shrink_bitvm2_proof(self) -> Self { + pub fn with_blake3_groth16_proof(self) -> Self { match crate::util::is_dev_mode() { true => Self { selector: FixedBytes::from(Selector::FakeReceipt as u32), ..self }, - false => { - Self { selector: FixedBytes::from(Selector::shrink_bitvm2_latest() as u32), ..self } - } + false => Self { + selector: FixedBytes::from(Selector::blake3_groth16_latest() as u32), + ..self + }, } } } diff --git a/crates/boundless-market/src/request_builder/finalizer.rs b/crates/boundless-market/src/request_builder/finalizer.rs index f011f3e24..75e428f9a 100644 --- a/crates/boundless-market/src/request_builder/finalizer.rs +++ b/crates/boundless-market/src/request_builder/finalizer.rs @@ -17,7 +17,7 @@ use crate::{ contracts::{ FulfillmentData, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, }, - selector::is_shrink_bitvm2_selector, + selector::is_blake3_groth16_selector, util::now_timestamp, }; use anyhow::{bail, Context}; @@ -135,8 +135,8 @@ impl Adapt for RequestParams { let eval = match (&self.journal, self.image_id) { (Some(journal), Some(image_id)) => { tracing::debug!("Evaluating journal and image id against predicate "); - let eval_data = if is_shrink_bitvm2_selector(requirements.selector) { - // It is not possible to fulfill a shrink bitvm2 request with fulfillment data + let eval_data = if is_blake3_groth16_selector(requirements.selector) { + // It is not possible to fulfill a blake3 groth16 request with fulfillment data FulfillmentData::None } else { FulfillmentData::from_image_id_and_journal(image_id, journal.bytes.clone()) diff --git a/crates/boundless-market/src/request_builder/mod.rs b/crates/boundless-market/src/request_builder/mod.rs index dfe68c20f..4704b079f 100644 --- a/crates/boundless-market/src/request_builder/mod.rs +++ b/crates/boundless-market/src/request_builder/mod.rs @@ -553,15 +553,15 @@ impl RequestParams { Self { requirements, ..self } } - /// Request a stand-alone Shrink Bitvm2 proof for this request. + /// Request a stand-alone Blake3 Groth16 proof for this request. /// /// This is a convinience method to set the selector on the requirements. Note that calling /// [RequestParams::with_requirements] after this function will overwrite the change. - pub fn with_shrink_bitvm2_proof(self) -> Self { + pub fn with_blake3_groth16_proof(self) -> Self { let mut requirements = self.requirements; requirements.selector = match crate::util::is_dev_mode() { true => Some((Selector::FakeReceipt as u32).into()), - false => Some((Selector::shrink_bitvm2_latest() as u32).into()), + false => Some((Selector::blake3_groth16_latest() as u32).into()), }; // TODO(ec2): should we automatically set the predicate type to claim digest match here? Self { requirements, ..self } diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index 5e9e5ece0..81e315110 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -14,7 +14,7 @@ use super::{Adapt, Layer, MissingFieldError, RequestParams}; use crate::contracts::{Callback, Predicate, Requirements}; -use crate::selector::is_shrink_bitvm2_selector; +use crate::selector::is_blake3_groth16_selector; use alloy::primitives::{aliases::U96, Address, FixedBytes, B256}; use anyhow::{ensure, Context}; use clap::Args; @@ -159,9 +159,9 @@ impl Layer<(Digest, &Journal, &RequirementParams)> for RequirementsLayer { let mut predicate = params.predicate.clone(); if let Some(selector) = ¶ms.selector { - if is_shrink_bitvm2_selector(*selector) { + if is_blake3_groth16_selector(*selector) { predicate = Some(params.predicate.clone().unwrap_or_else(|| { - let blake3_claim_digest = shrink_bitvm2::ShrinkBitvm2ReceiptClaim::ok( + let blake3_claim_digest = shrink_bitvm2::Blake3Groth16ReceiptClaim::ok( image_id, journal.bytes.clone(), ) diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index f689f0441..272689fab 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -38,8 +38,8 @@ pub enum ProofType { Groth16, /// Inclusion proof type. Inclusion, - /// BitVM2 compatible Groth16 proof type. - ShrinkBitvm2, + /// BitVM compatible blake3 Groth16 proof type. + Blake3Groth16, } /// A struct to hold the supported selectors. @@ -55,8 +55,8 @@ impl Default for SupportedSelectors { .with_selector(UNSPECIFIED_SELECTOR, ProofType::Any) .with_selector(FixedBytes::from(Selector::groth16_latest() as u32), ProofType::Groth16) .with_selector( - FixedBytes::from(Selector::shrink_bitvm2_latest() as u32), - ProofType::ShrinkBitvm2, + FixedBytes::from(Selector::blake3_groth16_latest() as u32), + ProofType::Blake3Groth16, ); if is_dev_mode() { supported_selectors = supported_selectors @@ -130,13 +130,13 @@ pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { } } -/// Check if a selector is a bitvm2 groth16 selector. -pub fn is_shrink_bitvm2_selector(selector: FixedBytes<4>) -> bool { +/// Check if a selector is a blake3 groth16 selector. +pub fn is_blake3_groth16_selector(selector: FixedBytes<4>) -> bool { let sel = Selector::from_bytes(selector.into()); match sel { Some(selector) => { selector.get_type() == SelectorType::FakeReceipt - || selector.get_type() == SelectorType::ShrinkBitvm2 + || selector.get_type() == SelectorType::Blake3Groth16 } None => false, } diff --git a/crates/broker/src/lib.rs b/crates/broker/src/lib.rs index 112602841..251388a54 100644 --- a/crates/broker/src/lib.rs +++ b/crates/broker/src/lib.rs @@ -30,7 +30,7 @@ use boundless_market::{ contracts::{boundless_market::BoundlessMarketService, ProofRequest}, order_stream_client::OrderStreamClient, override_gateway, - selector::{is_groth16_selector, is_shrink_bitvm2_selector}, + selector::{is_blake3_groth16_selector, is_groth16_selector}, Deployment, }; use chrono::{serde::ts_seconds, DateTime, Utc}; @@ -395,14 +395,14 @@ impl Order { pub fn is_groth16(&self) -> bool { is_groth16_selector(self.request.requirements.selector) } - fn is_shrink_bitvm2(&self) -> bool { - is_shrink_bitvm2_selector(self.request.requirements.selector) + fn is_blake3_groth16(&self) -> bool { + is_blake3_groth16_selector(self.request.requirements.selector) } pub fn compression_type(&self) -> CompressionType { if self.is_groth16() { CompressionType::Groth16 - } else if self.is_shrink_bitvm2() { - CompressionType::ShrinkBitvm2 + } else if self.is_blake3_groth16() { + CompressionType::Blake3Groth16 } else { CompressionType::None } @@ -424,7 +424,7 @@ impl std::fmt::Display for Order { enum CompressionType { None, Groth16, - ShrinkBitvm2, + Blake3Groth16, } #[derive(sqlx::Type, Default, Serialize, Deserialize, Debug, Clone, PartialEq)] diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 468705caf..2b1a545a6 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -51,7 +51,7 @@ use boundless_market::{ boundless_market::BoundlessMarketService, FulfillmentData, Predicate, RequestError, RequestInputType, }, - selector::{is_shrink_bitvm2_selector, SupportedSelectors}, + selector::{is_blake3_groth16_selector, SupportedSelectors}, }; use moka::future::Cache; use thiserror::Error; @@ -798,20 +798,20 @@ where }); } - // If the selector is a shrink bitvm2 selector, ensure the journal is exactly 32 bytes - if is_shrink_bitvm2_selector(order.request.requirements.selector) && journal.len() != 32 { + // If the selector is a blake3 groth16 selector, ensure the journal is exactly 32 bytes + if is_blake3_groth16_selector(order.request.requirements.selector) && journal.len() != 32 { tracing::info!( - "Order {order_id} journal is not 32 bytes for shrink bitvm2 selector, skipping", + "Order {order_id} journal is not 32 bytes for blake3 groth16 selector, skipping", ); return Ok(Skip { - reason: "shrink bitvm2 selector requires 32 byte journal".to_string(), + reason: "blake3 groth16 selector requires 32 byte journal".to_string(), }); } // Validate the predicates: let predicate = Predicate::try_from(order.request.requirements.predicate.clone()) .map_err(|e| OrderPickerErr::RequestError(Arc::new(e.into())))?; - let eval_data = if is_shrink_bitvm2_selector(order.request.requirements.selector) { + let eval_data = if is_blake3_groth16_selector(order.request.requirements.selector) { // TODO(ec2): comment on this FulfillmentData::None } else { @@ -2912,12 +2912,15 @@ pub(crate) mod tests { ) -> Result>, ProverError> { self.default_prover.get_compressed_receipt(proof_id).await } - async fn shrink_bitvm2(&self, proof_id: &str) -> Result { - self.default_prover.shrink_bitvm2(proof_id).await + async fn compress_blake3_groth16(&self, proof_id: &str) -> Result { + self.default_prover.compress_blake3_groth16(proof_id).await } - async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { - self.default_prover.get_bitvm2_receipt(proof_id).await + async fn get_blake3_groth16_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError> { + self.default_prover.get_blake3_groth16_receipt(proof_id).await } } diff --git a/crates/broker/src/provers/bonsai.rs b/crates/broker/src/provers/bonsai.rs index 7ab8720ad..6bafa2b64 100644 --- a/crates/broker/src/provers/bonsai.rs +++ b/crates/broker/src/provers/bonsai.rs @@ -16,7 +16,7 @@ use std::future::Future; use async_trait::async_trait; use bonsai_sdk::{ - non_blocking::{Client as BonsaiClient, SessionId, ShrinkBitvm2Id, SnarkId}, + non_blocking::{Client as BonsaiClient, SessionId, ShrinkBitvm2Id as Blake3Groth16Id, SnarkId}, SdkErr, }; use risc0_zkvm::Receipt; @@ -279,9 +279,9 @@ impl StatusPoller { } } - async fn poll_with_retries_shrink_bitvm2_id( + async fn poll_with_retries_blake3_groth16_id( &self, - proof_id: &ShrinkBitvm2Id, + proof_id: &Blake3Groth16Id, client: &BonsaiClient, ) -> Result { loop { @@ -289,7 +289,7 @@ impl StatusPoller { self.retry_counts, self.poll_sleep_ms, || async { proof_id.status(client).await }, - "get shrink_bitvm2 status", + "get blake3 groth16 (shrink_bitvm2) status", ) .await; @@ -568,11 +568,11 @@ impl Prover for Bonsai { Ok(Some(receipt_buf)) } - async fn shrink_bitvm2(&self, proof_id: &str) -> Result { + async fn compress_blake3_groth16(&self, proof_id: &str) -> Result { let proof_id = self .retry( || async { Ok(self.client.shrink_bitvm2(proof_id.into()).await?) }, - "create bitvm2", + "create blake3_groth16 (bitvm2)", ) .await?; @@ -581,17 +581,20 @@ impl Prover for Bonsai { retry_counts: self.status_poll_retry_count, }; - poller.poll_with_retries_shrink_bitvm2_id(&proof_id, &self.client).await?; + poller.poll_with_retries_blake3_groth16_id(&proof_id, &self.client).await?; Ok(proof_id.uuid) } - async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { - let snark_id = ShrinkBitvm2Id { uuid: proof_id.into() }; + async fn get_blake3_groth16_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError> { + let snark_id = Blake3Groth16Id { uuid: proof_id.into() }; let status = self .retry( || async { Ok(snark_id.status(&self.client).await?) }, - "get status of shrink bitvm2", + "get status of blake3 groth16", ) .await?; @@ -599,7 +602,7 @@ impl Prover for Bonsai { let receipt_buf = self .retry( || async { Ok(self.client.download(&output).await?) }, - "download shrink bitvm2 output", + "download blake3 groth16 (bitvm2) output", ) .await?; diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 8fd45d67e..569f59e4b 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -397,15 +397,15 @@ impl Prover for DefaultProver { Ok(proof_data.compressed_receipt.as_ref().cloned()) } - async fn shrink_bitvm2(&self, proof_id: &str) -> Result { - tracing::info!("Compressing proof Shrink bitvm2 {proof_id}"); + async fn compress_blake3_groth16(&self, proof_id: &str) -> Result { + tracing::info!("Compressing proof to blake3 groth16 {proof_id}"); let receipt = self .get_receipt(proof_id) .await? .ok_or_else(|| ProverError::NotFound(format!("no receipt for proof {proof_id}")))?; if receipt.journal.bytes.len() != 32 { return Err(ProverError::UnexpectedError(anyhow!( - "Shrink BitVM2 requires a journal of 32 bytes, got {}", + "Compressing proof to blake3 groth16 requires a journal of 32 bytes, got {}", receipt.journal.bytes.len() ))); } @@ -413,7 +413,7 @@ impl Prover for DefaultProver { self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); let compress_result = - shrink_bitvm2::compress_bitvm2(&receipt).await.map_err(ProverError::from); + shrink_bitvm2::compress_blake3_groth16(&receipt).await.map_err(ProverError::from); let compressed_bytes = compress_result .as_ref() @@ -437,11 +437,14 @@ impl Prover for DefaultProver { } } } - async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError> { + async fn get_blake3_groth16_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError> { let proofs = self.state.proofs.read().await; let proof_data = proofs .get(proof_id) - .ok_or_else(|| ProverError::NotFound(format!("shrink bitvm2 proof {proof_id}")))?; + .ok_or_else(|| ProverError::NotFound(format!("blake3 groth16 proof {proof_id}")))?; Ok(proof_data.compressed_receipt.as_ref().cloned()) } } @@ -568,7 +571,7 @@ mod tests { } #[test] - async fn test_shrink_bitvm2() { + async fn test_shrink_blake3_groth16() { let prover = DefaultProver::new(); // Upload test data let input_data = [255u8; 32].to_vec(); // Example input data @@ -580,7 +583,7 @@ mod tests { let ProofResult { id: stark_id, .. } = prover.prove_and_monitor_stark(&image_id.to_string(), &input_id, vec![]).await.unwrap(); - let snark_id = prover.shrink_bitvm2(&stark_id).await.unwrap(); + let snark_id = prover.compress_blake3_groth16(&stark_id).await.unwrap(); // Fetch the compressed receipt let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); @@ -590,8 +593,8 @@ mod tests { let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) .expect("Failed to create Groth16 seal from receipt"); let claim_digest = - shrink_bitvm2::ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); + shrink_bitvm2::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); shrink_bitvm2::verify::verify(&groth16_seal, claim_digest) - .expect("Failed to verify Shrink BitVM2 receipt"); + .expect("Failed to verify Shrink to blake3 groth16 receipt"); } } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index a24032755..e091f50e7 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -142,11 +142,11 @@ pub(crate) async fn verify_blake3_groth16_receipt( ) -> Result<(), ProverError> { tracing::trace!("Verifying Blake3 Groth16 receipt locally for proof_id: {proof_id}"); - let receipt_bytes = prover.get_bitvm2_receipt(proof_id).await?.ok_or_else(|| { + let receipt_bytes = prover.get_blake3_groth16_receipt(proof_id).await?.ok_or_else(|| { ProverError::NotFound(format!("Blake3 Groth16 receipt not found: {proof_id}")) })?; - let receipt: Receipt = bincode::deserialize(&receipt_bytes).map_err(|e| { + let _receipt: Receipt = bincode::deserialize(&receipt_bytes).map_err(|e| { ProverError::ProverInternalError(format!("Failed to deserialize receipt: {e}")) })?; @@ -194,8 +194,11 @@ pub trait Prover { async fn get_journal(&self, proof_id: &str) -> Result>, ProverError>; async fn compress(&self, proof_id: &str) -> Result; async fn get_compressed_receipt(&self, proof_id: &str) -> Result>, ProverError>; - async fn shrink_bitvm2(&self, proof_id: &str) -> Result; - async fn get_bitvm2_receipt(&self, proof_id: &str) -> Result>, ProverError>; + async fn compress_blake3_groth16(&self, proof_id: &str) -> Result; + async fn get_blake3_groth16_receipt( + &self, + proof_id: &str, + ) -> Result>, ProverError>; } pub type ProverObj = Arc; diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index 0327891eb..a32f8bfd9 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -113,9 +113,9 @@ impl ProvingService { .compress(stark_proof_id) .await .context("Failed to compress proof")?, - CompressionType::ShrinkBitvm2 => self + CompressionType::Blake3Groth16 => self .prover - .shrink_bitvm2(stark_proof_id) + .compress_blake3_groth16(stark_proof_id) .await .context("Failed to shrink proof")?, CompressionType::None => { @@ -129,9 +129,9 @@ impl ProvingService { ); provers::verify_groth16_receipt(&self.prover, &proof_id).await?; } - CompressionType::ShrinkBitvm2 => { + CompressionType::Blake3Groth16 => { tracing::trace!( - "Verifying compressed BitVM2 receipt locally for proof_id: {proof_id}" + "Verifying compressed Blake3 Groth16 receipt locally for proof_id: {proof_id}" ); provers::verify_blake3_groth16_receipt(&self.prover, &proof_id).await?; } diff --git a/crates/broker/src/storage.rs b/crates/broker/src/storage.rs index ccfd16849..b6bac2011 100644 --- a/crates/broker/src/storage.rs +++ b/crates/broker/src/storage.rs @@ -82,6 +82,7 @@ pub(crate) async fn create_uri_handler( match uri.scheme() { "file" => { + // TODO(ec2): uncomment this. // if !is_dev_mode() { // return Err(StorageErr::UnsupportedScheme("file".to_string())); // } diff --git a/crates/broker/src/submitter.rs b/crates/broker/src/submitter.rs index d8397a5bc..0d6fb7d4e 100644 --- a/crates/broker/src/submitter.rs +++ b/crates/broker/src/submitter.rs @@ -30,7 +30,7 @@ use boundless_market::{ encode_seal, AssessorJournal, AssessorReceipt, Fulfillment, FulfillmentDataImageIdAndJournal, FulfillmentDataType, PredicateType, }, - selector::{is_groth16_selector, is_shrink_bitvm2_selector}, + selector::{is_blake3_groth16_selector, is_groth16_selector}, }; use hex::FromHex; use risc0_aggregation::{SetInclusionReceipt, SetInclusionReceiptVerifierParameters}; @@ -172,19 +172,19 @@ where Ok(encoded_seal) } - async fn fetch_encode_shrink_seal(&self, bitvm2_proof_id: &str) -> Result> { - let bitvm2_receipt = self + async fn fetch_encode_b3_g16(&self, b3_g16_proof_id: &str) -> Result> { + let groth16_receipt = self .prover - .get_bitvm2_receipt(bitvm2_proof_id) + .get_blake3_groth16_receipt(b3_g16_proof_id) .await - .context("Failed to fetch BitVM2 receipt")? - .context("BitVM2 receipt missing")?; + .context("Failed to fetch blake3 groth16 receipt")? + .context("Blake3 Groth16 receipt missing")?; - let bitvm2_receipt: Receipt = bincode::deserialize(&bitvm2_receipt) - .context("Failed to deserialize BitVM2 receipt")?; + let groth16_receipt: Receipt = bincode::deserialize(&groth16_receipt) + .context("Failed to deserialize Blake3 Groth16 receipt")?; - let encoded_seal = - encode_seal(&bitvm2_receipt).context("Failed to encode BitVM2 receipt seal")?; + let encoded_seal = encode_seal(&groth16_receipt) + .context("Failed to encode Blake3 Groth16 receipt seal")?; Ok(encoded_seal) } @@ -320,14 +320,14 @@ where self.fetch_encode_g16(&compressed_proof_id) .await .context("Failed to fetch and encode g16 proof")? - } else if is_shrink_bitvm2_selector(order_request.requirements.selector) { + } else if is_blake3_groth16_selector(order_request.requirements.selector) { let compressed_proof_id = self.db.get_order_compressed_proof_id(order_id).await.context( "Failed to get order compressed proof ID from DB for submission", )?; - self.fetch_encode_shrink_seal(&compressed_proof_id) + self.fetch_encode_b3_g16(&compressed_proof_id) .await - .context("Failed to fetch and encode bitvm2 proof")? + .context("Failed to fetch and encode blake3 groth16 proof")? } else { let order_claim_index = aggregation_state .claim_digests diff --git a/crates/broker/src/utils.rs b/crates/broker/src/utils.rs index fc64fcb80..36af6c4de 100644 --- a/crates/broker/src/utils.rs +++ b/crates/broker/src/utils.rs @@ -112,7 +112,7 @@ pub async fn estimate_gas_to_fulfill( .context("unsupported selector")? { ProofType::Any | ProofType::Inclusion => 0, - ProofType::Groth16 | ProofType::ShrinkBitvm2 => groth16, + ProofType::Groth16 | ProofType::Blake3Groth16 => groth16, proof_type => { tracing::warn!("Unknown proof type in gas cost estimation: {proof_type:?}"); 0 diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index f515768b3..8f39be71a 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -2,6 +2,17 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -762,6 +773,15 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-bn254" version = "0.5.0" @@ -793,6 +813,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -822,9 +843,10 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -839,7 +861,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.3.3", @@ -859,7 +881,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.4.1", @@ -880,9 +902,10 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -922,7 +945,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "quote", "syn 1.0.109", @@ -934,7 +957,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -947,7 +970,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -967,6 +990,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -982,6 +1006,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -995,7 +1020,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "tracing", @@ -1031,7 +1056,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1044,7 +1069,8 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1098,6 +1124,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1106,6 +1133,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -1408,7 +1441,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ - "bindgen", + "bindgen 0.69.5", "cc", "cmake", "dunce", @@ -1801,6 +1834,26 @@ dependencies = [ "which", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.106", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -1880,6 +1933,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -1920,6 +1986,32 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.16", + "tokio", +] + [[package]] name = "borsh" version = "1.5.7" @@ -1986,6 +2078,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "shrink_bitvm2", "siwe", "tempfile", "thiserror 2.0.16", @@ -2150,6 +2243,35 @@ dependencies = [ "windows-link", ] +[[package]] +name = "circom-witnesscalc" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3fb734f91de7e7002678ea3238fddfd4ee7afd33e9ed975176f4a94794a55a" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "bindgen 0.72.1", + "byteorder", + "indicatif", + "libc", + "memmap2", + "num-bigint 0.4.6", + "num-traits", + "prost", + "prost-build", + "rand 0.8.5", + "ruint", + "serde", + "serde_json", + "tempfile", + "thiserror 2.0.16", + "winnow", + "wtns-file", +] + [[package]] name = "clang-sys" version = "1.8.1" @@ -2234,6 +2356,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "console" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "unicode-width", + "windows-sys 0.59.0", +] + [[package]] name = "const-hex" version = "1.15.0" @@ -2273,6 +2408,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2362,6 +2503,25 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2386,6 +2546,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -2541,6 +2710,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -2614,6 +2794,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs" version = "6.0.0" @@ -2679,12 +2868,37 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "duplicate" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" +dependencies = [ + "heck", + "proc-macro2", + "proc-macro2-diagnostics", +] + [[package]] name = "dyn-clone" version = "1.0.20" @@ -2806,6 +3020,12 @@ dependencies = [ "log", ] +[[package]] +name = "encode_unicode" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + [[package]] name = "encoding_rs" version = "0.8.35" @@ -2922,10 +3142,28 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ + "bitvec", + "byteorder", + "ff_derive", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "find-msvc-tools" version = "0.1.0" @@ -2950,6 +3188,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3151,8 +3399,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -3162,9 +3412,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.3+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -3534,6 +3786,7 @@ dependencies = [ "tokio", "tokio-rustls 0.26.2", "tower-service", + "webpki-roots", ] [[package]] @@ -3763,6 +4016,19 @@ dependencies = [ "serde", ] +[[package]] +name = "indicatif" +version = "0.17.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", + "web-time", +] + [[package]] name = "io-uring" version = "0.7.10" @@ -4047,9 +4313,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -4072,6 +4338,12 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "macro-string" version = "0.1.4" @@ -4101,6 +4373,27 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "md-5" version = "0.10.6" @@ -4117,6 +4410,15 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + [[package]] name = "merlin" version = "3.0.0" @@ -4173,6 +4475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -4186,6 +4489,12 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + [[package]] name = "native-tls" version = "0.2.14" @@ -4203,6 +4512,22 @@ dependencies = [ "tempfile", ] +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "rayon", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4234,6 +4559,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4261,6 +4597,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -4328,6 +4673,21 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "nvtx" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" +dependencies = [ + "cc", +] + [[package]] name = "nybbles" version = "0.4.3" @@ -4647,6 +5007,21 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "postcard" version = "1.1.3" @@ -4751,6 +5126,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "version_check", +] + [[package]] name = "proptest" version = "1.7.0" @@ -4781,6 +5168,26 @@ dependencies = [ "prost-derive", ] +[[package]] +name = "prost-build" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +dependencies = [ + "heck", + "itertools 0.14.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.106", + "tempfile", +] + [[package]] name = "prost-derive" version = "0.13.5" @@ -4794,12 +5201,90 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] + +[[package]] +name = "puffin" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" +dependencies = [ + "anyhow", + "byteorder", + "cfg-if", + "itertools 0.10.5", + "once_cell", + "parking_lot", +] + [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "socket2 0.6.0", + "thiserror 2.0.16", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "rustls-pki-types", + "slab", + "thiserror 2.0.16", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.0", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.40" @@ -4892,6 +5377,32 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.5.17" @@ -4987,6 +5498,7 @@ dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", + "futures-channel", "futures-core", "futures-util", "h2 0.4.12", @@ -5004,6 +5516,8 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", + "quinn", + "rustls 0.23.31", "rustls-pki-types", "serde", "serde_json", @@ -5011,13 +5525,17 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", + "tokio-rustls 0.26.2", + "tokio-util", "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", + "webpki-roots", ] [[package]] @@ -5128,6 +5646,20 @@ dependencies = [ "tempfile", ] +[[package]] +name = "risc0-build-kernel" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +dependencies = [ + "cc", + "directories", + "hex", + "rayon", + "sha2", + "tempfile", +] + [[package]] name = "risc0-circuit-keccak" version = "4.0.2" @@ -5152,11 +5684,33 @@ checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", + "cfg-if", + "downloader", "hex", + "lazy-regex", "metal", + "rand 0.9.2", + "rayon", + "risc0-circuit-recursion-sys", "risc0-core", + "risc0-sys", "risc0-zkp", + "serde", + "sha2", "tracing", + "zip", +] + +[[package]] +name = "risc0-circuit-recursion-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +dependencies = [ + "glob", + "risc0-build-kernel", + "risc0-core", + "risc0-sys", ] [[package]] @@ -5184,6 +5738,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", + "nvtx", + "puffin", "rand_core 0.9.3", ] @@ -5220,13 +5776,23 @@ dependencies = [ "ark-serialize 0.5.0", "bytemuck", "hex", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] +[[package]] +name = "risc0-sys" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +dependencies = [ + "anyhow", + "risc0-build-kernel", +] + [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" @@ -5250,12 +5816,18 @@ dependencies = [ "bytemuck", "cfg-if", "digest 0.10.7", + "ff 0.13.1", "hex", "hex-literal", "metal", + "ndarray", + "parking_lot", "paste", + "rand 0.9.2", "rand_core 0.9.3", + "rayon", "risc0-core", + "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", @@ -5271,6 +5843,7 @@ checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "anyhow", "bincode", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -5389,7 +5962,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "parity-scale-codec", @@ -5498,6 +6071,7 @@ checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", + "ring", "rustls-pki-types", "rustls-webpki 0.103.4", "subtle", @@ -5543,6 +6117,7 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ + "web-time", "zeroize", ] @@ -5944,6 +6519,37 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shrink_bitvm2" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "signal-hook-registry" version = "1.4.6" @@ -5973,6 +6579,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "similar" version = "2.7.0" @@ -6345,6 +6957,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.47.1" @@ -6668,6 +7295,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -6887,6 +7520,19 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wasmtimer" version = "0.4.3" @@ -6911,6 +7557,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" @@ -7201,6 +7866,15 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +[[package]] +name = "wtns-file" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3b856452298f68a5879e3901918bac5d753ca9fa4be8a983a37a3d25dabf0a" +dependencies = [ + "byteorder", +] + [[package]] name = "wyz" version = "0.5.1" @@ -7345,6 +8019,35 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.11.0", + "memchr", + "thiserror 2.0.16", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[patch.unused]] name = "sha2" version = "0.10.8" diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index 37090ad25..662ad067f 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -19,7 +19,7 @@ use alloy::{ use anyhow::{Context, Result}; use boundless_market::contracts::bytecode::RiscZeroVerifierRouter::RiscZeroVerifierRouterInstance; use boundless_market::contracts::bytecode::{ - RiscZeroBitvm2Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, + RiscZeroBlake3Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, RiscZeroSetVerifier, RiscZeroVerifierRouter, }; use hex::FromHex; @@ -49,16 +49,16 @@ pub async fn deploy_groth16_verifier( Ok(*instance.address()) } -/// Deploy a RiscZeroBitvm2Groth16Verifier contract -pub async fn deploy_bitvm2_verifier( +/// Deploy a RiscZeroBlake3Groth16Verifier contract +pub async fn deploy_blake3_groth16_verifier( deployer_provider: P, control_root: FixedBytes<32>, bn254_control_id: FixedBytes<32>, ) -> Result
{ let instance = - RiscZeroBitvm2Groth16Verifier::deploy(deployer_provider, control_root, bn254_control_id) + RiscZeroBlake3Groth16Verifier::deploy(deployer_provider, control_root, bn254_control_id) .await - .context("failed to deploy RiscZeroBitvm2Groth16Verifier")?; + .context("failed to deploy RiscZeroBlake3Groth16Verifier")?; Ok(*instance.address()) } @@ -133,28 +133,29 @@ pub async fn setup_verifiers( let router_instance = RiscZeroVerifierRouterInstance::new(verifier_router, deployer_provider.clone()); - // Deploying the bitvm2 verifier + // Deploying the blake3 groth16 verifier match is_dev_mode() { - true => println!("Skipping Bitvm2 verifier deployment in dev mode"), + true => println!("Skipping Blake3Groth16 verifier deployment in dev mode"), false => { let control_root = ALLOWED_CONTROL_ROOT; let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; bn254_control_id.as_mut_bytes().reverse(); let verifier_parameters_digest = Digest::from_hex( - "f9d5815ff56c30abce3427ca3209302e1f02d51c28067ee41fd5933cad3f5490", // TODO(ec2): fixme + "62f049f606e804744f1fac2485677bf7905c82a8174a55a1555532b0fc5b2ab3", // TODO(ec2): fixme ) .unwrap(); - let bvm2_verifier = deploy_bitvm2_verifier( + let b3_groth16_verifier = deploy_blake3_groth16_verifier( &deployer_provider, <[u8; 32]>::from(control_root).into(), <[u8; 32]>::from(bn254_control_id).into(), ) .await?; - let bvm2_selector = verifier_parameters_digest.as_bytes()[..4].try_into()?; + let b3_groth16_selector = verifier_parameters_digest.as_bytes()[..4].try_into()?; - let call = - &router_instance.addVerifier(bvm2_selector, bvm2_verifier).from(deployer_address); + let call = &router_instance + .addVerifier(b3_groth16_selector, b3_groth16_verifier) + .from(deployer_address); call.send().await?.get_receipt().await?; } } diff --git a/lib/risc0-ethereum b/lib/risc0-ethereum index a5bf55285..1d1e75e78 160000 --- a/lib/risc0-ethereum +++ b/lib/risc0-ethereum @@ -1 +1 @@ -Subproject commit a5bf55285c5ea2e65de9c53421987449e2db046d +Subproject commit 1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64 diff --git a/shrink_bitvm2/src/lib.rs b/shrink_bitvm2/src/lib.rs index 2975fa132..29626abfe 100644 --- a/shrink_bitvm2/src/lib.rs +++ b/shrink_bitvm2/src/lib.rs @@ -13,27 +13,27 @@ pub mod receipt_claim; pub mod verify; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. -pub async fn compress_bitvm2(receipt: &Receipt) -> Result { - tracing::debug!("Compressing receipt to shrink_bitvm2"); +pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { + tracing::debug!("Compressing receipt to blake3 groth16"); if is_dev_mode() { return Ok(receipt.clone()); } if default_prover().get_name() == "bonsai" { let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; - tracing::info!("Using bonsai to compress to shrink_bitvm2"); - return compress_bitvm2_with_bonsai(&client, receipt).await; + tracing::info!("Using bonsai to compress to blake3 groth16"); + return compress_blake3_groth16_bonsai(&client, receipt).await; } let receipt = receipt.clone(); #[cfg(not(feature = "prove"))] { Err(anyhow::anyhow!( - "shrink_bitvm2 must be built with the 'prove' feature to compress receipts locally" + "blake3_groth16 must be built with the 'prove' feature to compress receipts locally" )) } #[cfg(feature = "prove")] tokio::task::spawn_blocking(move || { let succinct_receipt = default_prover().compress(&ProverOpts::succinct(), &receipt)?; - tracing::debug!("Succinct receipt created, proceeding to convert to shrink_bitvm2"); + tracing::debug!("Succinct receipt created, proceeding to convert to blake3 groth16"); let receipt = succinct_receipt.clone(); let journal: [u8; 32] = receipt .journal @@ -41,7 +41,7 @@ pub async fn compress_bitvm2(receipt: &Receipt) -> Result { .as_slice() .try_into() .context("invalid journal length, expected 32 bytes for shrink blake3")?; - let seal = succinct_to_bitvm2( + let seal = succinct_to_blake3_groth16( receipt .inner .succinct() @@ -57,7 +57,7 @@ pub async fn compress_bitvm2(receipt: &Receipt) -> Result { /// It will first run the identity_p254 program to convert the STARK to BN254, /// which is more efficient to verify. #[cfg(feature = "prove")] -fn succinct_to_bitvm2( +fn succinct_to_blake3_groth16( succinct_receipt: &SuccinctReceipt, journal: [u8; 32], ) -> Result { @@ -97,7 +97,7 @@ fn finalize( let receipt_claim_value = receipt_claim.as_value().context("receipt claim must not be pruned")?; let blake3_claim_digest = - ShrinkBitvm2ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); + Blake3Groth16ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); verify::verify(seal, blake3_claim_digest)?; let verifier_parameters = crate::verify::verifier_parameters(); @@ -108,7 +108,7 @@ fn finalize( Ok(receipt) } -async fn compress_bitvm2_with_bonsai( +async fn compress_blake3_groth16_bonsai( client: &bonsai_sdk::non_blocking::Client, succinct_receipt: &Receipt, ) -> Result { @@ -153,7 +153,7 @@ mod tests { #[tokio::test] #[test_log::test] - async fn test_succinct_to_bitvm2() { + async fn test_succinct_to_blake3_groth16() { use guest_util::ECHO_ID; let input = [3u8; 32]; @@ -164,11 +164,11 @@ mod tests { // Produce a receipt by proving the specified ELF binary. let receipt = prover.prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()).unwrap().receipt; - tracing::info!("Initial receipt created, compressing to shrink_bitvm2"); - let groth16_receipt = compress_bitvm2(&receipt).await.unwrap(); + tracing::info!("Initial receipt created, compressing to blake3_groth16"); + let groth16_receipt = compress_blake3_groth16(&receipt).await.unwrap(); let groth16_receipt = groth16_receipt.inner.groth16().unwrap(); let blake3_g16_seal = Groth16Seal::decode(&groth16_receipt.seal).unwrap(); - let blake3_claim_digest = ShrinkBitvm2ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); + let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); } } diff --git a/shrink_bitvm2/src/prove/cuda.rs b/shrink_bitvm2/src/prove/cuda.rs index 959ad651f..530f773e3 100644 --- a/shrink_bitvm2/src/prove/cuda.rs +++ b/shrink_bitvm2/src/prove/cuda.rs @@ -33,21 +33,16 @@ impl CalcWitness { fn calculate_witness(graph_path: &Path, inputs: &str) -> Result { let witness_encoded = calculate_witness_encoded(graph_path, inputs)?; let wtns_f = wtns_file::WtnsFile::read(Cursor::new(witness_encoded))?; - Ok(CalcWitness { - witness: wtns_f.witness.0, - }) + Ok(CalcWitness { witness: wtns_f.witness.0 }) } pub fn shrink_wrap( work_dir: &Path, identity_seal_json: serde_json::Value, ) -> Result { - tracing::info!("shrink_wrap with cuda"); + tracing::info!("blake3 shrink_wrap with cuda"); let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); - let root_dir = root_dir - .as_ref() - .map(Path::new) - .expect("must provide BLAKE3_GROTH16_SETUP_DIR"); + let root_dir = root_dir.as_ref().map(Path::new).expect("must provide BLAKE3_GROTH16_SETUP_DIR"); let mut setup_params = SetupParams::new(root_dir).context("failed to create groth16 work directories")?; @@ -56,10 +51,8 @@ pub fn shrink_wrap( let mut witness_params = WitnessParams::new(root_dir); witness_params.graph_path = root_dir.join("verify_for_guest_graph.bin"); - let witness = calculate_witness( - &witness_params.graph_path, - identity_seal_json.to_string().as_str(), - )?; + let witness = + calculate_witness(&witness_params.graph_path, identity_seal_json.to_string().as_str())?; { let _lock = risc0_zkp::hal::cuda::singleton().lock(); diff --git a/shrink_bitvm2/src/prove/docker.rs b/shrink_bitvm2/src/prove/docker.rs index e02bf3599..39f24196e 100644 --- a/shrink_bitvm2/src/prove/docker.rs +++ b/shrink_bitvm2/src/prove/docker.rs @@ -10,7 +10,7 @@ pub fn shrink_wrap( work_dir: &Path, identity_seal_json: serde_json::Value, ) -> Result { - tracing::debug!("shrink_wrap with rapidsnark"); + tracing::debug!("blake3 shrink_wrap with rapidsnark"); if !is_docker_installed() { bail!("Please install docker first.") } diff --git a/shrink_bitvm2/src/prove/witgen.rs b/shrink_bitvm2/src/prove/witgen.rs index 12d6adc28..e50938c94 100644 --- a/shrink_bitvm2/src/prove/witgen.rs +++ b/shrink_bitvm2/src/prove/witgen.rs @@ -1,4 +1,4 @@ -use anyhow::{Result, anyhow}; +use anyhow::{anyhow, Result}; use std::path::Path; pub fn calculate_witness_encoded(graph_path: &Path, inputs: &str) -> Result> { diff --git a/shrink_bitvm2/src/receipt_claim.rs b/shrink_bitvm2/src/receipt_claim.rs index 2b4b7bd4a..62bdde9d9 100644 --- a/shrink_bitvm2/src/receipt_claim.rs +++ b/shrink_bitvm2/src/receipt_claim.rs @@ -8,7 +8,7 @@ use serde::{Deserialize, Serialize}; /// A claim about the guest program execution, such as the journal. /// The digest of this is what the BLAKE3 Groth16 proof outputs. #[derive(Clone, Debug, Serialize, Deserialize)] -pub struct ShrinkBitvm2ReceiptClaim { +pub struct Blake3Groth16ReceiptClaim { pub pre: MaybePruned, pub post: MaybePruned, /// Note: This journal has to be exactly 32 bytes @@ -18,7 +18,7 @@ pub struct ShrinkBitvm2ReceiptClaim { pub control_id: Digest, } -impl ShrinkBitvm2ReceiptClaim { +impl Blake3Groth16ReceiptClaim { pub fn ok(image_id: impl Into, journal: impl Into>) -> Self { Self::ok_with_ctx(image_id, journal, VerifierContext::default()) .expect("default verifier context is expected to supply succinct verifier parameters") @@ -37,10 +37,7 @@ impl ShrinkBitvm2ReceiptClaim { Ok(Self { control_root, pre: MaybePruned::Pruned(image_id.into()), - post: MaybePruned::Value(SystemState { - pc: 0, - merkle_root: Digest::ZERO, - }), + post: MaybePruned::Value(SystemState { pc: 0, merkle_root: Digest::ZERO }), control_id: crate::BN254_IDENTITY_CONTROL_ID, journal: journal.into(), }) @@ -87,7 +84,7 @@ impl ShrinkBitvm2ReceiptClaim { } } -impl risc0_binfmt::Digestible for ShrinkBitvm2ReceiptClaim { +impl risc0_binfmt::Digestible for Blake3Groth16ReceiptClaim { fn digest(&self) -> Digest { self.claim_digest_inner::() } diff --git a/xtask/src/bootstrap_blake3_groth16.rs b/xtask/src/bootstrap_blake3_groth16.rs index 496f66b91..ff60b8ee0 100644 --- a/xtask/src/bootstrap_blake3_groth16.rs +++ b/xtask/src/bootstrap_blake3_groth16.rs @@ -51,9 +51,9 @@ const SOL_HEADER: &str = r#"// Copyright 2025 RISC Zero, Inc. "#; -const SOLIDITY_VERIFIER_TARGET: &str = "contracts/src/bitvm/Groth16Verifier.sol"; -const SOLIDITY_CONTROL_ID_PATH: &str = "contracts/src/bitvm/ControlID.sol"; -const RUST_VERIFIER_PATH: &str = "shrink_bitvm2/src/verify.rs"; +const SOLIDITY_VERIFIER_TARGET: &str = "contracts/src/blake3_groth16/Groth16Verifier.sol"; +const SOLIDITY_CONTROL_ID_PATH: &str = "contracts/src/blake3_groth16/ControlID.sol"; +const RUST_VERIFIER_PATH: &str = "blake3_groth16/src/verify.rs"; impl BootstrapBlake3Groth16 { pub fn run(&self) { From 65293bd5b86307ce64019bed7c0324b1a298bb59 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 18:52:54 -0500 Subject: [PATCH 30/86] renamed crate, still need to fix in bento --- Cargo.lock | 74 +++++++++---------- Cargo.toml | 4 +- {shrink_bitvm2 => blake3_groth16}/Cargo.toml | 2 +- {shrink_bitvm2 => blake3_groth16}/README.md | 0 .../dockerfiles/rapidsnark.dockerfile | 0 {shrink_bitvm2 => blake3_groth16}/src/lib.rs | 0 .../src/prove.rs | 0 .../src/prove/cuda.rs | 0 .../src/prove/docker.rs | 0 .../src/prove/witgen.rs | 0 .../src/receipt_claim.rs | 0 .../src/verify.rs | 0 crates/boundless-cli/Cargo.toml | 6 +- crates/boundless-cli/src/lib.rs | 2 +- crates/boundless-market/Cargo.toml | 14 +++- .../src/request_builder/requirements_layer.rs | 2 +- crates/broker/Cargo.toml | 18 ++++- crates/broker/src/provers/default.rs | 6 +- 18 files changed, 74 insertions(+), 54 deletions(-) rename {shrink_bitvm2 => blake3_groth16}/Cargo.toml (98%) rename {shrink_bitvm2 => blake3_groth16}/README.md (100%) rename {shrink_bitvm2 => blake3_groth16}/dockerfiles/rapidsnark.dockerfile (100%) rename {shrink_bitvm2 => blake3_groth16}/src/lib.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/prove.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/prove/cuda.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/prove/docker.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/prove/witgen.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/receipt_claim.rs (100%) rename {shrink_bitvm2 => blake3_groth16}/src/verify.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 943bed0c4..8d4d368b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2564,6 +2564,40 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "guest-util", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-groth16", + "risc0-groth16-sys", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2 0.10.9", + "tempfile", + "test-log", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2718,6 +2752,7 @@ dependencies = [ "assert_fs", "atomicwrites", "bincode", + "blake3_groth16", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", @@ -2750,7 +2785,6 @@ dependencies = [ "serde_json", "serde_yaml 0.9.34+deprecated", "shadow-rs", - "shrink_bitvm2", "sqlx", "tabled", "tempfile", @@ -2831,6 +2865,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "boundless-test-utils", "bytemuck", "chrono", @@ -2851,7 +2886,6 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.9", - "shrink_bitvm2", "siwe", "tempfile", "thiserror 2.0.17", @@ -3027,6 +3061,7 @@ dependencies = [ "aws-sdk-s3", "aws-smithy-http-client", "bincode", + "blake3_groth16", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", @@ -3061,7 +3096,6 @@ dependencies = [ "serde_json", "serial_test", "sha2 0.10.9", - "shrink_bitvm2", "sqlx", "temp-env", "tempfile", @@ -9948,40 +9982,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "shrink_bitvm2" -version = "1.1.0" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "bincode", - "blake3", - "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", - "circom-witnesscalc", - "crypto-bigint 0.5.2", - "guest-util", - "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-groth16", - "risc0-groth16-sys", - "risc0-zkp", - "risc0-zkvm", - "serde", - "serde_json", - "sha2 0.10.9", - "tempfile", - "test-log", - "tokio", - "tracing", - "wtns-file", -] - [[package]] name = "signal-hook" version = "0.3.18" diff --git a/Cargo.toml b/Cargo.toml index 3f99c5631..1c63a4a51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ members = [ "crates/povw", "crates/requestor-lists", "crates/rewards", - "shrink_bitvm2", + "blake3_groth16", "crates/slasher", "crates/test-utils", "crates/zkc", @@ -44,7 +44,7 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -shrink_bitvm2 = { path = "shrink_bitvm2", default-features = false } +blake3_groth16 = { path = "blake3_groth16", default-features = false } requestor-lists = { path = "crates/requestor-lists" } alloy = { version = "1.0", default-features = false } diff --git a/shrink_bitvm2/Cargo.toml b/blake3_groth16/Cargo.toml similarity index 98% rename from shrink_bitvm2/Cargo.toml rename to blake3_groth16/Cargo.toml index dcbe9a0ae..e53df667e 100644 --- a/shrink_bitvm2/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "shrink_bitvm2" +name = "blake3_groth16" version.workspace = true edition.workspace = true homepage.workspace = true diff --git a/shrink_bitvm2/README.md b/blake3_groth16/README.md similarity index 100% rename from shrink_bitvm2/README.md rename to blake3_groth16/README.md diff --git a/shrink_bitvm2/dockerfiles/rapidsnark.dockerfile b/blake3_groth16/dockerfiles/rapidsnark.dockerfile similarity index 100% rename from shrink_bitvm2/dockerfiles/rapidsnark.dockerfile rename to blake3_groth16/dockerfiles/rapidsnark.dockerfile diff --git a/shrink_bitvm2/src/lib.rs b/blake3_groth16/src/lib.rs similarity index 100% rename from shrink_bitvm2/src/lib.rs rename to blake3_groth16/src/lib.rs diff --git a/shrink_bitvm2/src/prove.rs b/blake3_groth16/src/prove.rs similarity index 100% rename from shrink_bitvm2/src/prove.rs rename to blake3_groth16/src/prove.rs diff --git a/shrink_bitvm2/src/prove/cuda.rs b/blake3_groth16/src/prove/cuda.rs similarity index 100% rename from shrink_bitvm2/src/prove/cuda.rs rename to blake3_groth16/src/prove/cuda.rs diff --git a/shrink_bitvm2/src/prove/docker.rs b/blake3_groth16/src/prove/docker.rs similarity index 100% rename from shrink_bitvm2/src/prove/docker.rs rename to blake3_groth16/src/prove/docker.rs diff --git a/shrink_bitvm2/src/prove/witgen.rs b/blake3_groth16/src/prove/witgen.rs similarity index 100% rename from shrink_bitvm2/src/prove/witgen.rs rename to blake3_groth16/src/prove/witgen.rs diff --git a/shrink_bitvm2/src/receipt_claim.rs b/blake3_groth16/src/receipt_claim.rs similarity index 100% rename from shrink_bitvm2/src/receipt_claim.rs rename to blake3_groth16/src/receipt_claim.rs diff --git a/shrink_bitvm2/src/verify.rs b/blake3_groth16/src/verify.rs similarity index 100% rename from shrink_bitvm2/src/verify.rs rename to blake3_groth16/src/verify.rs diff --git a/crates/boundless-cli/Cargo.toml b/crates/boundless-cli/Cargo.toml index bd7b7145c..aef1535fc 100644 --- a/crates/boundless-cli/Cargo.toml +++ b/crates/boundless-cli/Cargo.toml @@ -46,7 +46,7 @@ serde = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } shadow-rs = { version = "1.1", default-features = false } -shrink_bitvm2 = { workspace = true } +blake3_groth16 = { workspace = true } sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } tabled = "0.15" tokio = { workspace = true, features = ["rt-multi-thread"] } @@ -78,6 +78,6 @@ tracing-test = { workspace = true } test-log = { workspace = true } [features] # Enables the prove feature on risc0-zkvm to build the prover directly into this CLI. -prove = ["risc0-zkvm/prove", "shrink_bitvm2/prove"] +prove = ["risc0-zkvm/prove", "blake3_groth16/prove"] # Enables the cuda feature on risc0-zkvm to build the prover directly into this CLI, with CUDA support. -cuda = ["prove", "risc0-zkvm/cuda", "shrink_bitvm2/cuda"] +cuda = ["prove", "risc0-zkvm/cuda", "blake3_groth16/cuda"] diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index ffc4d0dc0..ef43d9213 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -625,6 +625,7 @@ mod tests { primitives::{FixedBytes, Signature, U256}, signers::local::PrivateKeySigner, }; + use blake3_groth16::Blake3Groth16ReceiptClaim; use boundless_market::contracts::{ eip712_domain, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, UNSPECIFIED_SELECTOR, @@ -632,7 +633,6 @@ mod tests { use boundless_test_utils::guests::{ECHO_ID, ECHO_PATH}; use boundless_test_utils::market::create_test_ctx; use risc0_ethereum_contracts::selector::Selector; - use shrink_bitvm2::Blake3Groth16ReceiptClaim; use std::sync::Arc; async fn setup_proving_request_and_signature( diff --git a/crates/boundless-market/Cargo.toml b/crates/boundless-market/Cargo.toml index 9e73be07c..1dc8dc8e9 100644 --- a/crates/boundless-market/Cargo.toml +++ b/crates/boundless-market/Cargo.toml @@ -26,7 +26,17 @@ url = { workspace = true } # Host dependencies [target.'cfg(not(target_os = "zkvm"))'.dependencies] derive_builder = "0.20.2" -alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } +alloy = { workspace = true, features = [ + "network", + "node-bindings", + "rpc-types", + "providers", + "transports", + "sol-types", + "contract", + "signers", + "signer-local", +] } async-stream = { workspace = true } async-trait = "0.1" aws-sdk-s3 = "1.34" @@ -45,7 +55,7 @@ risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-zkvm = { workspace = true, features = ["std", "client"] } rmp-serde = { workspace = true } serde_json = { workspace = true } -shrink_bitvm2 = { workspace = true, default-features = false } +blake3_groth16 = { workspace = true, default-features = false } tempfile = { workspace = true } tokio = { workspace = true } tokio-tungstenite = { workspace = true } diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index 81e315110..9a45d9000 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -161,7 +161,7 @@ impl Layer<(Digest, &Journal, &RequirementParams)> for RequirementsLayer { if let Some(selector) = ¶ms.selector { if is_blake3_groth16_selector(*selector) { predicate = Some(params.predicate.clone().unwrap_or_else(|| { - let blake3_claim_digest = shrink_bitvm2::Blake3Groth16ReceiptClaim::ok( + let blake3_claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok( image_id, journal.bytes.clone(), ) diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index f75af6cca..84060400e 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -11,7 +11,17 @@ publish = false release = false [dependencies] -alloy = { workspace = true, features = ["network", "providers", "transports", "sol-types", "contract", "signers", "signer-local", "rpc", "rpc-types"] } +alloy = { workspace = true, features = [ + "network", + "providers", + "transports", + "sol-types", + "contract", + "signers", + "signer-local", + "rpc", + "rpc-types", +] } alloy-chains = "0.2.0" anyhow = { workspace = true } async-channel = "2.3" @@ -57,7 +67,7 @@ uuid = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" -shrink_bitvm2 = { workspace = true } +blake3_groth16 = { workspace = true } [dev-dependencies] alloy = { workspace = true, features = ["node-bindings"] } @@ -82,5 +92,5 @@ test-log = { workspace = true } [features] test-utils = ["dep:boundless-test-utils"] -prove = ["shrink_bitvm2/prove"] -cuda = ["shrink_bitvm2/cuda"] +prove = ["blake3_groth16/prove"] +cuda = ["blake3_groth16/cuda"] diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 569f59e4b..cd6c01506 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -413,7 +413,7 @@ impl Prover for DefaultProver { self.state.proofs.write().await.insert(proof_id.clone(), ProofData::default()); let compress_result = - shrink_bitvm2::compress_blake3_groth16(&receipt).await.map_err(ProverError::from); + blake3_groth16::compress_blake3_groth16(&receipt).await.map_err(ProverError::from); let compressed_bytes = compress_result .as_ref() @@ -593,8 +593,8 @@ mod tests { let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) .expect("Failed to create Groth16 seal from receipt"); let claim_digest = - shrink_bitvm2::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); - shrink_bitvm2::verify::verify(&groth16_seal, claim_digest) + blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); + blake3_groth16::verify::verify(&groth16_seal, claim_digest) .expect("Failed to verify Shrink to blake3 groth16 receipt"); } } From 53b3d3aee2fe5e23c56c6b961c9683cde6605cb4 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 6 Nov 2025 19:02:06 -0500 Subject: [PATCH 31/86] rename in bento --- bento/Cargo.lock | 116 ++++++++++-------- bento/Cargo.toml | 2 +- bento/crates/api/src/lib.rs | 26 ++-- bento/crates/workflow-common/src/lib.rs | 2 +- bento/crates/workflow-common/src/s3.rs | 4 +- bento/crates/workflow/Cargo.toml | 10 +- bento/crates/workflow/src/tasks/snark.rs | 10 +- .../guest/assessor/assessor-guest/Cargo.lock | 64 +++++----- dockerfiles/broker.dockerfile | 4 +- 9 files changed, 125 insertions(+), 113 deletions(-) diff --git a/bento/Cargo.lock b/bento/Cargo.lock index e63e90f54..788964bf3 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -158,7 +158,7 @@ version = "0.1.0" dependencies = [ "anyhow", "axum", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "clap", "risc0-zkvm", "serde", @@ -1039,7 +1039,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bincode", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "bytemuck", "clap", "risc0-zkvm", @@ -1171,6 +1171,38 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-groth16", + "risc0-groth16-sys", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -1198,6 +1230,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.16", +] + [[package]] name = "bonsai-sdk" version = "1.4.1" @@ -4668,7 +4712,7 @@ checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "borsh", @@ -4689,7 +4733,7 @@ dependencies = [ [[package]] name = "risc0-build" version = "3.0.3" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "cargo_metadata", @@ -4712,7 +4756,7 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "directories", @@ -4725,7 +4769,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bytemuck", @@ -4746,7 +4790,7 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "cust", @@ -4761,7 +4805,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bytemuck", @@ -4786,7 +4830,7 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "glob", "risc0-build-kernel", @@ -4798,7 +4842,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "bit-vec", @@ -4831,7 +4875,7 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "cc", "cust", @@ -4846,7 +4890,7 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "bytemuck", "nvtx", @@ -4857,7 +4901,7 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "ark-bn254", @@ -4886,7 +4930,7 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blst", @@ -4897,7 +4941,7 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blst", @@ -4909,7 +4953,7 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -4919,7 +4963,7 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "anyhow", "blake2", @@ -4950,11 +4994,12 @@ dependencies = [ [[package]] name = "risc0-zkvm" version = "3.0.3" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "addr2line", "anyhow", "bincode", + "bonsai-sdk 1.4.1 (git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370)", "borsh", "bytemuck", "bytes", @@ -4998,7 +5043,7 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" version = "2.2.0" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "bytemuck", "cfg-if", @@ -5315,7 +5360,7 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "git+https://github.com/ec2/risc0.git?rev=193ebbb3ea5e7a73388cb97724c7581116c58839#193ebbb3ea5e7a73388cb97724c7581116c58839" +source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" dependencies = [ "hex", "rsa", @@ -5627,35 +5672,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "shrink_bitvm2" -version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=e3933355820e468a217387dd11fa0a1a0fc309ed#e3933355820e468a217387dd11fa0a1a0fc309ed" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "blake3", - "circom-witnesscalc", - "crypto-bigint 0.5.2", - "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-circuit-recursion", - "risc0-groth16", - "risc0-groth16-sys", - "risc0-zkp", - "risc0-zkvm", - "serde", - "serde_json", - "sha2", - "tempfile", - "tracing", - "wtns-file", -] - [[package]] name = "signal-hook" version = "0.3.18" @@ -7191,6 +7207,7 @@ version = "0.1.0" dependencies = [ "anyhow", "bincode", + "blake3_groth16", "bytemuck", "clap", "deadpool-redis", @@ -7202,7 +7219,6 @@ dependencies = [ "risc0-zkvm", "serde", "serde_json", - "shrink_bitvm2", "signal-hook", "sqlx", "taskdb", diff --git a/bento/Cargo.toml b/bento/Cargo.toml index 8c3d20d2a..b5d7f5973 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -38,7 +38,7 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -shrink_bitvm2 = { path = "../shrink_bitvm2", default-features = false } +blake3_groth16 = { path = "../blake3_groth16", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/bento/crates/api/src/lib.rs b/bento/crates/api/src/lib.rs index 24bf4b561..581517eb4 100644 --- a/bento/crates/api/src/lib.rs +++ b/bento/crates/api/src/lib.rs @@ -28,8 +28,8 @@ use workflow_common::{ CompressType, ExecutorReq, SNARK_RETRIES_DEFAULT, SNARK_TIMEOUT_DEFAULT, SnarkReq as WorkflowSnarkReq, TaskType, s3::{ - ELF_BUCKET_DIR, GROTH16_BUCKET_DIR, INPUT_BUCKET_DIR, PREFLIGHT_JOURNALS_BUCKET_DIR, - RECEIPT_BUCKET_DIR, S3Client, SHRINK_BITVM2_BUCKET_DIR, STARK_BUCKET_DIR, + BLAKE3_GROTH16_BUCKET_DIR, ELF_BUCKET_DIR, GROTH16_BUCKET_DIR, INPUT_BUCKET_DIR, + PREFLIGHT_JOURNALS_BUCKET_DIR, RECEIPT_BUCKET_DIR, S3Client, STARK_BUCKET_DIR, WORK_RECEIPTS_BUCKET_DIR, }, }; @@ -622,8 +622,8 @@ async fn prove_groth16( Ok(Json(CreateSessRes { uuid: job_id.to_string() })) } -const SHRINK_BITVM2_START_PATH: &str = "/shrink_bitvm2/create"; -async fn shrink_bitvm2( +const BLAKE3_GROTH16_START_PATH: &str = "/shrink_bitvm2/create"; +async fn prove_blake3_groth16( State(state): State>, ExtractApiKey(api_key): ExtractApiKey, Json(start_req): Json, @@ -635,7 +635,7 @@ async fn shrink_bitvm2( let task_def = serde_json::to_value(TaskType::Snark(WorkflowSnarkReq { receipt: start_req.session_id, - compress_type: CompressType::ShrinkBitvm2, + compress_type: CompressType::Blake3Groth16, })) .context("Failed to serialize ExecutorReq")?; @@ -652,8 +652,8 @@ async fn shrink_bitvm2( Ok(Json(CreateSessRes { uuid: job_id.to_string() })) } -const SHRINK_BITVM2_STATUS_PATH: &str = "/shrink_bitvm2/status/:job_id"; -async fn shrink_bitvm2_status( +const BLAKE3_GROTH16_STATUS_PATH: &str = "/shrink_bitvm2/status/:job_id"; +async fn blake3_groth16_status( State(state): State>, ExtractApiKey(api_key): ExtractApiKey, Path(job_id): Path, @@ -749,12 +749,12 @@ async fn groth16_download( Ok(receipt) } -const GET_SHRINK_BITVM2_PATH: &str = "/receipts/shrink_bitvm2/receipt/:job_id"; -async fn shrink_bitvm2_download( +const GET_BLAKE3_GROTH16_PATH: &str = "/receipts/shrink_bitvm2/receipt/:job_id"; +async fn blake3_groth16_download( State(state): State>, Path(job_id): Path, ) -> Result, AppError> { - let receipt_key = format!("{RECEIPT_BUCKET_DIR}/{SHRINK_BITVM2_BUCKET_DIR}/{job_id}.bincode"); + let receipt_key = format!("{RECEIPT_BUCKET_DIR}/{BLAKE3_GROTH16_BUCKET_DIR}/{job_id}.bincode"); if !state .s3_client .object_exists(&receipt_key) @@ -930,10 +930,10 @@ pub fn app(state: Arc) -> Router { .route(GET_JOURNAL_PATH, get(preflight_journal)) .route(SNARK_START_PATH, post(prove_groth16)) .route(SNARK_STATUS_PATH, get(groth16_status)) - .route(SHRINK_BITVM2_START_PATH, post(shrink_bitvm2)) - .route(SHRINK_BITVM2_STATUS_PATH, get(shrink_bitvm2_status)) + .route(BLAKE3_GROTH16_START_PATH, post(prove_blake3_groth16)) + .route(BLAKE3_GROTH16_STATUS_PATH, get(blake3_groth16_status)) .route(GET_GROTH16_PATH, get(groth16_download)) - .route(GET_SHRINK_BITVM2_PATH, get(shrink_bitvm2_download)) + .route(GET_BLAKE3_GROTH16_PATH, get(blake3_groth16_download)) .route(GET_WORK_RECEIPT_PATH, get(get_work_receipt)) .route(LIST_WORK_RECEIPTS_PATH, get(list_work_receipts)) .with_state(state) diff --git a/bento/crates/workflow-common/src/lib.rs b/bento/crates/workflow-common/src/lib.rs index 8d5489d1b..921dffd0e 100644 --- a/bento/crates/workflow-common/src/lib.rs +++ b/bento/crates/workflow-common/src/lib.rs @@ -33,7 +33,7 @@ pub const SNARK_TIMEOUT_DEFAULT: i32 = 60; pub enum CompressType { None, Groth16, - ShrinkBitvm2, + Blake3Groth16, } impl Default for CompressType { diff --git a/bento/crates/workflow-common/src/s3.rs b/bento/crates/workflow-common/src/s3.rs index 4a900b7bd..3662801ea 100644 --- a/bento/crates/workflow-common/src/s3.rs +++ b/bento/crates/workflow-common/src/s3.rs @@ -34,8 +34,8 @@ pub const STARK_BUCKET_DIR: &str = "stark"; /// Object store receipts groth16 dir pub const GROTH16_BUCKET_DIR: &str = "groth16"; -/// Object store receipts shrink_bitvm2 dir -pub const SHRINK_BITVM2_BUCKET_DIR: &str = "shrink_bitvm2"; +/// Object store receipts blake3_groth16 dir +pub const BLAKE3_GROTH16_BUCKET_DIR: &str = "blake3_groth16"; /// Object store work receipts dir pub const WORK_RECEIPTS_BUCKET_DIR: &str = "work_receipts"; diff --git a/bento/crates/workflow/Cargo.toml b/bento/crates/workflow/Cargo.toml index 0d283c410..676b3c106 100644 --- a/bento/crates/workflow/Cargo.toml +++ b/bento/crates/workflow/Cargo.toml @@ -16,7 +16,7 @@ path = "src/bin/agent.rs" [features] default = [] -cuda = ["risc0-zkvm/cuda", "shrink_bitvm2/cuda"] +cuda = ["risc0-zkvm/cuda", "blake3_groth16/cuda"] [dependencies] anyhow = { workspace = true } @@ -29,14 +29,10 @@ nix = { version = "0.29", features = ["fs"] } rand = { workspace = true } redis = { workspace = true, features = ["tokio-rustls-comp", "tokio-comp"] } risc0-binfmt = { workspace = true } -risc0-zkvm = { workspace = true, default-features = false, features = [ - "prove", -] } +risc0-zkvm = { workspace = true, default-features = false, features = ["prove"] } serde = { workspace = true } serde_json = { workspace = true } -shrink_bitvm2 = { workspace = true, features = [ - "prove", -]} +blake3_groth16 = { workspace = true, features = ["prove"] } signal-hook = "0.3" sqlx = { workspace = true } taskdb = { workspace = true } diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 09d631de8..afbd716cc 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -8,7 +8,7 @@ use anyhow::{Context as _, Result, bail}; use risc0_zkvm::{InnerReceipt, ProverOpts, Receipt}; use workflow_common::{ CompressType, SnarkReq, SnarkResp, - s3::{GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, SHRINK_BITVM2_BUCKET_DIR, STARK_BUCKET_DIR}, + s3::{BLAKE3_GROTH16_BUCKET_DIR, GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, }; /// Converts a stark, stored in s3 to a snark @@ -35,11 +35,11 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .context("groth16 compress failed")?, GROTH16_BUCKET_DIR, ), - CompressType::ShrinkBitvm2 => ( - shrink_bitvm2::compress_bitvm2(&receipt) + CompressType::Blake3Groth16 => ( + blake3_groth16::compress_blake3_groth16(&receipt) .await - .context("shrink blake3 groth16 failed")?, - SHRINK_BITVM2_BUCKET_DIR, + .context("blake3 groth16 compress failed")?, + BLAKE3_GROTH16_BUCKET_DIR, ), }; if !matches!(snark_receipt.inner, InnerReceipt::Groth16(_)) { diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index 8f39be71a..f21e7850b 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -1946,6 +1946,37 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2060,6 +2091,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "bytemuck", "chrono", "clap", @@ -2078,7 +2110,6 @@ dependencies = [ "serde", "serde_json", "sha2", - "shrink_bitvm2", "siwe", "tempfile", "thiserror 2.0.16", @@ -6519,37 +6550,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "shrink_bitvm2" -version = "1.1.0" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "bincode", - "blake3", - "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", - "circom-witnesscalc", - "crypto-bigint 0.5.2", - "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-groth16", - "risc0-zkp", - "risc0-zkvm", - "serde", - "serde_json", - "sha2", - "tempfile", - "tokio", - "tracing", - "wtns-file", -] - [[package]] name = "signal-hook-registry" version = "1.4.6" diff --git a/dockerfiles/broker.dockerfile b/dockerfiles/broker.dockerfile index e76e92e5f..ba6349ff8 100644 --- a/dockerfiles/broker.dockerfile +++ b/dockerfiles/broker.dockerfile @@ -40,7 +40,7 @@ COPY documentation/ ./documentation/ COPY lib/ ./lib/ COPY remappings.txt . COPY foundry.toml . -COPY shrink_bitvm2/ ./shrink_bitvm2/ +COPY blake3_groth16/ ./blake3_groth16/ COPY xtask/ ./xtask/ RUN cargo chef prepare --recipe-path recipe.json @@ -61,7 +61,7 @@ COPY documentation/ ./documentation/ COPY lib/ ./lib/ COPY remappings.txt . COPY foundry.toml . -COPY shrink_bitvm2/ ./shrink_bitvm2/ +COPY blake3_groth16/ ./blake3_groth16/ COPY xtask/ ./xtask/ ENV PATH="$PATH:/root/.foundry/bin" From 49764c56c7d960915c10e0914d048d52ad05ab95 Mon Sep 17 00:00:00 2001 From: Eric Date: Wed, 12 Nov 2025 16:18:01 -0500 Subject: [PATCH 32/86] fix cli test --- crates/boundless-cli/src/lib.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index ef43d9213..66c1b268b 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -693,8 +693,13 @@ mod tests { } #[tokio::test] - #[tracing_test::traced_test] + #[ignore = "runs a proof; slow without RISC0_DEV_MODE=1"] async fn test_fulfill_blake3_groth16_selector() { + let anvil = Anvil::new().spawn(); + let ctx = create_test_ctx(&anvil).await.unwrap(); + let client = + boundless_market::Client::new(ctx.customer_market.clone(), ctx.set_verifier.clone()); + let input = [255u8; 32].to_vec(); // Example output data let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(Digest::from(ECHO_ID), input.clone()).digest(); @@ -705,14 +710,19 @@ mod tests { .with_selector(FixedBytes::from(Selector::blake3_groth16_latest() as u32)), format!("file://{ECHO_PATH}"), RequestInput::builder().write_slice(&input).build_inline().unwrap(), - Offer::default(), + Offer::default() + .with_timeout(60) + .with_lock_timeout(30) + .with_max_price(U256::from(1000)) + .with_ramp_up_start(10), ); let signature = request.sign_request(&signer, Address::ZERO, 1).await.unwrap(); - let domain = eip712_domain(Address::ZERO, 1); + let prover: Arc = Arc::new(BrokerDefaultProver::default()); let mut fulfiller = OrderFulfiller::initialize(prover, &client).await.unwrap(); fulfiller.domain = eip712_domain(Address::ZERO, 1); + fulfiller.fulfill(&[(request, signature.as_bytes().into())]).await.unwrap(); } } From 69ca18a1fb7ea206a063b083885b3f35d02c8813 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 12:52:04 -0500 Subject: [PATCH 33/86] dev mode receipts impl --- blake3_groth16/src/lib.rs | 33 +++++++++++++++++++----- blake3_groth16/src/verify.rs | 38 ++++++++++++++++++++++++---- crates/broker/src/provers/default.rs | 12 ++++----- 3 files changed, 64 insertions(+), 19 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 29626abfe..39682bc6f 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -2,7 +2,9 @@ use anyhow::{Context, Result}; pub use receipt_claim::*; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; -use risc0_zkvm::{default_prover, MaybePruned, ProverOpts, Receipt, ReceiptClaim, SuccinctReceipt}; +use risc0_zkvm::{ + default_prover, InnerReceipt, MaybePruned, ProverOpts, Receipt, ReceiptClaim, SuccinctReceipt, +}; #[cfg(feature = "prove")] use {risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt, std::path::Path, tempfile::tempdir}; @@ -16,7 +18,26 @@ pub mod verify; pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { tracing::debug!("Compressing receipt to blake3 groth16"); if is_dev_mode() { - return Ok(receipt.clone()); + println!("RISC0_DEV_MODE is set, skipping actual blake3 groth16 compression and returning fake receipt"); + let mut receipt = receipt.clone(); + let image_id = + receipt.claim()?.as_value().context("receipt claim must not be pruned")?.pre.digest(); + let journal: [u8; 32] = receipt + .journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for dev mode blake3 groth16")?; + let blake3_claim_digest = + Blake3Groth16ReceiptClaim::ok(image_id, journal.to_vec()).digest(); + if let InnerReceipt::Fake(fake_receipt) = &mut receipt.inner { + fake_receipt.claim = MaybePruned::Pruned(blake3_claim_digest) + } else { + return Err(anyhow::anyhow!( + "RISC0_DEV_MODE blake3_groth16 compression can only be used on fake receipts" + )); + } + return Ok(receipt); } if default_prover().get_name() == "bonsai" { let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; @@ -77,7 +98,7 @@ fn shrink_wrap( let tmp_dir = tempdir().context("failed to create temporary directory")?; let work_dir = std::env::var("BLAKE3_GROTH16_WORK_DIR"); - let work_dir = work_dir.as_ref().map(Path::new).unwrap_or(tmp_dir.path()); + let work_dir: &Path = work_dir.as_ref().map(Path::new).unwrap_or(tmp_dir.path()); #[cfg(feature = "cuda")] let proof_json = prove::cuda::shrink_wrap(work_dir, seal_json)?; @@ -98,7 +119,7 @@ fn finalize( receipt_claim.as_value().context("receipt claim must not be pruned")?; let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); - verify::verify(seal, blake3_claim_digest)?; + verify::verify_seal(&seal.to_vec(), blake3_claim_digest)?; let verifier_parameters = crate::verify::verifier_parameters(); let groth16_receipt = @@ -166,9 +187,7 @@ mod tests { prover.prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()).unwrap().receipt; tracing::info!("Initial receipt created, compressing to blake3_groth16"); let groth16_receipt = compress_blake3_groth16(&receipt).await.unwrap(); - let groth16_receipt = groth16_receipt.inner.groth16().unwrap(); - let blake3_g16_seal = Groth16Seal::decode(&groth16_receipt.seal).unwrap(); let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); - verify::verify(&blake3_g16_seal, blake3_claim_digest).expect("verification failed"); + verify::verify_receipt(&groth16_receipt, blake3_claim_digest).expect("verification failed"); } } diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 41366c9ea..8cf9dbd7a 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -1,11 +1,12 @@ -use anyhow::{ensure, Result}; +use anyhow::{ensure, Context, Result}; use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; use ark_ff::PrimeField; use ark_serialize::CanonicalSerialize; -use risc0_groth16::Seal as Groth16Seal; -use risc0_zkvm::Digest; +use risc0_zkvm::{sha::Digestible, Digest, InnerReceipt}; use std::str::FromStr; +use crate::is_dev_mode; + // Constants from: risc0-ethereum/contracts/src/blake3/Groth16Verifier.sol // When running a new ceremony, update them by running cargo xtask bootstrap-blake3-groth16 // after updating the new Groth16Verifier.sol on the risc0-ethereum repo. @@ -44,8 +45,8 @@ const IC1_X: &str = "19282603452922066135228857769519044667044696173320493211119 const IC1_Y: &str = "11966256187809052800087108088094647243345273965264062329687482664981607072161"; /// Verifies the soundness of a Groth16Seal against the BLAKE3 claim digest. -pub fn verify(seal: &Groth16Seal, blake3_claim_digest: impl Into) -> Result<()> { - let ark_proof = from_seal(&seal.to_vec()); +pub fn verify_seal(seal_bytes: &[u8], blake3_claim_digest: impl Into) -> Result<()> { + let ark_proof = from_seal(seal_bytes); let public_input_scalar = ark_bn254::Fr::from_be_bytes_mod_order(blake3_claim_digest.into().as_ref()); let ark_vk = get_ark_verifying_key(); @@ -59,6 +60,33 @@ pub fn verify(seal: &Groth16Seal, blake3_claim_digest: impl Into) -> Res ensure!(res, "proof verification failed"); Ok(()) } + +/// Verifies a Receipt containing a blake3 Groth16 proof against the BLAKE3 claim digest. +pub fn verify_receipt( + receipt: &risc0_zkvm::Receipt, + blake3_claim_digest: impl Into, +) -> Result<()> { + if is_dev_mode() { + tracing::info!("Warning: Skipping BLAKE3 Groth16 proof verification in dev mode"); + if let InnerReceipt::Fake(fake_receipt) = &receipt.inner { + let claim_digest = fake_receipt.claim.digest(); + ensure!( + claim_digest == blake3_claim_digest.into(), + "Fake receipt claim digest does not match expected digest" + ); + } else { + return Err(anyhow::anyhow!( + "RISC0_DEV_MODE blake3_groth16 verification can only be used on fake receipts" + )); + } + return Ok(()); + } + let groth16_receipt = + receipt.inner.groth16().context("verify_receipt expects a Groth16 InnerReceipt")?; + + crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest.into()) +} + pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { let ark_key = get_ark_verifying_key(); let mut b = vec![]; diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index cd6c01506..a92225368 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -571,7 +571,7 @@ mod tests { } #[test] - async fn test_shrink_blake3_groth16() { + async fn test_compress_blake3_groth16() { let prover = DefaultProver::new(); // Upload test data let input_data = [255u8; 32].to_vec(); // Example input data @@ -589,12 +589,10 @@ mod tests { let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); let shrink_receipt: Receipt = bincode::deserialize(&compressed_receipt).unwrap(); - let groth16_receipt = shrink_receipt.inner.groth16().unwrap(); - let groth16_seal = Groth16Seal::decode(&groth16_receipt.seal) - .expect("Failed to create Groth16 seal from receipt"); let claim_digest = - blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data).claim_digest(); - blake3_groth16::verify::verify(&groth16_seal, claim_digest) - .expect("Failed to verify Shrink to blake3 groth16 receipt"); + blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data.clone()) + .claim_digest(); + blake3_groth16::verify::verify_receipt(&shrink_receipt, claim_digest) + .expect("blake3 groth16 verification failed"); } } From 0ab6f4bea8c51372d63e66d7e810a3b815ad93fd Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 14:54:59 -0500 Subject: [PATCH 34/86] use pruned claim_digest --- blake3_groth16/src/lib.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 39682bc6f..97a67a53b 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -122,8 +122,11 @@ fn finalize( verify::verify_seal(&seal.to_vec(), blake3_claim_digest)?; let verifier_parameters = crate::verify::verifier_parameters(); - let groth16_receipt = - Groth16Receipt::new(seal.to_vec(), receipt_claim, verifier_parameters.digest()); + let groth16_receipt = Groth16Receipt::new( + seal.to_vec(), + MaybePruned::Pruned(blake3_claim_digest), + verifier_parameters.digest(), + ); let receipt = Receipt::new(risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), journal.to_vec()); Ok(receipt) From 05b2d2450ef2d0cb48840ef903281fb80048a3ba Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 16:07:06 -0500 Subject: [PATCH 35/86] make our own receipt type --- Cargo.lock | 2 + Cargo.toml | 2 + blake3_groth16/Cargo.toml | 3 +- blake3_groth16/src/lib.rs | 86 ++---------- blake3_groth16/src/prove.rs | 39 +++++- blake3_groth16/src/receipt.rs | 123 ++++++++++++++++++ blake3_groth16/src/receipt_claim.rs | 28 +++- blake3_groth16/src/verify.rs | 24 +++- .../guest/assessor/assessor-guest/Cargo.lock | 2 + 9 files changed, 228 insertions(+), 81 deletions(-) create mode 100644 blake3_groth16/src/receipt.rs diff --git a/Cargo.lock b/Cargo.lock index 8d4d368b3..28f48e54a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2576,8 +2576,10 @@ dependencies = [ "bincode", "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", "circom-witnesscalc", "crypto-bigint 0.5.2", + "derive_more 2.0.1", "guest-util", "hex", "num-bigint 0.4.6", diff --git a/Cargo.toml b/Cargo.toml index 1c63a4a51..c4afb7e2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,12 +65,14 @@ bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bi "non_blocking", "shrink_bitvm2", ] } +borsh = "1.5" broker = { path = "crates/broker" } bs58 = "0.5" bytemuck = "1.16" chrono = { version = "0.4", features = ["serde"] } clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" +derive_more = { version = "2.0" } futures-util = "0.3" guest-set-builder = { git = "https://github.com/risc0/risc0-ethereum", tag = "aggregation-v0.8.1" } hex = { version = "0.4", default-features = false, features = ["alloc"] } diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index e53df667e..0a9b3ab57 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -19,9 +19,10 @@ ark-serialize = "0.5.0" bincode.workspace = true blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } - +borsh = { workspace = true, features = ["derive"] } circom-witnesscalc = { version = "0.2.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } +derive_more.workspace = true hex.workspace = true num-bigint = { version = "0.4.5", features = ["std"] } num-traits = "0.2.19" diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 97a67a53b..6eb08d2d8 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -2,17 +2,17 @@ use anyhow::{Context, Result}; pub use receipt_claim::*; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; -use risc0_zkvm::{ - default_prover, InnerReceipt, MaybePruned, ProverOpts, Receipt, ReceiptClaim, SuccinctReceipt, -}; +use risc0_zkvm::{default_prover, InnerReceipt, MaybePruned, ProverOpts, Receipt}; #[cfg(feature = "prove")] -use {risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt, std::path::Path, tempfile::tempdir}; +use risc0_zkvm::sha::Digestible; #[cfg(feature = "prove")] mod prove; +pub mod receipt; pub mod receipt_claim; pub mod verify; +use crate::receipt::Blake3Groth16Receipt; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { @@ -20,16 +20,10 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { if is_dev_mode() { println!("RISC0_DEV_MODE is set, skipping actual blake3 groth16 compression and returning fake receipt"); let mut receipt = receipt.clone(); - let image_id = - receipt.claim()?.as_value().context("receipt claim must not be pruned")?.pre.digest(); - let journal: [u8; 32] = receipt - .journal - .bytes - .as_slice() - .try_into() - .context("invalid journal length, expected 32 bytes for dev mode blake3 groth16")?; - let blake3_claim_digest = - Blake3Groth16ReceiptClaim::ok(image_id, journal.to_vec()).digest(); + let blake3_claim_digest = Blake3Groth16ReceiptClaim::try_from( + receipt.claim()?.value().context("receipt claim must not be pruned")?, + )? + .digest(); if let InnerReceipt::Fake(fake_receipt) = &mut receipt.inner { fake_receipt.claim = MaybePruned::Pruned(blake3_claim_digest) } else { @@ -62,76 +56,20 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { .as_slice() .try_into() .context("invalid journal length, expected 32 bytes for shrink blake3")?; - let seal = succinct_to_blake3_groth16( + let seal = prove::succinct_to_blake3_groth16( receipt .inner .succinct() .context("compressing to blake3 groth16 requires a succinct receipt")?, journal, )?; - finalize(journal, receipt.claim()?, &seal.try_into()?) + let seal: Groth16Seal = seal.try_into()?; + let blake3_receipt = Blake3Groth16Receipt::finalize(receipt.claim()?, seal.to_vec())?; + Ok(blake3_receipt.into()) }) .await? } -/// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. -/// It will first run the identity_p254 program to convert the STARK to BN254, -/// which is more efficient to verify. -#[cfg(feature = "prove")] -fn succinct_to_blake3_groth16( - succinct_receipt: &SuccinctReceipt, - journal: [u8; 32], -) -> Result { - let p254_receipt = risc0_zkvm::get_prover_server(&ProverOpts::default())? - .identity_p254(succinct_receipt) - .context("failed to create p254 receipt")?; - shrink_wrap(&p254_receipt, journal) -} - -/// Creates a BLAKE3 Groth16 proof from a identity p254 Risc0 SuccinctReceipt. -#[cfg(feature = "prove")] -fn shrink_wrap( - p254_receipt: &SuccinctReceipt, - journal: [u8; 32], -) -> Result { - let seal_json = prove::identity_seal_json(journal, p254_receipt)?; - - let tmp_dir = tempdir().context("failed to create temporary directory")?; - let work_dir = std::env::var("BLAKE3_GROTH16_WORK_DIR"); - let work_dir: &Path = work_dir.as_ref().map(Path::new).unwrap_or(tmp_dir.path()); - - #[cfg(feature = "cuda")] - let proof_json = prove::cuda::shrink_wrap(work_dir, seal_json)?; - #[cfg(not(feature = "cuda"))] - let proof_json = prove::docker::shrink_wrap(work_dir, seal_json)?; - - Ok(proof_json) -} - -/// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. -#[cfg(feature = "prove")] -fn finalize( - journal: [u8; 32], - receipt_claim: MaybePruned, - seal: &Groth16Seal, -) -> Result { - let receipt_claim_value = - receipt_claim.as_value().context("receipt claim must not be pruned")?; - let blake3_claim_digest = - Blake3Groth16ReceiptClaim::ok(receipt_claim_value.pre.digest(), journal.to_vec()).digest(); - verify::verify_seal(&seal.to_vec(), blake3_claim_digest)?; - - let verifier_parameters = crate::verify::verifier_parameters(); - let groth16_receipt = Groth16Receipt::new( - seal.to_vec(), - MaybePruned::Pruned(blake3_claim_digest), - verifier_parameters.digest(), - ); - let receipt = - Receipt::new(risc0_zkvm::InnerReceipt::Groth16(groth16_receipt), journal.to_vec()); - Ok(receipt) -} - async fn compress_blake3_groth16_bonsai( client: &bonsai_sdk::non_blocking::Client, succinct_receipt: &Receipt, diff --git a/blake3_groth16/src/prove.rs b/blake3_groth16/src/prove.rs index 2091e15a5..152976b10 100644 --- a/blake3_groth16/src/prove.rs +++ b/blake3_groth16/src/prove.rs @@ -1,15 +1,50 @@ +use std::path::Path; + use anyhow::{Context, Result}; use num_bigint::BigUint; use num_traits::Num; -use risc0_groth16::prove::to_json as seal_to_json; +use risc0_groth16::{prove::to_json as seal_to_json, ProofJson as Groth16ProofJson}; use risc0_zkvm::sha::Digestible; -use risc0_zkvm::{ReceiptClaim, SuccinctReceipt}; +use risc0_zkvm::{ProverOpts, ReceiptClaim, SuccinctReceipt}; +use tempfile::tempdir; #[cfg(feature = "cuda")] pub(crate) mod cuda; #[cfg(not(feature = "cuda"))] pub(crate) mod docker; pub(crate) mod witgen; +/// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. +/// It will first run the identity_p254 program to convert the STARK to BN254, +/// which is more efficient to verify. +pub(crate) fn succinct_to_blake3_groth16( + succinct_receipt: &SuccinctReceipt, + journal: [u8; 32], +) -> Result { + let p254_receipt = risc0_zkvm::get_prover_server(&ProverOpts::default())? + .identity_p254(succinct_receipt) + .context("failed to create p254 receipt")?; + shrink_wrap(&p254_receipt, journal) +} + +/// Creates a BLAKE3 Groth16 proof from a identity p254 Risc0 SuccinctReceipt. +pub(crate) fn shrink_wrap( + p254_receipt: &SuccinctReceipt, + journal: [u8; 32], +) -> Result { + let seal_json = identity_seal_json(journal, p254_receipt)?; + + let tmp_dir = tempdir().context("failed to create temporary directory")?; + let work_dir = std::env::var("BLAKE3_GROTH16_WORK_DIR"); + let work_dir: &Path = work_dir.as_ref().map(Path::new).unwrap_or(tmp_dir.path()); + + #[cfg(feature = "cuda")] + let proof_json = cuda::shrink_wrap(work_dir, seal_json)?; + #[cfg(not(feature = "cuda"))] + let proof_json = docker::shrink_wrap(work_dir, seal_json)?; + + Ok(proof_json) +} + pub(crate) fn identity_seal_json( journal_bytes: [u8; 32], p254_receipt: &SuccinctReceipt, diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs new file mode 100644 index 000000000..aa26c970a --- /dev/null +++ b/blake3_groth16/src/receipt.rs @@ -0,0 +1,123 @@ +use anyhow::{Context, Result}; +use borsh::{BorshDeserialize, BorshSerialize}; +use derive_more::Debug; +pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; +use risc0_zkvm::{Digest, InnerReceipt, MaybePruned, Receipt, ReceiptClaim}; +use serde::{Deserialize, Serialize}; + +use crate::Blake3Groth16ReceiptClaim; + +#[cfg(feature = "prove")] +use {risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt}; + +#[derive(Clone, Debug, Deserialize, Serialize, BorshSerialize, BorshDeserialize)] +pub struct Blake3Groth16Receipt { + pub journal: [u8; 32], + #[debug("{} bytes", seal.len())] + pub seal: Vec, + pub claim: MaybePruned, + pub verifier_parameters: Digest, +} + +impl Blake3Groth16Receipt { + fn new( + journal: [u8; 32], + seal: Vec, + claim: MaybePruned, + verifier_parameters: Digest, + ) -> Self { + Self { journal, seal, claim, verifier_parameters } + } + /// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. + #[cfg(feature = "prove")] + pub(crate) fn finalize( + receipt_claim: MaybePruned, + seal: Vec, + ) -> Result { + let receipt_claim_value = + receipt_claim.as_value().context("receipt claim must not be pruned")?.clone(); + + let blake3_claim = Blake3Groth16ReceiptClaim::try_from(receipt_claim_value)?; + let journal: [u8; 32] = blake3_claim + .journal + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + + let blake3_claim_digest = blake3_claim.digest(); + crate::verify::verify_seal(&seal, blake3_claim_digest)?; + + let verifier_parameters = crate::verify::verifier_parameters(); + + let receipt = Blake3Groth16Receipt::new( + journal, + seal, + blake3_claim.into(), + verifier_parameters.digest(), + ); + Ok(receipt) + } + + pub fn verify(&self, image_id: impl Into) -> Result<()> { + self.verify_with_context(&crate::verify::verifier_parameters(), image_id) + } + + pub fn verify_with_context( + &self, + params: &risc0_zkvm::Groth16ReceiptVerifierParameters, + image_id: impl Into, + ) -> Result<()> { + self.verify_integrity_with_context(params)?; + + let expected_claim = Blake3Groth16ReceiptClaim::ok(image_id, self.journal.to_vec()); + if self.claim.digest() != expected_claim.digest() { + tracing::debug!("blake3 receipt claim does not match expected claim:\nreceipt: {:#?}\nexpected: {:#?}", expected_claim.digest(), self.claim.digest()); + return Err(anyhow::anyhow!( + "blake3 groth16 claim digest mismatch: + expected: {}, + received: {}, + ", + expected_claim.digest(), + self.claim.digest() + )); + } + + Ok(()) + } + + pub fn verify_integrity(&self) -> Result<()> { + let params = crate::verify::verifier_parameters(); + self.verify_integrity_with_context(¶ms) + } + + pub fn verify_integrity_with_context( + &self, + params: &risc0_zkvm::Groth16ReceiptVerifierParameters, + ) -> Result<()> { + if params.digest() != self.verifier_parameters { + return Err(anyhow::anyhow!( + "verifier parameters digest mismatch: + expected: {}, + received: {}, + ", + params.digest(), + self.verifier_parameters + )); + } + crate::verify::verify_seal(&self.seal, self.claim.digest())?; + Ok(()) + } +} + +impl From for Receipt { + fn from(value: Blake3Groth16Receipt) -> Self { + Receipt::new( + InnerReceipt::Groth16(Groth16Receipt::new( + value.seal, + MaybePruned::Pruned(value.claim.digest()), + value.verifier_parameters, + )), + value.journal.to_vec(), + ) + } +} diff --git a/blake3_groth16/src/receipt_claim.rs b/blake3_groth16/src/receipt_claim.rs index 62bdde9d9..307b57055 100644 --- a/blake3_groth16/src/receipt_claim.rs +++ b/blake3_groth16/src/receipt_claim.rs @@ -1,19 +1,19 @@ use anyhow::Context; +use borsh::{BorshDeserialize, BorshSerialize}; use risc0_zkvm::{ sha::{self, Digestible, Sha256, DIGEST_BYTES}, - Digest, MaybePruned, SystemState, VerifierContext, + Digest, MaybePruned, ReceiptClaim, SystemState, VerifierContext, }; use serde::{Deserialize, Serialize}; /// A claim about the guest program execution, such as the journal. /// The digest of this is what the BLAKE3 Groth16 proof outputs. -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)] pub struct Blake3Groth16ReceiptClaim { pub pre: MaybePruned, pub post: MaybePruned, /// Note: This journal has to be exactly 32 bytes pub journal: Vec, - pub control_root: Digest, pub control_id: Digest, } @@ -89,3 +89,25 @@ impl risc0_binfmt::Digestible for Blake3Groth16ReceiptClaim { self.claim_digest_inner::() } } + +impl TryFrom for Blake3Groth16ReceiptClaim { + type Error = anyhow::Error; + + fn try_from(receipt_claim: ReceiptClaim) -> Result { + let image_id = receipt_claim.pre.digest(); + let output_value = receipt_claim + .output + .as_value() + .context("output should not be pruned")? + .as_ref() + .context("output should exist")?; + let journal: [u8; 32] = output_value + .journal + .as_value() + .context("journal should not be pruned")? + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + Ok(Blake3Groth16ReceiptClaim::ok(image_id, journal.to_vec())) + } +} diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 8cf9dbd7a..6a00ed695 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -5,7 +5,7 @@ use ark_serialize::CanonicalSerialize; use risc0_zkvm::{sha::Digestible, Digest, InnerReceipt}; use std::str::FromStr; -use crate::is_dev_mode; +use crate::{is_dev_mode, Blake3Groth16ReceiptClaim}; // Constants from: risc0-ethereum/contracts/src/blake3/Groth16Verifier.sol // When running a new ceremony, update them by running cargo xtask bootstrap-blake3-groth16 @@ -87,6 +87,28 @@ pub fn verify_receipt( crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest.into()) } +/// Verify the integrity of this receipt, ensuring the claim is attested +/// to by the seal. +pub fn verify_integrity(receipt: &risc0_zkvm::Receipt) -> Result<()> { + if is_dev_mode() { + return Ok(()); + } + let groth16_receipt = + receipt.inner.groth16().context("verify_receipt expects a Groth16 InnerReceipt")?; + let journal = &receipt.journal; + let journal_bytes: [u8; 32] = journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok( + receipt.claim()?.as_value()?.pre.digest(), // image_id is not needed for verification + journal_bytes, + ) + .digest(); + crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest) +} + pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { let ark_key = get_ark_verifying_key(); let mut b = vec![]; diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index f21e7850b..1a58b2c6b 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -1958,8 +1958,10 @@ dependencies = [ "bincode", "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", "circom-witnesscalc", "crypto-bigint 0.5.2", + "derive_more", "hex", "num-bigint 0.4.6", "num-traits", From 722ab4aae9d125ccddcfd46f97f6a4a6e313e806 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 16:33:03 -0500 Subject: [PATCH 36/86] comments --- blake3_groth16/src/lib.rs | 4 +++- blake3_groth16/src/receipt.rs | 39 +++++++++++++++++++++++++++++++++++ blake3_groth16/src/verify.rs | 10 ++++----- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 6eb08d2d8..e5f0dd918 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -129,6 +129,8 @@ mod tests { tracing::info!("Initial receipt created, compressing to blake3_groth16"); let groth16_receipt = compress_blake3_groth16(&receipt).await.unwrap(); let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); - verify::verify_receipt(&groth16_receipt, blake3_claim_digest).expect("verification failed"); + let blake3_receipt = Blake3Groth16Receipt::try_from(groth16_receipt).unwrap(); + assert_eq!(blake3_receipt.claim.digest(), blake3_claim_digest); + blake3_receipt.verify(ECHO_ID).expect("verification failed"); } } diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index aa26c970a..ffc3b5b3a 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -58,10 +58,14 @@ impl Blake3Groth16Receipt { Ok(receipt) } + /// Verify that this receipt proves a successful execution of the zkVM from + /// the given `image_id`. pub fn verify(&self, image_id: impl Into) -> Result<()> { self.verify_with_context(&crate::verify::verifier_parameters(), image_id) } + /// Verify that this receipt proves a successful execution of the zkVM from the given + /// `image_id`. pub fn verify_with_context( &self, params: &risc0_zkvm::Groth16ReceiptVerifierParameters, @@ -85,11 +89,15 @@ impl Blake3Groth16Receipt { Ok(()) } + /// Verify the integrity of this receipt, ensuring the claim and journal + /// are attested to by the seal. pub fn verify_integrity(&self) -> Result<()> { let params = crate::verify::verifier_parameters(); self.verify_integrity_with_context(¶ms) } + /// Verify the integrity of this receipt, ensuring the claim and journal + /// are attested to by the seal. pub fn verify_integrity_with_context( &self, params: &risc0_zkvm::Groth16ReceiptVerifierParameters, @@ -104,6 +112,11 @@ impl Blake3Groth16Receipt { self.verifier_parameters )); } + if self.journal.as_slice() + != self.claim.as_value().context("blake3 claim must not be pruned")?.journal.as_slice() + { + return Err(anyhow::anyhow!("journal in receipt does not match journal in claim")); + } crate::verify::verify_seal(&self.seal, self.claim.digest())?; Ok(()) } @@ -121,3 +134,29 @@ impl From for Receipt { ) } } + +impl TryFrom for Blake3Groth16Receipt { + type Error = anyhow::Error; + + fn try_from(receipt: Receipt) -> Result { + let claim = + receipt.claim()?.as_value().context("receipt claim must not be pruned")?.clone(); + if let InnerReceipt::Groth16(groth16_receipt) = receipt.inner { + let blake3_claim = Blake3Groth16ReceiptClaim::try_from(claim)?; + let journal: [u8; 32] = receipt + .journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + Ok(Blake3Groth16Receipt::new( + journal, + groth16_receipt.seal, + blake3_claim.into(), + groth16_receipt.verifier_parameters, + )) + } else { + Err(anyhow::anyhow!("Expected Groth16 InnerReceipt, found different variant")) + } + } +} diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 6a00ed695..3715015cf 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -101,15 +101,13 @@ pub fn verify_integrity(receipt: &risc0_zkvm::Receipt) -> Result<()> { .as_slice() .try_into() .context("invalid journal length, expected 32 bytes for blake3 groth16")?; - let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok( - receipt.claim()?.as_value()?.pre.digest(), // image_id is not needed for verification - journal_bytes, - ) - .digest(); + let blake3_claim_digest = + Blake3Groth16ReceiptClaim::ok(receipt.claim()?.as_value()?.pre.digest(), journal_bytes) + .digest(); crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest) } -pub fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { +fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { let ark_key = get_ark_verifying_key(); let mut b = vec![]; ark_key.serialize_uncompressed(&mut b).unwrap(); From 242ff6d7374de3ecb367a8589e6948a8bf4274fb Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 17:58:14 -0500 Subject: [PATCH 37/86] refactor interface --- blake3_groth16/src/lib.rs | 4 +- blake3_groth16/src/receipt.rs | 180 ++++++++++++++++----------- blake3_groth16/src/verify.rs | 52 +------- crates/broker/src/provers/default.rs | 6 +- 4 files changed, 116 insertions(+), 126 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index e5f0dd918..0b3d5cba9 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -1,4 +1,5 @@ use anyhow::{Context, Result}; +pub use receipt::*; pub use receipt_claim::*; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; @@ -12,7 +13,6 @@ mod prove; pub mod receipt; pub mod receipt_claim; pub mod verify; -use crate::receipt::Blake3Groth16Receipt; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { @@ -130,7 +130,7 @@ mod tests { let groth16_receipt = compress_blake3_groth16(&receipt).await.unwrap(); let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); let blake3_receipt = Blake3Groth16Receipt::try_from(groth16_receipt).unwrap(); - assert_eq!(blake3_receipt.claim.digest(), blake3_claim_digest); + assert_eq!(blake3_receipt.claim_digest().unwrap(), blake3_claim_digest); blake3_receipt.verify(ECHO_ID).expect("verification failed"); } } diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index ffc3b5b3a..2764a21d2 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -1,63 +1,23 @@ -use anyhow::{Context, Result}; +use anyhow::{bail, Context, Result}; use borsh::{BorshDeserialize, BorshSerialize}; use derive_more::Debug; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; use risc0_zkvm::{Digest, InnerReceipt, MaybePruned, Receipt, ReceiptClaim}; use serde::{Deserialize, Serialize}; -use crate::Blake3Groth16ReceiptClaim; +use crate::{is_dev_mode, Blake3Groth16ReceiptClaim}; #[cfg(feature = "prove")] use {risc0_zkvm::sha::Digestible, risc0_zkvm::Groth16Receipt}; #[derive(Clone, Debug, Deserialize, Serialize, BorshSerialize, BorshDeserialize)] pub struct Blake3Groth16Receipt { - pub journal: [u8; 32], - #[debug("{} bytes", seal.len())] - pub seal: Vec, - pub claim: MaybePruned, - pub verifier_parameters: Digest, + journal: [u8; 32], + claim: MaybePruned, + inner: InnerReceipt, } impl Blake3Groth16Receipt { - fn new( - journal: [u8; 32], - seal: Vec, - claim: MaybePruned, - verifier_parameters: Digest, - ) -> Self { - Self { journal, seal, claim, verifier_parameters } - } - /// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. - #[cfg(feature = "prove")] - pub(crate) fn finalize( - receipt_claim: MaybePruned, - seal: Vec, - ) -> Result { - let receipt_claim_value = - receipt_claim.as_value().context("receipt claim must not be pruned")?.clone(); - - let blake3_claim = Blake3Groth16ReceiptClaim::try_from(receipt_claim_value)?; - let journal: [u8; 32] = blake3_claim - .journal - .as_slice() - .try_into() - .context("invalid journal length, expected 32 bytes for blake3 groth16")?; - - let blake3_claim_digest = blake3_claim.digest(); - crate::verify::verify_seal(&seal, blake3_claim_digest)?; - - let verifier_parameters = crate::verify::verifier_parameters(); - - let receipt = Blake3Groth16Receipt::new( - journal, - seal, - blake3_claim.into(), - verifier_parameters.digest(), - ); - Ok(receipt) - } - /// Verify that this receipt proves a successful execution of the zkVM from /// the given `image_id`. pub fn verify(&self, image_id: impl Into) -> Result<()> { @@ -74,7 +34,7 @@ impl Blake3Groth16Receipt { self.verify_integrity_with_context(params)?; let expected_claim = Blake3Groth16ReceiptClaim::ok(image_id, self.journal.to_vec()); - if self.claim.digest() != expected_claim.digest() { + if self.claim_digest()? != expected_claim.digest() { tracing::debug!("blake3 receipt claim does not match expected claim:\nreceipt: {:#?}\nexpected: {:#?}", expected_claim.digest(), self.claim.digest()); return Err(anyhow::anyhow!( "blake3 groth16 claim digest mismatch: @@ -82,7 +42,7 @@ impl Blake3Groth16Receipt { received: {}, ", expected_claim.digest(), - self.claim.digest() + self.claim_digest()? )); } @@ -102,14 +62,17 @@ impl Blake3Groth16Receipt { &self, params: &risc0_zkvm::Groth16ReceiptVerifierParameters, ) -> Result<()> { - if params.digest() != self.verifier_parameters { + if is_dev_mode() { + return Ok(()); + } + if params.digest() != self.inner.verifier_parameters() { return Err(anyhow::anyhow!( "verifier parameters digest mismatch: expected: {}, received: {}, ", params.digest(), - self.verifier_parameters + self.inner.verifier_parameters() )); } if self.journal.as_slice() @@ -117,21 +80,75 @@ impl Blake3Groth16Receipt { { return Err(anyhow::anyhow!("journal in receipt does not match journal in claim")); } - crate::verify::verify_seal(&self.seal, self.claim.digest())?; + crate::verify::verify_seal(self.seal()?, self.claim.digest())?; Ok(()) } + + /// Verifies the BLAKE3 Groth16Seal against the BLAKE3 claim digest and wraps it in a Receipt. + #[cfg(feature = "prove")] + pub(crate) fn finalize( + receipt_claim: MaybePruned, + seal: Vec, + ) -> Result { + let receipt_claim_value = + receipt_claim.as_value().context("receipt claim must not be pruned")?.clone(); + + let blake3_claim = Blake3Groth16ReceiptClaim::try_from(receipt_claim_value)?; + let journal: [u8; 32] = blake3_claim + .journal + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + + let blake3_claim_digest = blake3_claim.digest(); + crate::verify::verify_seal(&seal, blake3_claim_digest)?; + + let verifier_parameters = crate::verify::verifier_parameters(); + let groth16_receipt = + Groth16Receipt::new(seal.to_vec(), receipt_claim, verifier_parameters.digest()); + let inner = InnerReceipt::Groth16(groth16_receipt); + let receipt = Blake3Groth16Receipt { journal, claim: blake3_claim.into(), inner }; + Ok(receipt) + } + + pub fn claim_digest(&self) -> Result { + if is_dev_mode() { + if let InnerReceipt::Fake(fake_receipt) = &self.inner { + return Ok(fake_receipt.claim.digest()); + } else { + bail!( + "RISC0_DEV_MODE blake3_groth16 claim digest can only be used on fake receipts" + ); + } + } + Ok(self.claim.digest()) + } + + fn groth16(&self) -> Result<&Groth16Receipt> { + if let InnerReceipt::Groth16(groth16_receipt) = &self.inner { + Ok(groth16_receipt) + } else { + Err(anyhow::anyhow!("Expected Groth16 InnerReceipt, found different variant")) + } + } + + fn seal(&self) -> Result<&Vec> { + Ok(&self.groth16()?.seal) + } } impl From for Receipt { fn from(value: Blake3Groth16Receipt) -> Self { - Receipt::new( - InnerReceipt::Groth16(Groth16Receipt::new( - value.seal, - MaybePruned::Pruned(value.claim.digest()), - value.verifier_parameters, - )), - value.journal.to_vec(), - ) + if is_dev_mode() { + Receipt::new( + InnerReceipt::Fake(risc0_zkvm::FakeReceipt::new(MaybePruned::Pruned( + value.claim.digest(), + ))), + value.journal.to_vec(), + ) + } else { + Receipt::new(value.inner, value.journal.to_vec()) + } } } @@ -139,22 +156,41 @@ impl TryFrom for Blake3Groth16Receipt { type Error = anyhow::Error; fn try_from(receipt: Receipt) -> Result { - let claim = - receipt.claim()?.as_value().context("receipt claim must not be pruned")?.clone(); + let journal: [u8; 32] = receipt + .journal + .bytes + .as_slice() + .try_into() + .context("invalid journal length, expected 32 bytes for blake3 groth16")?; + + if is_dev_mode() { + println!("RISC0_DEV_MODE is set, skipping actual blake3 groth16 compression and returning fake receipt"); + if let InnerReceipt::Fake(fake_receipt) = &receipt.inner { + return Ok(Blake3Groth16Receipt { + journal, + claim: MaybePruned::Pruned(fake_receipt.claim.digest()), + inner: receipt.inner, + }); + } else { + return Err(anyhow::anyhow!( + "RISC0_DEV_MODE blake3_groth16 compression can only be used on fake receipts" + )); + } + } if let InnerReceipt::Groth16(groth16_receipt) = receipt.inner { - let blake3_claim = Blake3Groth16ReceiptClaim::try_from(claim)?; - let journal: [u8; 32] = receipt - .journal - .bytes - .as_slice() - .try_into() - .context("invalid journal length, expected 32 bytes for blake3 groth16")?; - Ok(Blake3Groth16Receipt::new( + let claim = Blake3Groth16ReceiptClaim::try_from( + groth16_receipt + .claim + .as_value() + .context("receipt claim must not be pruned")? + .clone(), + )? + .clone(); + Ok(Blake3Groth16Receipt { journal, - groth16_receipt.seal, - blake3_claim.into(), - groth16_receipt.verifier_parameters, - )) + claim: claim.into(), + inner: InnerReceipt::Groth16(groth16_receipt), + }) } else { Err(anyhow::anyhow!("Expected Groth16 InnerReceipt, found different variant")) } diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 3715015cf..c2a5c1ea9 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -1,12 +1,10 @@ -use anyhow::{ensure, Context, Result}; +use anyhow::{ensure, Result}; use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; use ark_ff::PrimeField; use ark_serialize::CanonicalSerialize; -use risc0_zkvm::{sha::Digestible, Digest, InnerReceipt}; +use risc0_zkvm::Digest; use std::str::FromStr; -use crate::{is_dev_mode, Blake3Groth16ReceiptClaim}; - // Constants from: risc0-ethereum/contracts/src/blake3/Groth16Verifier.sol // When running a new ceremony, update them by running cargo xtask bootstrap-blake3-groth16 // after updating the new Groth16Verifier.sol on the risc0-ethereum repo. @@ -61,52 +59,6 @@ pub fn verify_seal(seal_bytes: &[u8], blake3_claim_digest: impl Into) -> Ok(()) } -/// Verifies a Receipt containing a blake3 Groth16 proof against the BLAKE3 claim digest. -pub fn verify_receipt( - receipt: &risc0_zkvm::Receipt, - blake3_claim_digest: impl Into, -) -> Result<()> { - if is_dev_mode() { - tracing::info!("Warning: Skipping BLAKE3 Groth16 proof verification in dev mode"); - if let InnerReceipt::Fake(fake_receipt) = &receipt.inner { - let claim_digest = fake_receipt.claim.digest(); - ensure!( - claim_digest == blake3_claim_digest.into(), - "Fake receipt claim digest does not match expected digest" - ); - } else { - return Err(anyhow::anyhow!( - "RISC0_DEV_MODE blake3_groth16 verification can only be used on fake receipts" - )); - } - return Ok(()); - } - let groth16_receipt = - receipt.inner.groth16().context("verify_receipt expects a Groth16 InnerReceipt")?; - - crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest.into()) -} - -/// Verify the integrity of this receipt, ensuring the claim is attested -/// to by the seal. -pub fn verify_integrity(receipt: &risc0_zkvm::Receipt) -> Result<()> { - if is_dev_mode() { - return Ok(()); - } - let groth16_receipt = - receipt.inner.groth16().context("verify_receipt expects a Groth16 InnerReceipt")?; - let journal = &receipt.journal; - let journal_bytes: [u8; 32] = journal - .bytes - .as_slice() - .try_into() - .context("invalid journal length, expected 32 bytes for blake3 groth16")?; - let blake3_claim_digest = - Blake3Groth16ReceiptClaim::ok(receipt.claim()?.as_value()?.pre.digest(), journal_bytes) - .digest(); - crate::verify::verify_seal(&groth16_receipt.seal, blake3_claim_digest) -} - fn get_r0_verifying_key() -> risc0_groth16::VerifyingKey { let ark_key = get_ark_verifying_key(); let mut b = vec![]; diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index a92225368..764ab6ae7 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -592,7 +592,9 @@ mod tests { let claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data.clone()) .claim_digest(); - blake3_groth16::verify::verify_receipt(&shrink_receipt, claim_digest) - .expect("blake3 groth16 verification failed"); + let blake3_receipt: blake3_groth16::Blake3Groth16Receipt = + blake3_groth16::Blake3Groth16Receipt::try_from(shrink_receipt.clone()).unwrap(); + assert_eq!(blake3_receipt.claim_digest().unwrap(), claim_digest); + blake3_receipt.verify(ECHO_ID).expect("blake3 groth16 verification failed"); } } From e7aec2489036cef8e007d4bd5961ea4eb548fba8 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 18:20:33 -0500 Subject: [PATCH 38/86] fix encoding --- blake3_groth16/src/lib.rs | 13 ++++++------- crates/boundless-cli/src/lib.rs | 9 +++++---- crates/broker/src/provers/default.rs | 6 +++--- crates/broker/src/provers/mod.rs | 10 +++++----- crates/broker/src/submitter.rs | 7 ++++--- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 0b3d5cba9..3d411813e 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -15,7 +15,7 @@ pub mod receipt_claim; pub mod verify; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. -pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { +pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { tracing::debug!("Compressing receipt to blake3 groth16"); if is_dev_mode() { println!("RISC0_DEV_MODE is set, skipping actual blake3 groth16 compression and returning fake receipt"); @@ -31,7 +31,7 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { "RISC0_DEV_MODE blake3_groth16 compression can only be used on fake receipts" )); } - return Ok(receipt); + return Ok(receipt.try_into()?); } if default_prover().get_name() == "bonsai" { let client = bonsai_sdk::non_blocking::Client::from_env(risc0_zkvm::VERSION)?; @@ -65,7 +65,7 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { )?; let seal: Groth16Seal = seal.try_into()?; let blake3_receipt = Blake3Groth16Receipt::finalize(receipt.claim()?, seal.to_vec())?; - Ok(blake3_receipt.into()) + Ok(blake3_receipt) }) .await? } @@ -73,7 +73,7 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { async fn compress_blake3_groth16_bonsai( client: &bonsai_sdk::non_blocking::Client, succinct_receipt: &Receipt, -) -> Result { +) -> Result { let encoded_receipt = bincode::serialize(succinct_receipt)?; let receipt_id = client.upload_receipt(encoded_receipt).await?; let snark_id = client.shrink_bitvm2(receipt_id).await?; @@ -86,7 +86,7 @@ async fn compress_blake3_groth16_bonsai( } "SUCCEEDED" => { let receipt_buf = client.download(&status.output.unwrap()).await?; - let snark_receipt: Receipt = bincode::deserialize(&receipt_buf)?; + let snark_receipt: Blake3Groth16Receipt = bincode::deserialize(&receipt_buf)?; return Ok(snark_receipt); } status_code => { @@ -127,9 +127,8 @@ mod tests { let receipt = prover.prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()).unwrap().receipt; tracing::info!("Initial receipt created, compressing to blake3_groth16"); - let groth16_receipt = compress_blake3_groth16(&receipt).await.unwrap(); + let blake3_receipt = compress_blake3_groth16(&receipt).await.unwrap(); let blake3_claim_digest = Blake3Groth16ReceiptClaim::ok(ECHO_ID, input.to_vec()).digest(); - let blake3_receipt = Blake3Groth16Receipt::try_from(groth16_receipt).unwrap(); assert_eq!(blake3_receipt.claim_digest().unwrap(), blake3_claim_digest); blake3_receipt.verify(ECHO_ID).expect("verification failed"); } diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 66c1b268b..372070485 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -34,6 +34,7 @@ use alloy::{ sol_types::{SolStruct, SolValue}, }; use anyhow::{bail, Context, Result}; +use blake3_groth16::Blake3Groth16Receipt; use boundless_assessor::{AssessorInput, Fulfillment}; use broker::provers::{Bonsai, DefaultProver as BrokerDefaultProver, Prover}; use risc0_aggregation::{ @@ -562,11 +563,11 @@ impl OrderFulfiller { .map_err(|e| anyhow::anyhow!("Failed to get compressed order receipt: {}", e))? .ok_or_else(|| anyhow::anyhow!("Compressed order receipt not found"))?; - let compressed_receipt: Receipt = + let blake3_receipt: Blake3Groth16Receipt = bincode::deserialize(&compressed_receipt_bytes) - .context("Failed to deserialize compressed order receipt")?; + .context("Failed to deserialize Blake3 Groth16 receipt")?; - encode_seal(&compressed_receipt)? + encode_seal(&blake3_receipt.into())? } else { order_inclusion_receipt.abi_encode_seal()? }; @@ -693,7 +694,7 @@ mod tests { } #[tokio::test] - #[ignore = "runs a proof; slow without RISC0_DEV_MODE=1"] + // #[ignore = "runs a proof; slow without RISC0_DEV_MODE=1"] async fn test_fulfill_blake3_groth16_selector() { let anvil = Anvil::new().spawn(); let ctx = create_test_ctx(&anvil).await.unwrap(); diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index 764ab6ae7..a657e9976 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -587,13 +587,13 @@ mod tests { // Fetch the compressed receipt let compressed_receipt = prover.get_compressed_receipt(&snark_id).await.unwrap().unwrap(); - let shrink_receipt: Receipt = bincode::deserialize(&compressed_receipt).unwrap(); + let blake3_receipt: blake3_groth16::Blake3Groth16Receipt = + bincode::deserialize(&compressed_receipt).unwrap(); let claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, input_data.clone()) .claim_digest(); - let blake3_receipt: blake3_groth16::Blake3Groth16Receipt = - blake3_groth16::Blake3Groth16Receipt::try_from(shrink_receipt.clone()).unwrap(); + assert_eq!(blake3_receipt.claim_digest().unwrap(), claim_digest); blake3_receipt.verify(ECHO_ID).expect("blake3 groth16 verification failed"); } diff --git a/crates/broker/src/provers/mod.rs b/crates/broker/src/provers/mod.rs index e091f50e7..a0e04de12 100644 --- a/crates/broker/src/provers/mod.rs +++ b/crates/broker/src/provers/mod.rs @@ -15,6 +15,7 @@ use std::sync::Arc; use async_trait::async_trait; +use blake3_groth16::Blake3Groth16Receipt; use bonsai_sdk::SdkErr; use boundless_market::input::GuestEnv; use risc0_zkvm::Receipt; @@ -146,14 +147,13 @@ pub(crate) async fn verify_blake3_groth16_receipt( ProverError::NotFound(format!("Blake3 Groth16 receipt not found: {proof_id}")) })?; - let _receipt: Receipt = bincode::deserialize(&receipt_bytes).map_err(|e| { + let receipt: Blake3Groth16Receipt = bincode::deserialize(&receipt_bytes).map_err(|e| { ProverError::ProverInternalError(format!("Failed to deserialize receipt: {e}")) })?; - // TODO(ec2): verify this with blake3 groth16 verifier - // receipt.verify_integrity_with_context(&Default::default()).map_err(|e| { - // ProverError::ProverInternalError(format!("Blake3 Groth16 verification failed: {e}")) - // })?; + receipt.verify_integrity().map_err(|e| { + ProverError::ProverInternalError(format!("Blake3 Groth16 verification failed: {e}")) + })?; tracing::debug!("Blake3 Groth16 verification passed for proof_id: {proof_id}"); Ok(()) diff --git a/crates/broker/src/submitter.rs b/crates/broker/src/submitter.rs index 0d6fb7d4e..6202f5aae 100644 --- a/crates/broker/src/submitter.rs +++ b/crates/broker/src/submitter.rs @@ -24,6 +24,7 @@ use alloy::{ sol_types::{SolStruct, SolValue}, }; use anyhow::{anyhow, Context, Result}; +use blake3_groth16::Blake3Groth16Receipt; use boundless_market::{ contracts::{ boundless_market::{BoundlessMarketService, FulfillmentTx, MarketError, UnlockedRequest}, @@ -173,17 +174,17 @@ where } async fn fetch_encode_b3_g16(&self, b3_g16_proof_id: &str) -> Result> { - let groth16_receipt = self + let blake3_receipt = self .prover .get_blake3_groth16_receipt(b3_g16_proof_id) .await .context("Failed to fetch blake3 groth16 receipt")? .context("Blake3 Groth16 receipt missing")?; - let groth16_receipt: Receipt = bincode::deserialize(&groth16_receipt) + let blake3_receipt: Blake3Groth16Receipt = bincode::deserialize(&blake3_receipt) .context("Failed to deserialize Blake3 Groth16 receipt")?; - let encoded_seal = encode_seal(&groth16_receipt) + let encoded_seal = encode_seal(&blake3_receipt.into()) .context("Failed to encode Blake3 Groth16 receipt seal")?; Ok(encoded_seal) From 618aacdc11194f6600e7c8a681279f07c31638b6 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 18:30:55 -0500 Subject: [PATCH 39/86] fix bento --- bento/Cargo.lock | 2 ++ bento/crates/workflow/src/tasks/snark.rs | 32 +++++++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/bento/Cargo.lock b/bento/Cargo.lock index 788964bf3..823fd1746 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -1183,8 +1183,10 @@ dependencies = [ "bincode", "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", "circom-witnesscalc", "crypto-bigint 0.5.2", + "derive_more", "hex", "num-bigint 0.4.6", "num-traits", diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index afbd716cc..fe2b2b4a1 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -26,31 +26,35 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< let (snark_receipt, bucket_dir) = match req.compress_type { CompressType::None => bail!("Cannot convert to snark with no compression"), - CompressType::Groth16 => ( - agent + CompressType::Groth16 => { + let groth16_receipt = agent .prover .as_ref() .context("Missing prover from resolve task")? .compress(&ProverOpts::groth16(), &receipt) - .context("groth16 compress failed")?, - GROTH16_BUCKET_DIR, - ), - CompressType::Blake3Groth16 => ( - blake3_groth16::compress_blake3_groth16(&receipt) + .context("groth16 compress failed")?; + + groth16_receipt + .verify_integrity_with_context(&agent.verifier_ctx) + .context("[BENTO-SNARK-005] Failed to verify compressed snark receipt")?; + (groth16_receipt, GROTH16_BUCKET_DIR) + } + CompressType::Blake3Groth16 => { + let blake3_receipt = blake3_groth16::compress_blake3_groth16(&receipt) .await - .context("blake3 groth16 compress failed")?, - BLAKE3_GROTH16_BUCKET_DIR, - ), + .context("blake3 groth16 compress failed")?; + blake3_receipt + .verify_integrity() + .context("[BENTO-SNARK-007] Failed to verify blake3 snark receipt")?; + let snark_receipt: Receipt = blake3_receipt.into(); + (snark_receipt, BLAKE3_GROTH16_BUCKET_DIR) + } }; if !matches!(snark_receipt.inner, InnerReceipt::Groth16(_)) { bail!("[BENTO-SNARK-004] failed to create groth16 receipt"); } let key = &format!("{RECEIPT_BUCKET_DIR}/{bucket_dir}/{job_id}.bincode"); - // TODO(ec2): fixme - // receipt - // .verify_integrity_with_context(&agent.verifier_ctx) - // .context("[BENTO-SNARK-005] Failed to verify compressed snark receipt")?; tracing::debug!("Uploading snark receipt to S3: {key}"); From 41d2395c3655f05b44d0ba1189fd87e4a2379ace Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 19:50:07 -0500 Subject: [PATCH 40/86] fix bento --- bento/crates/workflow/src/tasks/snark.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index fe2b2b4a1..c35f4cf3f 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -24,7 +24,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< tracing::debug!("performing identity predicate on receipt, {job_id}"); - let (snark_receipt, bucket_dir) = match req.compress_type { + let (snark_receipt_bytes, bucket_dir) = match req.compress_type { CompressType::None => bail!("Cannot convert to snark with no compression"), CompressType::Groth16 => { let groth16_receipt = agent @@ -33,11 +33,13 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< .context("Missing prover from resolve task")? .compress(&ProverOpts::groth16(), &receipt) .context("groth16 compress failed")?; - + if !matches!(groth16_receipt.inner, InnerReceipt::Groth16(_)) { + bail!("[BENTO-SNARK-004] failed to create groth16 receipt"); + } groth16_receipt .verify_integrity_with_context(&agent.verifier_ctx) .context("[BENTO-SNARK-005] Failed to verify compressed snark receipt")?; - (groth16_receipt, GROTH16_BUCKET_DIR) + (bincode::serialize(&groth16_receipt)?, GROTH16_BUCKET_DIR) } CompressType::Blake3Groth16 => { let blake3_receipt = blake3_groth16::compress_blake3_groth16(&receipt) @@ -46,13 +48,9 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< blake3_receipt .verify_integrity() .context("[BENTO-SNARK-007] Failed to verify blake3 snark receipt")?; - let snark_receipt: Receipt = blake3_receipt.into(); - (snark_receipt, BLAKE3_GROTH16_BUCKET_DIR) + (bincode::serialize(&blake3_receipt)?, BLAKE3_GROTH16_BUCKET_DIR) } }; - if !matches!(snark_receipt.inner, InnerReceipt::Groth16(_)) { - bail!("[BENTO-SNARK-004] failed to create groth16 receipt"); - } let key = &format!("{RECEIPT_BUCKET_DIR}/{bucket_dir}/{job_id}.bincode"); @@ -60,7 +58,7 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< agent .s3_client - .write_to_s3(key, snark_receipt) + .write_buf_to_s3(key, snark_receipt_bytes) .await .context("[BENTO-SNARK-006] Failed to upload final receipt to obj store")?; From c56d0b88a4ca74d687ec60f9e847df306b4b3859 Mon Sep 17 00:00:00 2001 From: Eric Date: Thu, 13 Nov 2025 20:12:05 -0500 Subject: [PATCH 41/86] comment --- crates/broker/src/order_picker.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 2b1a545a6..965c123d6 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -812,7 +812,7 @@ where let predicate = Predicate::try_from(order.request.requirements.predicate.clone()) .map_err(|e| OrderPickerErr::RequestError(Arc::new(e.into())))?; let eval_data = if is_blake3_groth16_selector(order.request.requirements.selector) { - // TODO(ec2): comment on this + // These proofs have to have no journal delivery because they cannot be authenticated on chain. FulfillmentData::None } else { FulfillmentData::from_image_id_and_journal(Digest::from_hex(image_id).unwrap(), journal) From 41114db8440d22777526d23d6c81f7b6a418b7ca Mon Sep 17 00:00:00 2001 From: Angelo Capossele Date: Fri, 14 Nov 2025 18:13:33 +0000 Subject: [PATCH 42/86] Drop risc0-ethereum patch (#1320) --- .gitmodules | 6 +- Cargo.lock | 74 +- Cargo.toml | 13 +- blake3_groth16/Cargo.toml | 9 +- blake3_groth16/src/lib.rs | 3 +- blake3_groth16/src/prove.rs | 6 +- blake3_groth16/src/receipt.rs | 2 +- blake3_groth16/src/seal_to_json.rs | 25831 ++++++++++++++++ contracts/scripts/Deploy.s.sol | 31 +- .../blake3-groth16/Blake3Groth16Verifier.sol | 165 + contracts/src/blake3-groth16/ControlID.sol | 16 + .../src/blake3-groth16/Groth16Verifier.sol | 168 + contracts/test/Blake3Groth16TestReceipt.sol | 16 + contracts/test/Blake3Groth16Verifier.t.sol | 79 + crates/boundless-cli/src/lib.rs | 11 +- crates/boundless-market/src/contracts/mod.rs | 6 +- .../src/request_builder/mod.rs | 5 +- crates/boundless-market/src/selector.rs | 131 +- lib/risc0-ethereum | 2 +- xtask/Cargo.toml | 10 +- xtask/src/bootstrap_blake3_groth16.rs | 91 +- xtask/src/main.rs | 9 +- 22 files changed, 26579 insertions(+), 105 deletions(-) create mode 100644 blake3_groth16/src/seal_to_json.rs create mode 100644 contracts/src/blake3-groth16/Blake3Groth16Verifier.sol create mode 100644 contracts/src/blake3-groth16/ControlID.sol create mode 100644 contracts/src/blake3-groth16/Groth16Verifier.sol create mode 100644 contracts/test/Blake3Groth16TestReceipt.sol create mode 100644 contracts/test/Blake3Groth16Verifier.t.sol diff --git a/.gitmodules b/.gitmodules index 536b5fe67..9903a039f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,9 +7,6 @@ [submodule "lib/openzeppelin-contracts-upgradeable"] path = lib/openzeppelin-contracts-upgradeable url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable -[submodule "lib/risc0-ethereum"] - path = lib/risc0-ethereum - url = https://github.com/ec2/risc0-ethereum [submodule "lib/openzeppelin-foundry-upgrades"] path = lib/openzeppelin-foundry-upgrades url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades @@ -22,3 +19,6 @@ [submodule "lib/zkc"] path = lib/zkc url = https://github.com/boundless-xyz/zkc +[submodule "lib/risc0-ethereum"] + path = lib/risc0-ethereum + url = https://github.com/risc0/risc0-ethereum diff --git a/Cargo.lock b/Cargo.lock index 28f48e54a..625bb57ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2577,6 +2577,7 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "bytemuck", "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more 2.0.1", @@ -2586,6 +2587,7 @@ dependencies = [ "num-traits", "risc0-binfmt", "risc0-circuit-recursion", + "risc0-core", "risc0-groth16", "risc0-groth16-sys", "risc0-zkp", @@ -2652,7 +2654,8 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" dependencies = [ "duplicate", "maybe-async", @@ -8676,7 +8679,8 @@ dependencies = [ [[package]] name = "risc0-aggregation" version = "0.9.0" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64#1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b37f9050c74d66eb953591e88a60f2d347e99b121e7330eabb0f29c4053d2a36" dependencies = [ "alloy-primitives 1.4.0", "alloy-sol-types", @@ -8692,7 +8696,8 @@ dependencies = [ [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" dependencies = [ "anyhow", "borsh", @@ -8713,7 +8718,8 @@ dependencies = [ [[package]] name = "risc0-build" version = "3.0.3" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" dependencies = [ "anyhow", "cargo_metadata", @@ -8755,7 +8761,8 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" dependencies = [ "cc", "directories", @@ -8768,7 +8775,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" dependencies = [ "anyhow", "bytemuck", @@ -8789,7 +8797,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" dependencies = [ "cc", "cust", @@ -8804,7 +8813,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", @@ -8829,7 +8839,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" dependencies = [ "glob", "risc0-build-kernel", @@ -8841,7 +8852,8 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" dependencies = [ "anyhow", "bit-vec 0.8.0", @@ -8874,7 +8886,8 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" dependencies = [ "cc", "cust", @@ -8889,7 +8902,8 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", "nvtx", @@ -8900,7 +8914,8 @@ dependencies = [ [[package]] name = "risc0-ethereum-contracts" version = "3.0.1" -source = "git+https://github.com/ec2/risc0-ethereum.git?rev=1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64#1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a604f09f459f456fd9ef4919c6efcaa6a787a6f9ffcd76cfc81eae1860584a1" dependencies = [ "alloy", "alloy-primitives 1.4.0", @@ -8918,7 +8933,8 @@ dependencies = [ [[package]] name = "risc0-groth16" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" dependencies = [ "anyhow", "ark-bn254", @@ -8947,7 +8963,8 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" dependencies = [ "anyhow", "blst", @@ -9004,7 +9021,8 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" dependencies = [ "anyhow", "blst", @@ -9016,7 +9034,8 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -9026,7 +9045,8 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" dependencies = [ "anyhow", "blake2", @@ -9057,12 +9077,13 @@ dependencies = [ [[package]] name = "risc0-zkvm" version = "3.0.3" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370)", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -9105,8 +9126,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.2.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", "cfg-if", @@ -9469,7 +9491,8 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", @@ -12343,13 +12366,18 @@ checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" name = "xtask" version = "1.1.0" dependencies = [ + "blake3_groth16", + "boundless-market", "clap", + "guest-util", "hex", "memmap2 0.9.8", "regex", "risc0-circuit-recursion", "risc0-groth16-sys", + "risc0-zkvm", "rlimit", + "tokio", "tracing", "tracing-subscriber 0.3.20", "xshell", diff --git a/Cargo.toml b/Cargo.toml index c4afb7e2c..4e41e3caa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,6 +83,7 @@ risc0-aggregation = { version = "0.9.0" } risc0-build = { version = "3.0.3", features = ["docker", "unstable"] } risc0-build-ethereum = { version = "3.0.1" } risc0-circuit-recursion = { version = "4.0.2" } +risc0-core = { version = "3.0.0" } risc0-ethereum-contracts = { version = "3.0.1" } risc0-povw = { version = "0.4", default-features = false } risc0-zkp = { version = "3.0.2" } @@ -119,15 +120,3 @@ lto = true # [profile.release] # lto = "fat" # codegen-units = 1 - -[patch.crates-io] -risc0-ethereum-contracts = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" } -risc0-aggregation = { git = "https://github.com/ec2/risc0-ethereum.git", rev = "1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64" } -# TODO(ec2): Needs these patches until this is backported https://github.com/risc0/risc0/pull/3370 -risc0-groth16 = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-groth16-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-zkp = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-binfmt = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-build = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-zkvm = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-circuit-recursion = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 0a9b3ab57..88e475b0d 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -8,7 +8,12 @@ repository.workspace = true [features] default = ["prove"] prove = ["risc0-zkvm/prove"] -cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] +cuda = [ + "prove", + "risc0-zkvm/cuda", + "risc0-groth16/cuda", + "dep:risc0-groth16-sys", +] [dependencies] anyhow.workspace = true @@ -20,6 +25,7 @@ bincode.workspace = true blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } borsh = { workspace = true, features = ["derive"] } +bytemuck = { workspace = true } circom-witnesscalc = { version = "0.2.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } derive_more.workspace = true @@ -28,6 +34,7 @@ num-bigint = { version = "0.4.5", features = ["std"] } num-traits = "0.2.19" risc0-binfmt = { version = "3.0.2", default-features = false } risc0-circuit-recursion = { workspace = true } +risc0-core = { workspace = true } risc0-groth16 = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true } risc0-zkp = { workspace = true } diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 3d411813e..920dc3566 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -12,6 +12,7 @@ use risc0_zkvm::sha::Digestible; mod prove; pub mod receipt; pub mod receipt_claim; +mod seal_to_json; pub mod verify; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. @@ -31,7 +32,7 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result, ) -> Result { let seal_bytes = p254_receipt.get_seal_bytes(); - let seal_json = seal_to_json(seal_bytes.as_slice())?; // TODO(ec2): This is currently using a local version of risc0 which exposes this method + let seal_json = seal_to_json(seal_bytes.as_slice())?; let mut seal_json: serde_json::Value = serde_json::from_str(&seal_json)?; let mut journal_bits = Vec::new(); diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index 2764a21d2..b2ecc3115 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -132,7 +132,7 @@ impl Blake3Groth16Receipt { } } - fn seal(&self) -> Result<&Vec> { + pub fn seal(&self) -> Result<&Vec> { Ok(&self.groth16()?.seal) } } diff --git a/blake3_groth16/src/seal_to_json.rs b/blake3_groth16/src/seal_to_json.rs new file mode 100644 index 000000000..94c0fab86 --- /dev/null +++ b/blake3_groth16/src/seal_to_json.rs @@ -0,0 +1,25831 @@ +// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// TODO: Drop in replacement until https://github.com/risc0/risc0/pull/3370 gets backported. + +use std::fmt::Write; + +use anyhow::{Context, Result}; +use num_bigint::BigUint; +use num_traits::Num; +use risc0_core::field::baby_bear::BabyBearElem; +use risc0_zkp::core::{ + digest::{Digest, DIGEST_WORDS}, + hash::poseidon_254::digest_to_fr, +}; + +// Convert a recursion VM seal (i.e. succinct receipt) into a JSON format compatible with the +// `stark_verify` witness generator. +pub(crate) fn seal_to_json(seal_bytes: &[u8]) -> Result { + let mut json = String::new(); + + let mut iop = vec![0u32; K_SEAL_WORDS]; + iop.copy_from_slice(bytemuck::cast_slice(seal_bytes)); + + writeln!(json, "{{\n \"iop\" : [")?; + + let mut pos = 0; + for seal_type in K_SEAL_TYPES.iter().take(K_SEAL_ELEMS) { + if pos != 0 { + writeln!(json, ",")?; + } + match seal_type { + IopType::Fp => { + let value = BabyBearElem::new_raw(iop[pos]).as_u32(); + pos += 1; + writeln!(json, " \"{value}\"")?; + } + _ => { + let digest = Digest::try_from(&iop[pos..pos + DIGEST_WORDS])?; + let value = digest_to_decimal(&digest)?; + pos += 8; + writeln!(json, " \"{value}\"")?; + } + } + } + write!(json, " ]\n}}")?; + + Ok(json) +} + +fn digest_to_decimal(digest: &Digest) -> Result { + to_decimal(&format!("{:?}", digest_to_fr(digest))).context("digest_to_decimal failed") +} + +fn to_decimal(s: &str) -> Option { + s.strip_prefix("Fr(0x") + .and_then(|s| s.strip_suffix(')')) + .and_then(|stripped| BigUint::from_str_radix(stripped, 16).ok()) + .map(|n| n.to_str_radix(10)) +} + +pub(crate) const K_SEAL_WORDS: usize = 55667; +pub(crate) const K_SEAL_ELEMS: usize = 25749; + +pub(crate) enum IopType { + Fp, + Digest, +} + +pub(crate) static K_SEAL_TYPES: [IopType; K_SEAL_ELEMS] = [ + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Digest, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Fp, + IopType::Digest, + IopType::Digest, + IopType::Digest, +]; diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 6dad4f5df..54e4f3889 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -5,13 +5,16 @@ pragma solidity ^0.8.26; -import {Script, console2} from "forge-std/Script.sol"; +import {console2} from "forge-std/Script.sol"; import {Strings} from "openzeppelin/contracts/utils/Strings.sol"; import {IRiscZeroSelectable} from "risc0/IRiscZeroSelectable.sol"; import {IRiscZeroVerifier} from "risc0/IRiscZeroVerifier.sol"; import {RiscZeroSetVerifier} from "risc0/RiscZeroSetVerifier.sol"; import {RiscZeroVerifierRouter} from "risc0/RiscZeroVerifierRouter.sol"; import {RiscZeroCheats} from "risc0/test/RiscZeroCheats.sol"; +import {RiscZeroMockVerifier} from "risc0/test/RiscZeroMockVerifier.sol"; +import {Blake3Groth16Verifier} from "../src/blake3-groth16/Blake3Groth16Verifier.sol"; +import {ControlID} from "../src/blake3-groth16/ControlID.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {ConfigLoader, DeploymentConfig} from "./Config.s.sol"; import {BoundlessMarket} from "../src/BoundlessMarket.sol"; @@ -69,13 +72,12 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { console2.log("Added Groth16 verifier to router with selector"); console2.logBytes4(selector); - IRiscZeroVerifier _blake3_g16_verifier = deployRiscZeroBlake3Verifier(); - IRiscZeroSelectable blake3_g16_selectable = IRiscZeroSelectable(address(_blake3_g16_verifier)); - bytes4 blake3_g16_selector = blake3_g16_selectable.SELECTOR(); - verifierRouter.addVerifier(blake3_g16_selector, _blake3_g16_verifier); + IRiscZeroVerifier _blake3G16Verifier = deployBlake3Verifier(); + IRiscZeroSelectable blake3G16Selectable = IRiscZeroSelectable(address(_blake3G16Verifier)); + bytes4 blake3G16Selector = blake3G16Selectable.SELECTOR(); + verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); console2.log("Added Blake3 Groth16 verifier to router with selector"); - console2.logBytes4(blake3_g16_selector); - + console2.logBytes4(blake3G16Selector); // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. string memory setBuilderPath = @@ -174,4 +176,19 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { // Check for uncommitted changes warning checkUncommittedChangesWarning("Deployment"); } + + /// @notice Deploy either a test or fully verifying `Blake3Groth16Verifier` depending on `devMode()`. + function deployBlake3Verifier() internal returns (IRiscZeroVerifier) { + if (devMode()) { + // NOTE: Using a fixed selector of 0xFFFFFFFF for the selector of the mock verifier. + IRiscZeroVerifier _verifier = new RiscZeroMockVerifier(bytes4(0xFFFFFFFF)); + console2.log("Deployed RiscZeroMockVerifier to", address(_verifier)); + return _verifier; + } else { + IRiscZeroVerifier _verifier = + new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + console2.log("Deployed Blake3Groth16Verifier to", address(_verifier)); + return _verifier; + } + } } diff --git a/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol b/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol new file mode 100644 index 000000000..c2bada8fd --- /dev/null +++ b/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol @@ -0,0 +1,165 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Use of this source code is governed by the Business Source License +// as found in the LICENSE-BSL file. +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.9; + +import {SafeCast} from "openzeppelin/contracts/utils/math/SafeCast.sol"; + +import {Groth16Verifier} from "./Groth16Verifier.sol"; +import { + IRiscZeroVerifier, + Output, + OutputLib, + Receipt, + ReceiptClaim, + ReceiptClaimLib, + VerificationFailed +} from "risc0/IRiscZeroVerifier.sol"; +import {StructHash} from "risc0/StructHash.sol"; +import {reverseByteOrderUint256} from "risc0/Util.sol"; +import {IRiscZeroSelectable} from "risc0/IRiscZeroSelectable.sol"; + +/// @notice A Groth16 seal over the claimed receipt claim. +struct Seal { + uint256[2] a; + uint256[2][2] b; + uint256[2] c; +} + +/// @notice Error raised when this verifier receives a receipt with a selector that does not match +/// its own. The selector value is calculated from the verifier parameters, and so this +/// usually indicates a mismatch between the version of the prover and this verifier. +error SelectorMismatch(bytes4 received, bytes4 expected); + +/// @notice Blake3Groth16 verifier contract for RISC Zero receipts of execution. +contract Blake3Groth16Verifier is IRiscZeroVerifier, IRiscZeroSelectable, Groth16Verifier { + using ReceiptClaimLib for ReceiptClaim; + using OutputLib for Output; + using SafeCast for uint256; + + /// @notice Semantic version of the RISC Zero system of which this contract is part. + /// @dev This is set to be equal to the version of the risc0-zkvm crate. + string public constant VERSION = "0.0.1"; + + /// @notice Control root hash binding the set of circuits in the RISC Zero system. + /// @dev This value controls what set of recursion programs (e.g. lift, join, resolve), and + /// therefore what version of the zkVM circuit, will be accepted by this contract. Each + /// instance of this verifier contract will accept a single release of the RISC Zero circuits. + /// + /// New releases of RISC Zero's zkVM require updating these values. These values can be + /// calculated from the [risc0 monorepo][1] using: `cargo xtask bootstrap`. + /// + /// [1]: https://github.com/risc0/risc0 + bytes16 public immutable CONTROL_ROOT_0; + bytes16 public immutable CONTROL_ROOT_1; + bytes32 public immutable BN254_CONTROL_ID; + + /// @notice A short key attached to the seal to select the correct verifier implementation. + /// @dev The selector is taken from the hash of the verifier parameters including the Groth16 + /// verification key and the control IDs that commit to the RISC Zero circuits. If two + /// receipts have different selectors (i.e. different verifier parameters), then it can + /// generally be assumed that they need distinct verifier implementations. This is used as + /// part of the RISC Zero versioning mechanism. + /// + /// A selector is not intended to be collision resistant, in that it is possible to find + /// two preimages that result in the same selector. This is acceptable since it's purpose + /// to a route a request among a set of trusted verifiers, and to make errors of sending a + /// receipt to a mismatching verifiers easier to debug. It is analogous to the ABI + /// function selectors. + bytes4 public immutable SELECTOR; + + /// @notice Identifier for the Groth16 verification key encoded into the base contract. + /// @dev This value is computed at compile time. + function verifierKeyDigest() internal pure returns (bytes32) { + bytes32[] memory icDigests = new bytes32[](2); + icDigests[0] = sha256(abi.encodePacked(IC0x, IC0y)); + icDigests[1] = sha256(abi.encodePacked(IC1x, IC1y)); + + return sha256( + abi.encodePacked( + // tag + sha256("risc0_groth16.VerifyingKey"), + // down + sha256(abi.encodePacked(alphax, alphay)), + sha256(abi.encodePacked(betax1, betax2, betay1, betay2)), + sha256(abi.encodePacked(gammax1, gammax2, gammay1, gammay2)), + sha256(abi.encodePacked(deltax1, deltax2, deltay1, deltay2)), + StructHash.taggedList(sha256("risc0_groth16.VerifyingKey.IC"), icDigests), + // down length + uint16(5) << 8 + ) + ); + } + + constructor(bytes32 controlRoot, bytes32 bn254ControlId) { + (CONTROL_ROOT_0, CONTROL_ROOT_1) = splitDigest(controlRoot); + BN254_CONTROL_ID = bn254ControlId; + + SELECTOR = bytes4( + sha256( + abi.encodePacked( + // tag + sha256("risc0.Groth16ReceiptVerifierParameters"), + // down + controlRoot, + reverseByteOrderUint256(uint256(bn254ControlId)), + verifierKeyDigest(), + // down length + uint16(3) << 8 + ) + ) + ); + } + + /// @notice splits a digest into two 128-bit halves to use as public signal inputs. + /// @dev RISC Zero's Circom verifier circuit takes each of two hash digests in two 128-bit + /// chunks. These values can be derived from the digest by splitting the digest in half and + /// then reversing the bytes of each. + function splitDigest(bytes32 digest) internal pure returns (bytes16, bytes16) { + uint256 reversed = reverseByteOrderUint256(uint256(digest)); + return (bytes16(uint128(reversed)), bytes16(uint128(reversed >> 128))); + } + + /// @inheritdoc IRiscZeroVerifier + function verify(bytes calldata seal, bytes32 imageId, bytes32 journalDigest) external pure { + seal; + imageId; + journalDigest; + revert("Use verifyIntegrity"); + } + + /// @inheritdoc IRiscZeroVerifier + function verifyIntegrity(Receipt calldata receipt) external view { + return _verifyIntegrity(receipt.seal, receipt.claimDigest); + } + + /// @notice internal implementation of verifyIntegrity, factored to avoid copying calldata bytes to memory. + function _verifyIntegrity(bytes calldata seal, bytes32 claimDigest) internal view { + // Check that the seal has a matching selector. Mismatch generally indicates that the + // prover and this verifier are using different parameters, and so the verification + // will not succeed. + if (SELECTOR != bytes4(seal[:4])) { + revert SelectorMismatch({received: bytes4(seal[:4]), expected: SELECTOR}); + } + + // Run the Groth16 verify procedure. + Seal memory decodedSeal = abi.decode(seal[4:], (Seal)); + bool verified = this.verifyProof( + decodedSeal.a, + decodedSeal.b, + decodedSeal.c, + [ + /// Blake3(Sha256(control_root, pre_state_digest, post_state_digest, id_bn254_fr), journal)[:31] + uint256(claimDigest) + ] + ); + + // Revert is verification failed. + if (!verified) { + revert VerificationFailed(); + } + } +} \ No newline at end of file diff --git a/contracts/src/blake3-groth16/ControlID.sol b/contracts/src/blake3-groth16/ControlID.sol new file mode 100644 index 000000000..bbf34db11 --- /dev/null +++ b/contracts/src/blake3-groth16/ControlID.sol @@ -0,0 +1,16 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Use of this source code is governed by the Business Source License +// as found in the LICENSE-BSL file. +// SPDX-License-Identifier: BUSL-1.1 + +// This file is automatically generated by: +// cargo xtask bootstrap-groth16 + +pragma solidity ^0.8.9; + +library ControlID { + bytes32 public constant CONTROL_ROOT = hex"a54dc85ac99f851c92d7c96d7318af41dbe7c0194edfcc37eb4d422a998c1f56"; + // NOTE: This has the opposite byte order to the value in the risc0 repository. + bytes32 public constant BN254_CONTROL_ID = hex"04446e66d300eb7fb45c9726bb53c793dda407a62e9601618bb43c5c14657ac0"; +} diff --git a/contracts/src/blake3-groth16/Groth16Verifier.sol b/contracts/src/blake3-groth16/Groth16Verifier.sol new file mode 100644 index 000000000..c14249f1b --- /dev/null +++ b/contracts/src/blake3-groth16/Groth16Verifier.sol @@ -0,0 +1,168 @@ +// SPDX-License-Identifier: GPL-3.0 +/* + Copyright 2021 0KIMS association. + + This file is generated with [snarkJS](https://github.com/iden3/snarkjs). + + snarkJS is a free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + snarkJS is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with snarkJS. If not, see . +*/ + +pragma solidity >=0.7.0 <0.9.0; + +contract Groth16Verifier { + // Scalar field size + uint256 constant r = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + // Base field size + uint256 constant q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + // Verification Key data + uint256 constant alphax = 16428432848801857252194528405604668803277877773566238944394625302971855135431; + uint256 constant alphay = 16846502678714586896801519656441059708016666274385668027902869494772365009666; + uint256 constant betax1 = 3182164110458002340215786955198810119980427837186618912744689678939861918171; + uint256 constant betax2 = 16348171800823588416173124589066524623406261996681292662100840445103873053252; + uint256 constant betay1 = 4920802715848186258981584729175884379674325733638798907835771393452862684714; + uint256 constant betay2 = 19687132236965066906216944365591810874384658708175106803089633851114028275753; + uint256 constant gammax1 = 11559732032986387107991004021392285783925812861821192530917403151452391805634; + uint256 constant gammax2 = 10857046999023057135944570762232829481370756359578518086990519993285655852781; + uint256 constant gammay1 = 4082367875863433681332203403145435568316851327593401208105741076214120093531; + uint256 constant gammay2 = 8495653923123431417604973247489272438418190587263600148770280649306958101930; + uint256 constant deltax1 = 18786665442134809547367793008388252094276956707083189371748822844215202271178; + uint256 constant deltax2 = 17296777349791701671871010047490559682924748762983962242018229225890177681165; + uint256 constant deltay1 = 21546884238630900902634517213362010321565339505810557359182294051078510536811; + uint256 constant deltay2 = 7214627676570978956115414107903354102221009447018809863680303520130992055423; + + + uint256 constant IC0x = 1396989810128049774239906514097458055670219613079348950494410066757721605523; + uint256 constant IC0y = 20069629286434534534516684991063672335613842540347999544849171590987775766961; + + uint256 constant IC1x = 19282603452922066135228857769519044667044696173320493211119861249451600114594; + uint256 constant IC1y = 11966256187809052800087108088094647243345273965264062329687482664981607072161; + + + // Memory data + uint16 constant pVk = 0; + uint16 constant pPairing = 128; + + uint16 constant pLastMem = 896; + + function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[1] calldata _pubSignals) public view returns (bool) { + assembly { + function checkField(v) { + if iszero(lt(v, r)) { + mstore(0, 0) + return(0, 0x20) + } + } + + // G1 function to multiply a G1 value(x,y) to value in an address + function g1_mulAccC(pR, x, y, s) { + let success + let mIn := mload(0x40) + mstore(mIn, x) + mstore(add(mIn, 32), y) + mstore(add(mIn, 64), s) + + success := staticcall(sub(gas(), 2000), 7, mIn, 96, mIn, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + + mstore(add(mIn, 64), mload(pR)) + mstore(add(mIn, 96), mload(add(pR, 32))) + + success := staticcall(sub(gas(), 2000), 6, mIn, 128, pR, 64) + + if iszero(success) { + mstore(0, 0) + return(0, 0x20) + } + } + + function checkPairing(pA, pB, pC, pubSignals, pMem) -> isOk { + let _pPairing := add(pMem, pPairing) + let _pVk := add(pMem, pVk) + + mstore(_pVk, IC0x) + mstore(add(_pVk, 32), IC0y) + + // Compute the linear combination vk_x + + g1_mulAccC(_pVk, IC1x, IC1y, calldataload(add(pubSignals, 0))) + + + // -A + mstore(_pPairing, calldataload(pA)) + mstore(add(_pPairing, 32), mod(sub(q, calldataload(add(pA, 32))), q)) + + // B + mstore(add(_pPairing, 64), calldataload(pB)) + mstore(add(_pPairing, 96), calldataload(add(pB, 32))) + mstore(add(_pPairing, 128), calldataload(add(pB, 64))) + mstore(add(_pPairing, 160), calldataload(add(pB, 96))) + + // alpha1 + mstore(add(_pPairing, 192), alphax) + mstore(add(_pPairing, 224), alphay) + + // beta2 + mstore(add(_pPairing, 256), betax1) + mstore(add(_pPairing, 288), betax2) + mstore(add(_pPairing, 320), betay1) + mstore(add(_pPairing, 352), betay2) + + // vk_x + mstore(add(_pPairing, 384), mload(add(pMem, pVk))) + mstore(add(_pPairing, 416), mload(add(pMem, add(pVk, 32)))) + + + // gamma2 + mstore(add(_pPairing, 448), gammax1) + mstore(add(_pPairing, 480), gammax2) + mstore(add(_pPairing, 512), gammay1) + mstore(add(_pPairing, 544), gammay2) + + // C + mstore(add(_pPairing, 576), calldataload(pC)) + mstore(add(_pPairing, 608), calldataload(add(pC, 32))) + + // delta2 + mstore(add(_pPairing, 640), deltax1) + mstore(add(_pPairing, 672), deltax2) + mstore(add(_pPairing, 704), deltay1) + mstore(add(_pPairing, 736), deltay2) + + + let success := staticcall(sub(gas(), 2000), 8, _pPairing, 768, _pPairing, 0x20) + + isOk := and(success, mload(_pPairing)) + } + + let pMem := mload(0x40) + mstore(0x40, add(pMem, pLastMem)) + + // Validate that all evaluations ∈ F + + checkField(calldataload(add(_pubSignals, 0))) + + + // Validate all evaluations + let isValid := checkPairing(_pA, _pB, _pC, _pubSignals, pMem) + + mstore(0, isValid) + return(0, 0x20) + } + } + } diff --git a/contracts/test/Blake3Groth16TestReceipt.sol b/contracts/test/Blake3Groth16TestReceipt.sol new file mode 100644 index 000000000..45074b894 --- /dev/null +++ b/contracts/test/Blake3Groth16TestReceipt.sol @@ -0,0 +1,16 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Use of this source code is governed by the Business Source License +// as found in the LICENSE-BSL file. +// SPDX-License-Identifier: BUSL-1.1 + +// This file is automatically generated by: +// cargo xtask bootstrap-groth16 + +pragma solidity ^0.8.13; + +library TestReceipt { + bytes public constant SEAL = + hex"62f049f609e5e571a5daab1c3a3c4e02e4e3f3104218cb0bc39a1067859858d09eefd9102809fbb55dd140c09cf131dae9c271d7d386b021389e929f791e7aa4ffdb90741b8f4159cc9d57fce7c4bb5a7da795cb15cd35da3f1067218e1359fe2430af2b24b5ac63cdaf40cdb240039372942207e1432496eb7efa4dec0cee4bef90cece1ae0027bc89807ac1293ce8d9c8ce3dd999f6926ea0b5904acd0182c85a203b325b504efe9bcef7d9dca9cbf7f2d1b312bd189352e7a50a969b2175dc3a3079615a8fa448aba2fc439af0a5f01949a47507210c5f3088a485ecbe6c4343e7227145675020b043e2b1211be05c0dbab20d5e5423b5b53d193b7a8cb91455dca86"; + bytes32 public constant CLAIM_DIGEST = hex"00518e3981d8f63a944afd3d1d2b5c23ba7968488981875b7659e1beb2a95a63"; +} diff --git a/contracts/test/Blake3Groth16Verifier.t.sol b/contracts/test/Blake3Groth16Verifier.t.sol new file mode 100644 index 000000000..e25e42c00 --- /dev/null +++ b/contracts/test/Blake3Groth16Verifier.t.sol @@ -0,0 +1,79 @@ +// Copyright 2025 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +pragma solidity ^0.8.13; + +import {Test} from "forge-std/Test.sol"; + +import { + Output, + OutputLib, + // Receipt needs to be renamed due to collision with type on the Test contract. + Receipt as RiscZeroReceipt, + ReceiptClaim, + ReceiptClaimLib, + SystemState, + SystemStateLib, + VerificationFailed +} from "risc0/IRiscZeroVerifier.sol"; +import {ControlID} from "../src/blake3-groth16/ControlID.sol"; +import {Blake3Groth16Verifier} from "../src/blake3-groth16/Blake3Groth16Verifier.sol"; +import {TestReceipt} from "./Blake3Groth16TestReceipt.sol"; + +contract Blake3Groth16VerifierTest is Test { + using OutputLib for Output; + using ReceiptClaimLib for ReceiptClaim; + using SystemStateLib for SystemState; + + RiscZeroReceipt internal receipt = RiscZeroReceipt(TestReceipt.SEAL, TestReceipt.CLAIM_DIGEST); + + Blake3Groth16Verifier internal verifier; + + function setUp() external { + verifier = new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + } + + function testConsistentSystemStateZeroDigest() external pure { + require( + ReceiptClaimLib.SYSTEM_STATE_ZERO_DIGEST + == sha256( + abi.encodePacked( + SystemStateLib.TAG_DIGEST, + // down + bytes32(0), + // data + uint32(0), + // down.length + uint16(1) << 8 + ) + ) + ); + } + + function testVerifyKnownGoodReceipt() external view { + verifier.verifyIntegrity(receipt); + } + + function expectVerificationFailure(bytes memory seal, ReceiptClaim memory claim) internal { + bytes32 claimDigest = claim.digest(); + vm.expectRevert(VerificationFailed.selector); + verifier.verifyIntegrity(RiscZeroReceipt(seal, claimDigest)); + } + + function testSelectorIsStable() external view { + require(verifier.SELECTOR() == hex"62f049f6"); + } +} diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 372070485..663164982 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -627,9 +627,12 @@ mod tests { signers::local::PrivateKeySigner, }; use blake3_groth16::Blake3Groth16ReceiptClaim; - use boundless_market::contracts::{ - eip712_domain, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, - UNSPECIFIED_SELECTOR, + use boundless_market::{ + contracts::{ + eip712_domain, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, + UNSPECIFIED_SELECTOR, + }, + selector::SelectorExt, }; use boundless_test_utils::guests::{ECHO_ID, ECHO_PATH}; use boundless_test_utils::market::create_test_ctx; @@ -708,7 +711,7 @@ mod tests { let request = ProofRequest::new( RequestId::new(signer.address(), 0), Requirements::new(Predicate::claim_digest_match(blake3_claim_digest)) - .with_selector(FixedBytes::from(Selector::blake3_groth16_latest() as u32)), + .with_selector(FixedBytes::from(SelectorExt::blake3_groth16_latest() as u32)), format!("file://{ECHO_PATH}"), RequestInput::builder().write_slice(&input).build_inline().unwrap(), Offer::default() diff --git a/crates/boundless-market/src/contracts/mod.rs b/crates/boundless-market/src/contracts/mod.rs index 5814de698..2d73592e4 100644 --- a/crates/boundless-market/src/contracts/mod.rs +++ b/crates/boundless-market/src/contracts/mod.rs @@ -579,10 +579,12 @@ impl Requirements { /// to the latest Blake3Groth16 selector. #[cfg(not(target_os = "zkvm"))] pub fn with_blake3_groth16_proof(self) -> Self { + use crate::selector::SelectorExt; + match crate::util::is_dev_mode() { - true => Self { selector: FixedBytes::from(Selector::FakeReceipt as u32), ..self }, + true => Self { selector: FixedBytes::from(SelectorExt::FakeReceipt as u32), ..self }, false => Self { - selector: FixedBytes::from(Selector::blake3_groth16_latest() as u32), + selector: FixedBytes::from(SelectorExt::blake3_groth16_latest() as u32), ..self }, } diff --git a/crates/boundless-market/src/request_builder/mod.rs b/crates/boundless-market/src/request_builder/mod.rs index 4704b079f..cdbeb2ccd 100644 --- a/crates/boundless-market/src/request_builder/mod.rs +++ b/crates/boundless-market/src/request_builder/mod.rs @@ -31,6 +31,7 @@ use url::Url; use crate::{ contracts::{ProofRequest, RequestId, RequestInput}, input::GuestEnv, + selector::SelectorExt, storage::{StandardStorageProvider, StorageProvider}, util::NotProvided, }; @@ -560,8 +561,8 @@ impl RequestParams { pub fn with_blake3_groth16_proof(self) -> Self { let mut requirements = self.requirements; requirements.selector = match crate::util::is_dev_mode() { - true => Some((Selector::FakeReceipt as u32).into()), - false => Some((Selector::blake3_groth16_latest() as u32).into()), + true => Some((SelectorExt::FakeReceipt as u32).into()), + false => Some((SelectorExt::blake3_groth16_latest() as u32).into()), }; // TODO(ec2): should we automatically set the predicate type to claim digest match here? Self { requirements, ..self } diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index 272689fab..f37fa8375 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -15,16 +15,120 @@ //! Selector utility functions. use std::collections::HashMap; +use std::fmt::{self, Display, Formatter}; use alloy_primitives::FixedBytes; use clap::ValueEnum; use risc0_aggregation::SetInclusionReceiptVerifierParameters; -use risc0_ethereum_contracts::selector::{Selector, SelectorType}; +use risc0_ethereum_contracts::selector::Selector; use risc0_zkvm::sha::{Digest, Digestible}; +use thiserror::Error; use crate::contracts::UNSPECIFIED_SELECTOR; use crate::util::is_dev_mode; +#[derive(Debug, Error)] +#[non_exhaustive] +/// Errors related to extended selectors. +pub enum SelectorExtError { + /// Unsupported selector error. + #[error("Unsupported selector")] + UnsupportedSelector, + /// No verifier parameters error. + #[error("Selector {0} does not have verifier parameters")] + NoVerifierParameters(SelectorExt), +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[non_exhaustive] +/// Types of extended selectors. +pub enum SelectorExtType { + /// A fake receipt selector used for testing and development. + FakeReceipt, + /// Groth16 proof selector. + Groth16, + /// Set verifier selector. + SetVerifier, + /// Blake3 Groth16 selector. + Blake3Groth16, +} + +#[repr(u32)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[non_exhaustive] +/// Extended selectors for various proof types. +pub enum SelectorExt { + /// A fake receipt selector used for testing and development. + FakeReceipt = 0xFFFFFFFF, + /// Groth16 proof selector version 3.0. + Groth16V3_0 = Selector::Groth16V3_0 as u32, + /// Set verifier selector version 0.9. + SetVerifierV0_9 = Selector::SetVerifierV0_9 as u32, + /// Blake3 Groth16 selector version 0.1. + Blake3Groth16V0_1 = 0x62f049f6, +} + +impl Display for SelectorExt { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{:#010x}", *self as u32) + } +} + +impl TryFrom for SelectorExt { + type Error = SelectorExtError; + + fn try_from(value: u32) -> Result { + match value { + 0xFFFFFFFF => Ok(SelectorExt::FakeReceipt), + 0x73c457ba => Ok(SelectorExt::Groth16V3_0), + 0x242f9d5b => Ok(SelectorExt::SetVerifierV0_9), + 0x62f049f6 => Ok(SelectorExt::Blake3Groth16V0_1), + _ => Err(SelectorExtError::UnsupportedSelector), + } + } +} + +impl TryFrom for SelectorExt { + type Error = SelectorExtError; + + fn try_from(value: Selector) -> Result { + Self::try_from(value as u32) + } +} + +impl SelectorExt { + /// Get the latest groth16 selector. + pub fn groth16_latest() -> SelectorExt { + SelectorExt::Groth16V3_0 + } + + /// Get the latest set verifier selector. + pub fn set_verifier_latest() -> SelectorExt { + SelectorExt::SetVerifierV0_9 + } + + /// Get the latest blake3 groth16 selector. + pub fn blake3_groth16_latest() -> SelectorExt { + // Currently, we only have one blake3 groth16 selector. + SelectorExt::Blake3Groth16V0_1 + } + + /// Create a `SelectorExt` from a 4-byte array. + pub fn from_bytes(bytes: [u8; 4]) -> Option { + Self::try_from(u32::from_be_bytes(bytes)).ok() + } + + /// Returns the type of the selector. + pub fn get_type(self) -> SelectorExtType { + match self { + SelectorExt::FakeReceipt => SelectorExtType::FakeReceipt, + SelectorExt::Groth16V3_0 => SelectorExtType::Groth16, + SelectorExt::SetVerifierV0_9 => SelectorExtType::SetVerifier, + SelectorExt::Blake3Groth16V0_1 => SelectorExtType::Blake3Groth16, + } + } +} + /// Define the selector types. /// /// This is used to indicate the type of proof that is being requested. @@ -53,14 +157,17 @@ impl Default for SupportedSelectors { fn default() -> Self { let mut supported_selectors = Self::new() .with_selector(UNSPECIFIED_SELECTOR, ProofType::Any) - .with_selector(FixedBytes::from(Selector::groth16_latest() as u32), ProofType::Groth16) .with_selector( - FixedBytes::from(Selector::blake3_groth16_latest() as u32), + FixedBytes::from(SelectorExt::groth16_latest() as u32), + ProofType::Groth16, + ) + .with_selector( + FixedBytes::from(SelectorExt::blake3_groth16_latest() as u32), ProofType::Blake3Groth16, ); if is_dev_mode() { supported_selectors = supported_selectors - .with_selector(FixedBytes::from(Selector::FakeReceipt as u32), ProofType::Any); + .with_selector(FixedBytes::from(SelectorExt::FakeReceipt as u32), ProofType::Any); } supported_selectors } @@ -120,11 +227,11 @@ impl SupportedSelectors { /// Check if a selector is a groth16 selector. pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { - let sel = Selector::from_bytes(selector.into()); + let sel = SelectorExt::from_bytes(selector.into()); match sel { Some(selector) => { - selector.get_type() == SelectorType::FakeReceipt - || selector.get_type() == SelectorType::Groth16 + selector.get_type() == SelectorExtType::FakeReceipt + || selector.get_type() == SelectorExtType::Groth16 } None => false, } @@ -132,11 +239,11 @@ pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { /// Check if a selector is a blake3 groth16 selector. pub fn is_blake3_groth16_selector(selector: FixedBytes<4>) -> bool { - let sel = Selector::from_bytes(selector.into()); + let sel = SelectorExt::from_bytes(selector.into()); match sel { Some(selector) => { - selector.get_type() == SelectorType::FakeReceipt - || selector.get_type() == SelectorType::Blake3Groth16 + selector.get_type() == SelectorExtType::FakeReceipt + || selector.get_type() == SelectorExtType::Blake3Groth16 } None => false, } @@ -149,7 +256,7 @@ mod tests { #[test] fn test_supported_selectors() { let mut supported_selectors = SupportedSelectors::new(); - let selector = FixedBytes::from(Selector::groth16_latest() as u32); + let selector = FixedBytes::from(SelectorExt::groth16_latest() as u32); supported_selectors = supported_selectors.with_selector(selector, ProofType::Groth16); assert!(supported_selectors.is_supported(selector)); supported_selectors.remove(selector); @@ -158,7 +265,7 @@ mod tests { #[test] fn test_is_groth16_selector() { - let selector = FixedBytes::from(Selector::groth16_latest() as u32); + let selector = FixedBytes::from(SelectorExt::groth16_latest() as u32); assert!(is_groth16_selector(selector)); } } diff --git a/lib/risc0-ethereum b/lib/risc0-ethereum index 1d1e75e78..365e7b2db 160000 --- a/lib/risc0-ethereum +++ b/lib/risc0-ethereum @@ -1 +1 @@ -Subproject commit 1d1e75e78bf8e6ec26d59e0aef8cfa748aaa9b64 +Subproject commit 365e7b2db4f620fa256580c27558d2623362b9ae diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index e5b94a1f6..c64335fe4 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -6,10 +6,17 @@ homepage.workspace = true repository.workspace = true [dependencies] +blake3_groth16 = { path = "../blake3_groth16" } +boundless-market = { path = "../crates/boundless-market" } clap = { version = "4.5", features = ["derive", "env"] } +guest-util = { workspace = true } hex = { workspace = true } rlimit = "0.10.2" -risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } +risc0-groth16-sys = { workspace = true, optional = true, features = [ + "cuda", + "setup", +] } +risc0-zkvm = { workspace = true, features = ["prove"] } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" @@ -17,6 +24,7 @@ memmap2 = { version = "0.9", optional = true } regex = "1" # risc0-binfmt = { workspace = true } risc0-circuit-recursion = { workspace = true } +tokio = { workspace = true } [features] default = [] diff --git a/xtask/src/bootstrap_blake3_groth16.rs b/xtask/src/bootstrap_blake3_groth16.rs index ff60b8ee0..d2b9d7e6f 100644 --- a/xtask/src/bootstrap_blake3_groth16.rs +++ b/xtask/src/bootstrap_blake3_groth16.rs @@ -15,58 +15,49 @@ use std::{fs, path::Path, process::Command}; +use blake3_groth16::compress_blake3_groth16; +use boundless_market::selector::SelectorExt; use clap::Parser; +use guest_util::ECHO_ELF; use regex::Regex; use risc0_circuit_recursion::control_id::{ALLOWED_CONTROL_ROOT, BN254_IDENTITY_CONTROL_ID}; +use risc0_zkvm::{default_prover, Digest, ExecutorEnv, ProverOpts}; #[derive(Debug, Parser)] pub struct BootstrapBlake3Groth16 { - /// risc0-ethereum repository path - #[arg(long, env)] - risc0_ethereum_path: String, - /// blake3-groth16 setup directory #[arg(long, env)] blake3_groth16_setup_dir: String, } -const SOL_HEADER: &str = r#"// Copyright 2025 RISC Zero, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +const SOL_HEADER: &str = r#"// Copyright 2025 Boundless Foundation, Inc. // -// SPDX-License-Identifier: Apache-2.0 +// Use of this source code is governed by the Business Source License +// as found in the LICENSE-BSL file. +// SPDX-License-Identifier: BUSL-1.1 // This file is automatically generated by: // cargo xtask bootstrap-groth16 "#; -const SOLIDITY_VERIFIER_TARGET: &str = "contracts/src/blake3_groth16/Groth16Verifier.sol"; -const SOLIDITY_CONTROL_ID_PATH: &str = "contracts/src/blake3_groth16/ControlID.sol"; +const SOLIDITY_VERIFIER_TARGET: &str = "contracts/src/blake3-groth16/Groth16Verifier.sol"; +const SOLIDITY_CONTROL_ID_PATH: &str = "contracts/src/blake3-groth16/ControlID.sol"; +const SOLIDITY_TEST_RECEIPT_PATH: &str = "contracts/test/Blake3Groth16TestReceipt.sol"; const RUST_VERIFIER_PATH: &str = "blake3_groth16/src/verify.rs"; impl BootstrapBlake3Groth16 { - pub fn run(&self) { + pub async fn run(&self) { let current_dir = std::env::current_dir().unwrap(); let blake3_setup_path = current_dir.join(&self.blake3_groth16_setup_dir); - let risc0_ethereum_path = current_dir.join(&self.risc0_ethereum_path); - bootstrap_verifying_key(&blake3_setup_path, &risc0_ethereum_path); - bootstrap_control_id(&risc0_ethereum_path); + bootstrap_verifying_key(&blake3_setup_path); + bootstrap_control_id(); + bootstrap_test_receipt().await; } } -fn bootstrap_verifying_key(blake3_setup_path: &Path, risc0_ethereum_path: &Path) { - let solidity_verifier_target = risc0_ethereum_path.join(SOLIDITY_VERIFIER_TARGET); +fn bootstrap_verifying_key(blake3_setup_path: &Path) { + let solidity_verifier_target = Path::new(SOLIDITY_VERIFIER_TARGET); let solidity_verifier_source = blake3_setup_path.join("verifier.sol"); std::fs::copy(&solidity_verifier_source, solidity_verifier_target).unwrap(); let solidity_code = fs::read_to_string(solidity_verifier_source).unwrap(); @@ -110,7 +101,7 @@ fn bootstrap_verifying_key(blake3_setup_path: &Path, risc0_ethereum_path: &Path) .unwrap_or_else(|_| panic!("failed to format {RUST_VERIFIER_PATH}")); } -fn bootstrap_control_id(risc0_ethereum_path: &Path) { +fn bootstrap_control_id() { const LIB_HEADER: &str = r#"pragma solidity ^0.8.9; library ControlID { @@ -126,8 +117,8 @@ fn bootstrap_control_id(risc0_ethereum_path: &Path) { hex::encode(bn254_control_id) ); let content = &format!("{SOL_HEADER}{LIB_HEADER}\n{control_root}\n{bn254_control_id}\n}}"); - let solidity_control_id_path = risc0_ethereum_path.join(SOLIDITY_CONTROL_ID_PATH); - fs::write(&solidity_control_id_path, content).unwrap_or_else(|_| { + let solidity_control_id_path = Path::new(SOLIDITY_CONTROL_ID_PATH); + fs::write(solidity_control_id_path, content).unwrap_or_else(|_| { panic!("failed to save changes to {}", solidity_control_id_path.display()) }); @@ -138,3 +129,45 @@ fn bootstrap_control_id(risc0_ethereum_path: &Path) { .status() .unwrap_or_else(|_| panic!("failed to format {}", solidity_control_id_path.display())); } + +async fn bootstrap_test_receipt() { + const LIB_HEADER: &str = r#"pragma solidity ^0.8.13; + + library TestReceipt { +"#; + let (seal, claim_digest) = generate_receipt().await; + let selector = format!("{:x}", SelectorExt::blake3_groth16_latest() as u32); + let seal = hex::encode(&seal); + + // NOTE: Selector value is the first four bytes of the verifier param digest. It is added as part + // of ABI encoding and used for routing to the correct verifier on-chain. We do not use the + // full ABI encoding implementation here because its part of risc0-ethereum-contracts, which + // would be a hassle to import. + let seal = format!(r#"bytes public constant SEAL = hex"{selector}{seal}";"#); + let claim_digest = format!(r#"bytes32 public constant CLAIM_DIGEST = hex"{claim_digest}";"#); + + let solidity_test_receipt_path = Path::new(SOLIDITY_TEST_RECEIPT_PATH); + let content = &format!("{SOL_HEADER}{LIB_HEADER}\n{seal}\n{claim_digest}\n}}"); + fs::write(solidity_test_receipt_path, content).unwrap(); + + // Use forge fmt to format the file. + Command::new("forge").arg("fmt").arg(solidity_test_receipt_path.as_os_str()).status().unwrap(); +} + +// Return a Blake3-Groth16 `seal` and the claim digest. +// Requires running Docker. +async fn generate_receipt() -> (Vec, Digest) { + tracing::info!("prove"); + let input = [3u8; 32]; + + let env = ExecutorEnv::builder().write_slice(&input).build().unwrap(); + tracing::info!("Proving echo program to get initial receipt"); + let prover = default_prover(); + // Produce a receipt by proving the specified ELF binary. + let receipt = prover.prove_with_opts(env, ECHO_ELF, &ProverOpts::succinct()).unwrap().receipt; + tracing::info!("Initial receipt created, compressing to blake3_groth16"); + let blake3_receipt = compress_blake3_groth16(&receipt).await.unwrap(); + let seal = blake3_receipt.seal().expect("failed to retrieve seal"); + let claim_digest = blake3_receipt.claim_digest().expect("failed to compute claim digest"); + (seal.clone(), claim_digest) +} diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 1e2025fe3..66a2cb75b 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -16,18 +16,19 @@ enum Commands { } impl Commands { - fn run(&self) { + async fn run(&self) { match self { Commands::SetupBlake3Groth16(cmd) => cmd.run(), - Commands::BootstrapBlake3Groth16(cmd) => cmd.run(), + Commands::BootstrapBlake3Groth16(cmd) => cmd.run().await, } } } -fn main() { +#[tokio::main] +async fn main() { tracing_subscriber::fmt() .with_env_filter(tracing_subscriber::filter::EnvFilter::from_default_env()) .init(); - Cli::parse().cmd.run(); + Cli::parse().cmd.run().await; } From ca33db86bfb78dfe799c7bff2a38cc497ed0d896 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 14 Nov 2025 14:42:13 -0500 Subject: [PATCH 43/86] remove patch on bento --- bento/Cargo.toml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/bento/Cargo.toml b/bento/Cargo.toml index b5d7f5973..e94521e63 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -56,14 +56,3 @@ opt-level = 3 [profile.release] debug = 1 lto = true - -[patch.crates-io] -# TODO(ec2): Needs these patches until this is backported https://github.com/risc0/risc0/pull/3370 -risc0-groth16 = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-groth16-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-zkp = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-sys = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-binfmt = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-build = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-zkvm = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } -risc0-circuit-recursion = { git = "https://github.com/boundless-xyz/risc0.git", branch = "ec2/v3.0.3-backport-3370" } From 9ea30a35aeeea0080e9c34d87ef30c5f5aa9e8a6 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 14 Nov 2025 14:58:48 -0500 Subject: [PATCH 44/86] linter --- blake3_groth16/src/lib.rs | 10 +- blake3_groth16/src/receipt.rs | 7 +- .../src/commands/rewards/submit_mining.rs | 4 +- crates/boundless-cli/src/lib.rs | 16 +-- crates/broker/src/provers/default.rs | 2 +- crates/broker/src/storage.rs | 2 +- examples/composition/Cargo.lock | 96 +++++++++++++++++- examples/counter-with-callback/Cargo.lock | 96 +++++++++++++++++- examples/counter/Cargo.lock | 98 ++++++++++++------- examples/smart-contract-requestor/Cargo.lock | 97 +++++++++++++++++- 10 files changed, 367 insertions(+), 61 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 920dc3566..e528d15b2 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -3,15 +3,16 @@ pub use receipt::*; pub use receipt_claim::*; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; -use risc0_zkvm::{default_prover, InnerReceipt, MaybePruned, ProverOpts, Receipt}; +use risc0_zkvm::{default_prover, sha::Digestible, InnerReceipt, MaybePruned, Receipt}; #[cfg(feature = "prove")] -use risc0_zkvm::sha::Digestible; +use risc0_zkvm::ProverOpts; #[cfg(feature = "prove")] mod prove; pub mod receipt; pub mod receipt_claim; +#[cfg(feature = "prove")] mod seal_to_json; pub mod verify; @@ -39,15 +40,18 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result bool { - std::env::var("RISC0_DEV_MODE") - .ok() - .map(|x| x.to_lowercase()) - .filter(|x| x == "1" || x == "true" || x == "yes") - .is_some() -} +// // Returns `true` if the dev mode environment variable is enabled. +// fn is_dev_mode() -> bool { +// std::env::var("RISC0_DEV_MODE") +// .ok() +// .map(|x| x.to_lowercase()) +// .filter(|x| x == "1" || x == "true" || x == "yes") +// .is_some() +// } #[cfg(test)] #[allow(missing_docs)] #[path = "../tests/common/mod.rs"] diff --git a/crates/broker/src/provers/default.rs b/crates/broker/src/provers/default.rs index a657e9976..eadbece17 100644 --- a/crates/broker/src/provers/default.rs +++ b/crates/broker/src/provers/default.rs @@ -455,7 +455,7 @@ mod tests { use boundless_test_utils::guests::{ECHO_ELF, ECHO_ID}; use tokio::test; - use risc0_zkvm::{sha::Digest, Groth16Seal}; + use risc0_zkvm::sha::Digest; #[test] async fn test_upload_input_and_image() { diff --git a/crates/broker/src/storage.rs b/crates/broker/src/storage.rs index b6bac2011..b578bdeb0 100644 --- a/crates/broker/src/storage.rs +++ b/crates/broker/src/storage.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use crate::{config::ConfigLock, errors::CodedError, is_dev_mode}; +use crate::{config::ConfigLock, errors::CodedError}; use alloy::primitives::bytes::Buf; use anyhow::{Context, Result}; use async_trait::async_trait; diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 0e665bf96..f110cb0f9 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -839,6 +839,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -871,6 +872,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -929,6 +931,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -1013,6 +1016,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -1028,6 +1032,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -1091,6 +1096,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1144,6 +1150,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1152,6 +1159,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -2032,6 +2045,54 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", + "bytemuck", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "derive_more", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2077,6 +2138,18 @@ name = "bonsai-sdk" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -2134,6 +2207,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "bytemuck", "chrono", "clap", @@ -2178,6 +2252,7 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", + "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", @@ -2216,7 +2291,8 @@ dependencies = [ "aws-config", "aws-sdk-s3", "bincode", - "bonsai-sdk", + "blake3_groth16", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-test-utils", @@ -2229,6 +2305,8 @@ dependencies = [ "http-cache-reqwest", "moka", "notify", + "num-bigint 0.4.6", + "num-traits", "rand 0.9.2", "requestor-lists", "reqwest", @@ -2594,6 +2672,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2753,6 +2837,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -6855,6 +6948,7 @@ dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index 893702c56..bb4fe0911 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -839,6 +839,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -871,6 +872,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -929,6 +931,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -1013,6 +1016,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -1028,6 +1032,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -1091,6 +1096,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1144,6 +1150,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1152,6 +1159,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -2032,6 +2045,54 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", + "bytemuck", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "derive_more", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2077,6 +2138,18 @@ name = "bonsai-sdk" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -2134,6 +2207,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "bytemuck", "chrono", "clap", @@ -2178,6 +2252,7 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", + "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", @@ -2216,7 +2291,8 @@ dependencies = [ "aws-config", "aws-sdk-s3", "bincode", - "bonsai-sdk", + "blake3_groth16", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-test-utils", @@ -2229,6 +2305,8 @@ dependencies = [ "http-cache-reqwest", "moka", "notify", + "num-bigint 0.4.6", + "num-traits", "rand 0.9.2", "requestor-lists", "reqwest", @@ -2594,6 +2672,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2753,6 +2837,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -6853,6 +6946,7 @@ dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 876899f63..3281d9159 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -2076,6 +2076,41 @@ dependencies = [ "constant_time_eq", ] +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", + "bytemuck", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "derive_more", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2116,6 +2151,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.16", +] + [[package]] name = "bonsai-sdk" version = "1.4.1" @@ -2154,7 +2202,7 @@ dependencies = [ [[package]] name = "boundless-assessor" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -2167,7 +2215,7 @@ dependencies = [ [[package]] name = "boundless-market" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy", "alloy-chains", @@ -2177,6 +2225,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "bytemuck", "chrono", "clap", @@ -2210,7 +2259,7 @@ dependencies = [ [[package]] name = "boundless-test-utils" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy", "alloy-primitives", @@ -2231,7 +2280,7 @@ dependencies = [ [[package]] name = "boundless-zkc" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy", "alloy-chains", @@ -2249,7 +2298,7 @@ dependencies = [ [[package]] name = "broker" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy", "alloy-chains", @@ -2260,7 +2309,8 @@ dependencies = [ "aws-config", "aws-sdk-s3", "bincode", - "bonsai-sdk", + "blake3_groth16", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-test-utils", @@ -2286,7 +2336,6 @@ dependencies = [ "serde", "serde_json", "sha2", - "shrink_bitvm2", "sqlx", "tempfile", "thiserror 2.0.16", @@ -3978,7 +4027,7 @@ dependencies = [ [[package]] name = "guest-assessor" -version = "0.15.0" +version = "1.1.0" dependencies = [ "hex", "risc0-build", @@ -3996,7 +4045,7 @@ dependencies = [ [[package]] name = "guest-util" -version = "0.15.0" +version = "1.1.0" dependencies = [ "hex", "risc0-build", @@ -6425,7 +6474,7 @@ checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "requestor-lists" -version = "0.15.0" +version = "1.1.0" dependencies = [ "alloy", "reqwest", @@ -6932,6 +6981,7 @@ dependencies = [ "addr2line", "anyhow", "bincode", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -7655,34 +7705,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" -[[package]] -name = "shrink_bitvm2" -version = "0.1.0" -source = "git+https://github.com/ec2/shrink_bitvm2.git?rev=e3933355820e468a217387dd11fa0a1a0fc309ed#e3933355820e468a217387dd11fa0a1a0fc309ed" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "blake3", - "circom-witnesscalc", - "crypto-bigint 0.5.2", - "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-circuit-recursion", - "risc0-groth16", - "risc0-zkp", - "risc0-zkvm", - "serde", - "serde_json", - "sha2", - "tempfile", - "tracing", - "wtns-file", -] - [[package]] name = "signal-hook-registry" version = "1.4.6" diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index 46835bf84..ede6327d6 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -839,6 +839,7 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", + "rayon", "sha2", ] @@ -871,6 +872,7 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", + "rayon", "zeroize", ] @@ -929,6 +931,7 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", + "rayon", "zeroize", ] @@ -1013,6 +1016,7 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", + "rayon", ] [[package]] @@ -1028,6 +1032,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", + "rayon", ] [[package]] @@ -1091,6 +1096,7 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", + "rayon", ] [[package]] @@ -1144,6 +1150,7 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", + "rayon", ] [[package]] @@ -1152,6 +1159,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -2032,6 +2045,54 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "blake3_groth16" +version = "1.1.0" +dependencies = [ + "anyhow", + "ark-bn254", + "ark-ff 0.5.0", + "ark-groth16", + "ark-serialize 0.5.0", + "bincode", + "blake3", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", + "borsh", + "bytemuck", + "circom-witnesscalc", + "crypto-bigint 0.5.2", + "derive_more", + "hex", + "num-bigint 0.4.6", + "num-traits", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-core", + "risc0-groth16", + "risc0-zkp", + "risc0-zkvm", + "serde", + "serde_json", + "sha2", + "tempfile", + "tokio", + "tracing", + "wtns-file", +] + [[package]] name = "block" version = "0.1.6" @@ -2077,6 +2138,18 @@ name = "bonsai-sdk" version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" +dependencies = [ + "duplicate", + "maybe-async", + "reqwest", + "serde", + "thiserror 2.0.17", +] + +[[package]] +name = "bonsai-sdk" +version = "1.4.1" +source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" dependencies = [ "duplicate", "maybe-async", @@ -2134,6 +2207,7 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3_groth16", "bytemuck", "chrono", "clap", @@ -2178,6 +2252,7 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", + "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", @@ -2216,7 +2291,8 @@ dependencies = [ "aws-config", "aws-sdk-s3", "bincode", - "bonsai-sdk", + "blake3_groth16", + "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "boundless-assessor", "boundless-market", "boundless-test-utils", @@ -2229,6 +2305,8 @@ dependencies = [ "http-cache-reqwest", "moka", "notify", + "num-bigint 0.4.6", + "num-traits", "rand 0.9.2", "requestor-lists", "reqwest", @@ -2594,6 +2672,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2753,6 +2837,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +dependencies = [ + "getrandom 0.2.16", + "subtle", +] + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -6853,7 +6946,7 @@ dependencies = [ "addr2line 0.24.2", "anyhow", "bincode", - "bonsai-sdk", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", From e7e88ad979a3dea3d0a586f019f8afdfb06983ec Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 14 Nov 2025 15:11:43 -0500 Subject: [PATCH 45/86] make prove feature not default for blake3_groth16 --- Cargo.lock | 1 - blake3_groth16/Cargo.toml | 2 +- crates/boundless-cli/Cargo.toml | 2 +- xtask/Cargo.toml | 10 +++------- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c5da050b9..da42ba4a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2793,7 +2793,6 @@ dependencies = [ "sqlx", "tabled", "tempfile", - "test-log", "tokio", "tokio-test", "toml 0.8.23", diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 652bf79e7..b1847f3cd 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -6,7 +6,7 @@ homepage.workspace = true repository.workspace = true [features] -default = ["prove"] +default = [] prove = ["risc0-zkvm/prove"] cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] diff --git a/crates/boundless-cli/Cargo.toml b/crates/boundless-cli/Cargo.toml index 2f48a5ef7..710eb5940 100644 --- a/crates/boundless-cli/Cargo.toml +++ b/crates/boundless-cli/Cargo.toml @@ -75,7 +75,7 @@ sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls" tempfile = { workspace = true } tokio-test = "0.4" tracing-test = { workspace = true } -test-log = { workspace = true } + [features] # Enables the prove feature on risc0-zkvm to build the prover directly into this CLI. prove = ["risc0-zkvm/prove", "blake3_groth16/prove"] diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index c64335fe4..9fa6a9e1f 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -6,26 +6,22 @@ homepage.workspace = true repository.workspace = true [dependencies] -blake3_groth16 = { path = "../blake3_groth16" } +blake3_groth16 = { path = "../blake3_groth16", features = ["prove"] } boundless-market = { path = "../crates/boundless-market" } clap = { version = "4.5", features = ["derive", "env"] } guest-util = { workspace = true } hex = { workspace = true } rlimit = "0.10.2" -risc0-groth16-sys = { workspace = true, optional = true, features = [ - "cuda", - "setup", -] } +risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } risc0-zkvm = { workspace = true, features = ["prove"] } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" memmap2 = { version = "0.9", optional = true } regex = "1" -# risc0-binfmt = { workspace = true } risc0-circuit-recursion = { workspace = true } tokio = { workspace = true } [features] default = [] -cuda = ["dep:risc0-groth16-sys"] +cuda = ["dep:risc0-groth16-sys", "blake3_groth16/cuda"] From 13988d3f9d2db80f0fc64f955a6b038d8885a80f Mon Sep 17 00:00:00 2001 From: Angelo Capossele Date: Fri, 14 Nov 2025 20:17:24 +0000 Subject: [PATCH 46/86] Replace Selector with SelectorExt (#1325) --- .../src/commands/requestor/submit_offer.rs | 12 ++++++++---- crates/boundless-cli/src/lib.rs | 5 ++--- crates/boundless-market/src/contracts/mod.rs | 8 ++++++-- crates/boundless-market/src/request_builder/mod.rs | 5 ++--- crates/boundless-market/src/selector.rs | 2 +- crates/broker/src/order_picker.rs | 12 ++++++++---- crates/guest/assessor/assessor-guest/Cargo.lock | 2 ++ 7 files changed, 29 insertions(+), 17 deletions(-) diff --git a/crates/boundless-cli/src/commands/requestor/submit_offer.rs b/crates/boundless-cli/src/commands/requestor/submit_offer.rs index e04fa4a5d..325086221 100644 --- a/crates/boundless-cli/src/commands/requestor/submit_offer.rs +++ b/crates/boundless-cli/src/commands/requestor/submit_offer.rs @@ -15,10 +15,9 @@ use alloy::primitives::{Address, U256}; use anyhow::{anyhow, bail, Context, Result}; use boundless_market::{ - contracts::Selector, input::GuestEnvBuilder, request_builder::{OfferParams as OfferParamsStruct, RequirementParams}, - selector::ProofType, + selector::{ProofType, SelectorExt}, storage::StorageProviderConfig, }; use clap::Args; @@ -170,8 +169,13 @@ impl RequestorSubmitOffer { } } match self.requirements.proof_type { - ProofType::Inclusion => requirements.selector(Selector::set_inclusion_latest() as u32), - ProofType::Groth16 => requirements.selector(Selector::groth16_latest() as u32), + ProofType::Inclusion => { + requirements.selector(SelectorExt::set_inclusion_latest() as u32) + } + ProofType::Groth16 => requirements.selector(SelectorExt::groth16_latest() as u32), + ProofType::Blake3Groth16 => { + requirements.selector(SelectorExt::blake3_groth16_latest() as u32) + } ProofType::Any => &mut requirements, ty => bail!("unsupported proof type provided in proof-type flag: {:?}", ty), }; diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 67d03aaa3..9ede0dd36 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -636,12 +636,11 @@ mod tests { }; use boundless_test_utils::guests::{ECHO_ID, ECHO_PATH}; use boundless_test_utils::market::create_test_ctx; - use risc0_ethereum_contracts::selector::Selector; use std::sync::Arc; async fn setup_proving_request_and_signature( signer: &PrivateKeySigner, - selector: Option, + selector: Option, ) -> (ProofRequest, Signature) { let request = ProofRequest::new( RequestId::new(signer.address(), 0), @@ -672,7 +671,7 @@ mod tests { boundless_market::Client::new(ctx.customer_market.clone(), ctx.set_verifier.clone()); let signer = PrivateKeySigner::random(); let (request, signature) = - setup_proving_request_and_signature(&signer, Some(Selector::groth16_latest())).await; + setup_proving_request_and_signature(&signer, Some(SelectorExt::groth16_latest())).await; let prover: Arc = Arc::new(BrokerDefaultProver::default()); let mut fulfiller = OrderFulfiller::initialize(prover, &client).await.unwrap(); fulfiller.domain = eip712_domain(Address::ZERO, 1); diff --git a/crates/boundless-market/src/contracts/mod.rs b/crates/boundless-market/src/contracts/mod.rs index 2d73592e4..627122993 100644 --- a/crates/boundless-market/src/contracts/mod.rs +++ b/crates/boundless-market/src/contracts/mod.rs @@ -566,9 +566,13 @@ impl Requirements { /// to the latest Groth16 selector. #[cfg(not(target_os = "zkvm"))] pub fn with_groth16_proof(self) -> Self { + use crate::selector::SelectorExt; + match crate::util::is_dev_mode() { - true => Self { selector: FixedBytes::from(Selector::FakeReceipt as u32), ..self }, - false => Self { selector: FixedBytes::from(Selector::groth16_latest() as u32), ..self }, + true => Self { selector: FixedBytes::from(SelectorExt::FakeReceipt as u32), ..self }, + false => { + Self { selector: FixedBytes::from(SelectorExt::groth16_latest() as u32), ..self } + } } } diff --git a/crates/boundless-market/src/request_builder/mod.rs b/crates/boundless-market/src/request_builder/mod.rs index cdbeb2ccd..9da7de30b 100644 --- a/crates/boundless-market/src/request_builder/mod.rs +++ b/crates/boundless-market/src/request_builder/mod.rs @@ -24,7 +24,6 @@ use alloy::{ providers::{DynProvider, Provider}, }; use derive_builder::Builder; -use risc0_ethereum_contracts::selector::Selector; use risc0_zkvm::{Digest, Journal}; use url::Url; @@ -548,8 +547,8 @@ impl RequestParams { pub fn with_groth16_proof(self) -> Self { let mut requirements = self.requirements; requirements.selector = match crate::util::is_dev_mode() { - true => Some((Selector::FakeReceipt as u32).into()), - false => Some((Selector::groth16_latest() as u32).into()), + true => Some((SelectorExt::FakeReceipt as u32).into()), + false => Some((SelectorExt::groth16_latest() as u32).into()), }; Self { requirements, ..self } } diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index f37fa8375..cf913f71d 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -103,7 +103,7 @@ impl SelectorExt { } /// Get the latest set verifier selector. - pub fn set_verifier_latest() -> SelectorExt { + pub fn set_inclusion_latest() -> SelectorExt { SelectorExt::SetVerifierV0_9 } diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 965c123d6..f839375c7 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -1533,10 +1533,13 @@ pub(crate) mod tests { signers::local::PrivateKeySigner, }; use async_trait::async_trait; - use boundless_market::contracts::{ - Callback, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, - }; use boundless_market::storage::{MockStorageProvider, StorageProvider}; + use boundless_market::{ + contracts::{ + Callback, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, + }, + selector::SelectorExt, + }; use boundless_test_utils::{ guests::{ASSESSOR_GUEST_ID, ASSESSOR_GUEST_PATH, ECHO_ELF, ECHO_ID, LOOP_ELF, LOOP_ID}, market::{deploy_boundless_market, deploy_hit_points}, @@ -1943,7 +1946,8 @@ pub(crate) mod tests { .await; // set a Groth16 selector - order.request.requirements.selector = FixedBytes::from(Selector::groth16_latest() as u32); + order.request.requirements.selector = + FixedBytes::from(SelectorExt::groth16_latest() as u32); let _request_id = ctx.boundless_market.submit_request(&order.request, &ctx.signer(0)).await.unwrap(); diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index 1a58b2c6b..863c13cc0 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -1959,6 +1959,7 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "bytemuck", "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", @@ -1967,6 +1968,7 @@ dependencies = [ "num-traits", "risc0-binfmt", "risc0-circuit-recursion", + "risc0-core", "risc0-groth16", "risc0-zkp", "risc0-zkvm", From 7786b76285fb26370cc85d45f26709142ea9ed19 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 21:27:10 +0000 Subject: [PATCH 47/86] fixes --- blake3_groth16/Cargo.toml | 15 ++++++++++----- crates/boundless-market/build.rs | 4 ++-- crates/boundless-market/src/contracts/bytecode.rs | 2 +- crates/guest/assessor/assessor-guest/Cargo.lock | 6 +++--- crates/test-utils/src/verifier.rs | 13 ++++++------- xtask/Cargo.toml | 13 ++++++++----- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index b1847f3cd..03d07a448 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -1,14 +1,19 @@ [package] name = "blake3_groth16" -version.workspace = true -edition.workspace = true -homepage.workspace = true -repository.workspace = true +version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [features] default = [] prove = ["risc0-zkvm/prove"] -cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] +cuda = [ + "prove", + "risc0-zkvm/cuda", + "risc0-groth16/cuda", + "dep:risc0-groth16-sys", +] [dependencies] anyhow.workspace = true diff --git a/crates/boundless-market/build.rs b/crates/boundless-market/build.rs index 18d8eef93..49c7ec3a9 100644 --- a/crates/boundless-market/build.rs +++ b/crates/boundless-market/build.rs @@ -33,7 +33,7 @@ const ARTIFACT_TARGET_CONTRACTS: [&str; 9] = [ "ERC1967Proxy", "RiscZeroVerifierRouter", "RiscZeroGroth16Verifier", - "RiscZeroBlake3Groth16Verifier", + "Blake3Groth16Verifier", "MockCallback", ]; @@ -267,7 +267,7 @@ fn get_interfaces(contract: &str) -> &str { "RiscZeroGroth16Verifier" => { r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# } - "RiscZeroBlake3Groth16Verifier" => { + "Blake3Groth16Verifier" => { r#"constructor(bytes32 control_root, bytes32 bn254_control_id) {}"# } "MockCallback" => { diff --git a/crates/boundless-market/src/contracts/bytecode.rs b/crates/boundless-market/src/contracts/bytecode.rs index 1ea750f94..c4962a512 100644 --- a/crates/boundless-market/src/contracts/bytecode.rs +++ b/crates/boundless-market/src/contracts/bytecode.rs @@ -53,7 +53,7 @@ alloy::sol! { alloy::sol! { #[sol(rpc, bytecode = "6101808060405234610a525760408161159380380380916100208285610a56565b833981010312610a5257805160209182015191600882811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff169083901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000161780821c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16911b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b176001600160801b031981811660a052608091821b16905260c08290526040517f72697363302e47726f74683136526563656970745665726966696572506172618152656d657465727360d01b602082810191909152905f9060269060025afa156108de575f5191600881811c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1691901b7fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff001617601081811c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1691901b7fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff00001617602081811c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1691901b7fffffffff00000000ffffffff00000000ffffffff00000000ffffffff000000001617604081811c77ffffffffffffffff0000000000000000ffffffffffffffff1691901b7fffffffffffffffff0000000000000000ffffffffffffffff00000000000000001617608081811c91901b17915f610120526060610120526040516103106101205182610a56565b6002815261012051601f190161010081905236602083013760205f604051828101907f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459382527f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b160408201526040815261038c6101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f516103b282610a8d565b5260205f604051828101907f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a282527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a16040820152604081526104176101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f5161043d82610a9a565b5260205f601a6040517f72697363305f67726f746831362e566572696679696e674b6579000000000000815260025afa156108de575f519260205f604051828101907f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c782527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026040820152604081526104d96101205182610a56565b604051918291518091835e8101838152039060025afa156108de575f519460205f604051828101907f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db82527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d24460408201527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a610120518201527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296080820152608081526105a760a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519360205f604051828101907f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c282527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60408201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b610120518201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60808201526080815261067560a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f604051828101907f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca82527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d60408201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b610120518201527f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f60808201526080815261074360a082610a56565b604051918291518091835e8101838152039060025afa156108de575f519660205f601d6040517f72697363305f67726f746831362e566572696679696e674b65792e4943000000815260025afa156108de575f80516101405260206101605297885b8751808b1015610947575f19810190808211610933578b90035f190190811161093357885181101561091f57610160519060051b89010151604051916107ee6101205184610a56565b60028352610160518301916101005136843761080984610a8d565b5261081383610a9a565b526040516108246101605182610a56565b5f8152601f196101605101366101605183013782519161ffff831161090757604080516101405161016051820152945185939291840191905f905b8082106108e95750505092816108ab94600294935180926101605101825e019061ffff60f01b9061ff0060ff8260081c169160081b161760f01b16815203601d19810184520182610a56565b5f60405191805180916101605101845e820191818352806101605193039060025afa156108de5760015f519901986107a5565b6040513d5f823e3d90fd5b8251845261016051889650938401939092019160019091019061085f565b826306dfcc6560e41b5f52601060045260245260445ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b505f92918b8a60405196610160518801958652604088015261012051870152608086015260a085015260c0840152600560f81b60e084015260c2835261098e60e284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f91825190604051946101605186019384526040860152610120518501526080840152600360f81b60a0840152608283526109ea60a284610a56565b60405192518091845e820191818352806101605193039060025afa156108de575f516001600160e01b03191660e052604051610ae89081610aab8239608051816106a6015260a05181610661015260c05181610290015260e05181818160ae01526101410152f35b5f80fd5b601f909101601f19168101906001600160401b03821190821017610a7957604052565b634e487b7160e01b5f52604160045260245ffd5b80511561091f5760200190565b80516001101561091f576040019056fe60806040526004361015610011575f80fd5b5f3560e01c8063053c238d146100945780631599ead51461008f578063258038e21461008a57806343753b4d146100855780638989fa2e146100805780639181e4b11461007b578063ab750e75146100765763ffa1ad7414610071575f80fd5b6107c1565b6106d6565b610691565b61064c565b6102ce565b610279565b6100db565b346100d7575f3660031901126100d75763ffffffff60e01b7f00000000000000000000000000000000000000000000000000000000000000001660805260206080f35b5f80fd5b346100d75760203660031901126100d7576004356001600160401b0381116100d75780360360406003198201126100d757600482013590602219018112156100d75781016004810135906001600160401b0382116100d75760240181360381136100d7577f000000000000000000000000000000000000000000000000000000000000000061018361017661017085856108ba565b906108e5565b6001600160e01b03191690565b6001600160e01b031982160361024457506101a4826020936101ac936108c8565b810190610962565b80516101e66040848401519301519460246101c6866107b1565b91013581526040516343753b4d60e01b8152958694859460048601610a53565b0381305afa90811561023f575f91610210575b501561020157005b63439cc0cd60e01b5f5260045ffd5b610232915060203d602011610238575b61022a8183610790565b8101906109ed565b5f6101f9565b503d610220565b610ad0565b61025461017084610276946108ba565b632e2ce35360e21b5f526001600160e01b031990811660045216602452604490565b5ffd5b346100d7575f3660031901126100d75760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b906004916044116100d757565b9060c491610104116100d757565b346100d7576101203660031901126100d7576102e9366102b3565b3660c4116100d7576102fa366102c0565b36610124116100d75760405190610380820160405261010435917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001831015610644576020610360927f0ff355a5875037619a0318451398c44bc42f79fb95f1b1adc3561b9b6df6247f947f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478360808601987f0316ab0ff634feed16a5261bda1f20694714b67d7d0c3fcf418b672c00e9459387526103de828801947f2c5f01f3e99fbf359c38f24b9dc5762e32936a7ec54c5b9870168d1016ac71b186528861082e565b80358a52013581030660a085015260443560c085015260643560e085015260843561010085015260a4356101208501527f245229d9b076b3c0e8a4d70bde8c1cccffa08a9fae7557b165b3b0dbd653e2c76101408501527f253ec85988dbb84e46e94b5efa3373b47a000b4ac6c86b2d4b798d274a1823026101608501527f07090a82e8fabbd39299be24705b92cf208ee8b3487f6f2b39ff27978a29a1db6101808501527f2424bcc1f60a5472685fd50705b2809626e170120acaf441e133a2bd5e61d2446101a08501527f0ae1135cffdaf227c5dc266740607aa930bc3bd92ddc2b135086d9da2dfd3e2a6101c08501527f2b86859fd3d55c9d150fb3f0aeba798826493dd73d357ab0f9fdaced9fc818296101e08501528351610200850152516102208401527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26102408401527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6102608401527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6102808401527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6102a084015280356102c084015201356102e08201527f2988e03616b72e0bb3e8f884fe55ec966c49beeb9e5abbdb17b015d8cfadcfca6103008201527f263da10954454edd5cc89535bcbc26c9ab06ba5cfc65026f0316d37a1fa5070d6103208201527f2fa31ab375f6b90e4a9938b0664db57a2c21e15a22099295659571fdb0e8e86b61034082015201526020816103008160086107cf195a01fa9051165f5260205ff35b5f805260205ff35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d7575f3660031901126100d7576040517f00000000000000000000000000000000000000000000000000000000000000006001600160801b0319168152602090f35b346100d75760603660031901126100d7576004356001600160401b0381116100d757366023820112156100d75780600401356001600160401b0381116100d757369101602401116100d75760405162461bcd60e51b815260206004820152601360248201527255736520766572696679496e7465677269747960681b6044820152606490fd5b634e487b7160e01b5f52604160045260245ffd5b606081019081106001600160401b0382111761078b57604052565b61075c565b90601f801991011681019081106001600160401b0382111761078b57604052565b906107bf6040519283610790565b565b346100d7575f3660031901126100d757604051604081018181106001600160401b0382111761078b57604052600581526040602082019164302e302e3160d81b83528151928391602083525180918160208501528484015e5f828201840152601f01601f19168101030190f35b604051917f2aa1911949d7e230c84f544300a5353a3c106d5f0c8deb452ace6fe7c3fbf3a283527f1a74a93686754fe6cc357bbdb43aa63587ddb811b64cf1cf1d76a2c12531c1a160208401526040830190815260408360608160076107cf195a01fa1561064457815190526020810151606083015260409160809060066107cf195a01fa1561064457565b906004116100d75790600490565b90929192836004116100d75783116100d757600401916003190190565b356001600160e01b0319811692919060048210610900575050565b6001600160e01b031960049290920360031b82901b16169150565b9080601f830112156100d75760405191610936604084610790565b8290604081019283116100d757905b8282106109525750505090565b8135815260209182019101610945565b610100818303126100d7576040519161097a83610770565b610984818361091b565b835280605f830112156100d75760409182516109a08482610790565b8060c08301928484116100d75785809101915b8483106109d35750505060208501526109cc919061091b565b9082015290565b6020906109e0878561091b565b81520191019085906109b3565b908160209103126100d7575180151581036100d75790565b905f905b60028210610a1657505050565b6020806001928551815201930191019091610a09565b905f905b60018210610a3d57505050565b6020806001928551815201930191019091610a30565b919493929094610a6883610120810197610a05565b5f604084015b60028210610a965750505081610a8f6101009260c06107bf96950190610a05565b0190610a2c565b82515f90825b60028310610aba575050506020604060019201930191019091610a6e565b6020806001928451815201920192019190610a9c565b6040513d5f823e3d90fdfea164736f6c634300081a000a")] - contract RiscZeroBlake3Groth16Verifier { + contract Blake3Groth16Verifier { constructor(bytes32 control_root, bytes32 bn254_control_id) {} } } diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index 863c13cc0..c53b253d8 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "blake3_groth16" -version = "1.1.0" +version = "1.2.0" dependencies = [ "anyhow", "ark-bn254", @@ -2072,7 +2072,7 @@ dependencies = [ [[package]] name = "boundless-assessor" -version = "1.1.0" +version = "1.2.0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -2085,7 +2085,7 @@ dependencies = [ [[package]] name = "boundless-market" -version = "1.1.0" +version = "1.2.0" dependencies = [ "alloy", "alloy-chains", diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index 662ad067f..4fa156dd9 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -19,8 +19,8 @@ use alloy::{ use anyhow::{Context, Result}; use boundless_market::contracts::bytecode::RiscZeroVerifierRouter::RiscZeroVerifierRouterInstance; use boundless_market::contracts::bytecode::{ - RiscZeroBlake3Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, - RiscZeroSetVerifier, RiscZeroVerifierRouter, + Blake3Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, RiscZeroSetVerifier, + RiscZeroVerifierRouter, }; use hex::FromHex; use risc0_aggregation::SetInclusionReceiptVerifierParameters; @@ -49,16 +49,15 @@ pub async fn deploy_groth16_verifier( Ok(*instance.address()) } -/// Deploy a RiscZeroBlake3Groth16Verifier contract +/// Deploy a Blake3Groth16Verifier contract pub async fn deploy_blake3_groth16_verifier( deployer_provider: P, control_root: FixedBytes<32>, bn254_control_id: FixedBytes<32>, ) -> Result
{ - let instance = - RiscZeroBlake3Groth16Verifier::deploy(deployer_provider, control_root, bn254_control_id) - .await - .context("failed to deploy RiscZeroBlake3Groth16Verifier")?; + let instance = Blake3Groth16Verifier::deploy(deployer_provider, control_root, bn254_control_id) + .await + .context("failed to deploy Blake3Groth16Verifier")?; Ok(*instance.address()) } diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 9fa6a9e1f..c738a3df0 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -1,9 +1,9 @@ [package] name = "xtask" -version.workspace = true -edition.workspace = true -homepage.workspace = true -repository.workspace = true +version = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +repository = { workspace = true } [dependencies] blake3_groth16 = { path = "../blake3_groth16", features = ["prove"] } @@ -12,7 +12,10 @@ clap = { version = "4.5", features = ["derive", "env"] } guest-util = { workspace = true } hex = { workspace = true } rlimit = "0.10.2" -risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } +risc0-groth16-sys = { workspace = true, optional = true, features = [ + "cuda", + "setup", +] } risc0-zkvm = { workspace = true, features = ["prove"] } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } From 46bc63d441241c1546d53358207d7a1e49ad8930 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 21:55:46 +0000 Subject: [PATCH 48/86] fix workspace in cargo --- blake3_groth16/Cargo.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 03d07a448..c56085a89 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -16,20 +16,20 @@ cuda = [ ] [dependencies] -anyhow.workspace = true +anyhow = { workspace = true } ark-bn254 = "0.5.0" ark-ff = "0.5.0" ark-groth16 = { version = "0.5.0" } ark-serialize = "0.5.0" -bincode.workspace = true +bincode = { workspace = true } blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } borsh = { workspace = true, features = ["derive"] } bytemuck = { workspace = true } circom-witnesscalc = { version = "0.2.1" } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } -derive_more.workspace = true -hex.workspace = true +derive_more = { workspace = true } +hex = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" risc0-binfmt = { version = "3.0.2", default-features = false } @@ -39,12 +39,12 @@ risc0-groth16 = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true } risc0-zkp = { workspace = true } risc0-zkvm = { workspace = true, features = ["bonsai"] } -serde.workspace = true -serde_json.workspace = true -sha2.workspace = true -tempfile.workspace = true +serde = { workspace = true } +serde_json = { workspace = true } +sha2 = { workspace = true } +tempfile = { workspace = true } tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } -tracing.workspace = true +tracing = { workspace = true } wtns-file = { version = "0.1.5" } [dev-dependencies] From b9ba480dc82070d9ca38c68b23dfd784a2fc32dd Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 22:04:33 +0000 Subject: [PATCH 49/86] fmt --- .github/workflows/documentation.yml | 3 +++ .github/workflows/main.yml | 6 ++++++ contracts/scripts/Deploy.s.sol | 5 ++--- .../blake3-groth16/Blake3Groth16Verifier.sol | 2 +- foundry.toml | 17 ++++++++++++++--- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 99f761f79..8f7e7a8ae 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -37,6 +37,9 @@ jobs: - name: Install dependencies run: bun install + - name: Install protobuf-compiler + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 009b4422a..4ebe5b5f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -99,6 +99,9 @@ jobs: crate: cargo-sort version: "1.0" + - name: Install protobuf-compiler + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + - name: cargo Sort run: cargo sort --workspace --check @@ -171,6 +174,9 @@ jobs: with: version: ${{ env.FOUNDRY_VERSION }} + - name: Install protobuf-compiler + run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + - name: check order-stream run: cargo check --locked -p order-stream --bin order_stream diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 54e4f3889..19b90214e 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -176,7 +176,7 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { // Check for uncommitted changes warning checkUncommittedChangesWarning("Deployment"); } - + /// @notice Deploy either a test or fully verifying `Blake3Groth16Verifier` depending on `devMode()`. function deployBlake3Verifier() internal returns (IRiscZeroVerifier) { if (devMode()) { @@ -185,8 +185,7 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { console2.log("Deployed RiscZeroMockVerifier to", address(_verifier)); return _verifier; } else { - IRiscZeroVerifier _verifier = - new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + IRiscZeroVerifier _verifier = new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); console2.log("Deployed Blake3Groth16Verifier to", address(_verifier)); return _verifier; } diff --git a/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol b/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol index c2bada8fd..63427ea6e 100644 --- a/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol +++ b/contracts/src/blake3-groth16/Blake3Groth16Verifier.sol @@ -162,4 +162,4 @@ contract Blake3Groth16Verifier is IRiscZeroVerifier, IRiscZeroSelectable, Groth1 revert VerificationFailed(); } } -} \ No newline at end of file +} diff --git a/foundry.toml b/foundry.toml index 79fd82daf..639c741c5 100644 --- a/foundry.toml +++ b/foundry.toml @@ -3,7 +3,11 @@ src = "./contracts/src" # OZ Upgrades requires the out dir to be `./out`, or for `FOUNDRY_OUT` to be set # https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades/blob/cfd861bc18ef4737e82eae6ec75304e27af699ef/src/internal/Utils.sol#L139-L147 out = "./out" -fs_permissions = [{ access = "read", path = "./out" }, { access = "read", path = "./contracts/out" }, { access = "read-write", path = "./contracts/deployment.toml" }] +fs_permissions = [ + { access = "read", path = "./out" }, + { access = "read", path = "./contracts/out" }, + { access = "read-write", path = "./contracts/deployment.toml" }, +] libs = ["./lib"] script = "./contracts/scripts" test = "./contracts/test" @@ -31,6 +35,7 @@ isolate = true line_length = 120 tab_width = 4 quote_style = "double" +ignore = ["contracts/src/blake3-groth16/Groth16Verifier.sol"] [lint] exclude_lints = ["asm-keccak256", "incorrect-shift"] @@ -48,7 +53,11 @@ isolate = true [profile.povw-deploy] src = "./contracts/src" out = "./out" -fs_permissions = [{ access = "read", path = "./out" }, { access = "read", path = "./contracts/out" }, { access = "read-write", path = "./contracts/deployment.toml" }] +fs_permissions = [ + { access = "read", path = "./out" }, + { access = "read", path = "./contracts/out" }, + { access = "read-write", path = "./contracts/deployment.toml" }, +] libs = ["./lib"] script = "./contracts/scripts" test = "./contracts/test" @@ -76,4 +85,6 @@ ffi = true ast = true build_info = true extra_output = ["storageLayout"] -fs_permissions = [{ access = "read", path = "contracts/reference-contract/out" }] +fs_permissions = [ + { access = "read", path = "contracts/reference-contract/out" }, +] From 1bcce74f9731c20dec413552805e981a98240a0e Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 22:31:36 +0000 Subject: [PATCH 50/86] sort and protobuf-compiler --- .github/workflows/contracts.yml | 3 +++ .github/workflows/documentation.yml | 3 --- .github/workflows/main.yml | 6 ++++-- bento/Cargo.toml | 2 +- xtask/Cargo.toml | 18 +++++++++--------- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 921a7bbb2..8f0142ce2 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -203,6 +203,9 @@ jobs: - name: forge build run: forge build + - name: Install protobuf-compiler + run: sudo apt-get install -y protobuf-compiler + - name: cargo install boundless-cli run: cargo install boundless-cli --path crates/boundless-cli --locked diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 8f7e7a8ae..99f761f79 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -37,9 +37,6 @@ jobs: - name: Install dependencies run: bun install - - name: Install protobuf-compiler - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler - - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4ebe5b5f4..e8616b5f8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -100,7 +100,7 @@ jobs: version: "1.0" - name: Install protobuf-compiler - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + run: sudo apt-get install -y protobuf-compiler - name: cargo Sort run: cargo sort --workspace --check @@ -175,7 +175,7 @@ jobs: version: ${{ env.FOUNDRY_VERSION }} - name: Install protobuf-compiler - run: sudo apt-get update && sudo apt-get install -y protobuf-compiler + run: sudo apt-get install -y protobuf-compiler - name: check order-stream run: cargo check --locked -p order-stream --bin order_stream @@ -304,6 +304,8 @@ jobs: with: # Building with docs.rs config requires the nightly toolchain. toolchain: nightly-2025-05-09 + - name: Install protobuf-compiler + run: sudo apt-get install -y protobuf-compiler - run: cargo +nightly-2025-05-09 doc -p boundless-market --all-features --no-deps env: RUSTDOCFLAGS: "--cfg docsrs -D warnings" diff --git a/bento/Cargo.toml b/bento/Cargo.toml index e94521e63..40899fa37 100644 --- a/bento/Cargo.toml +++ b/bento/Cargo.toml @@ -21,6 +21,7 @@ anyhow = "1.0.98" aws-sdk-s3 = "1.34" # used for minio for max compatibility bento-client = { path = "crates/bento-client" } bincode = "1.3.3" +blake3_groth16 = { path = "../blake3_groth16", default-features = false } bonsai-sdk = { git = "https://github.com/risc0/risc0", branch = "flaub/shrink-bitvm2", features = [ "non_blocking", "shrink_bitvm2", @@ -38,7 +39,6 @@ sample-guest-common = { path = "crates/sample-guest/common" } sample-guest-methods = { path = "crates/sample-guest/methods" } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -blake3_groth16 = { path = "../blake3_groth16", default-features = false } sqlx = { version = "0.8", default-features = false } taskdb = { path = "crates/taskdb" } tempfile = "3.10" diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index c738a3df0..6a29b4cdd 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -5,26 +5,26 @@ edition = { workspace = true } homepage = { workspace = true } repository = { workspace = true } +[features] +default = [] +cuda = ["dep:risc0-groth16-sys", "blake3_groth16/cuda"] + [dependencies] blake3_groth16 = { path = "../blake3_groth16", features = ["prove"] } boundless-market = { path = "../crates/boundless-market" } clap = { version = "4.5", features = ["derive", "env"] } guest-util = { workspace = true } hex = { workspace = true } -rlimit = "0.10.2" +memmap2 = { version = "0.9", optional = true } +regex = "1" +risc0-circuit-recursion = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true, features = [ "cuda", "setup", ] } risc0-zkvm = { workspace = true, features = ["prove"] } +rlimit = "0.10.2" +tokio = { workspace = true } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" -memmap2 = { version = "0.9", optional = true } -regex = "1" -risc0-circuit-recursion = { workspace = true } -tokio = { workspace = true } - -[features] -default = [] -cuda = ["dep:risc0-groth16-sys", "blake3_groth16/cuda"] From 57f7ae24ad280e721017a152c01a390d7ee7e2e6 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 22:46:01 +0000 Subject: [PATCH 51/86] sort --- Cargo.toml | 4 +- blake3_groth16/Cargo.toml | 4 +- crates/bench/Cargo.toml | 4 +- crates/boundless-cli/Cargo.toml | 28 ++-- crates/boundless-market/Cargo.toml | 24 +-- crates/broker/Cargo.toml | 24 +-- crates/distributor/Cargo.toml | 4 +- crates/guest/assessor/Cargo.toml | 10 +- .../guest/assessor/assessor-guest/Cargo.lock | 140 +----------------- crates/guest/util/Cargo.toml | 10 +- crates/lambdas/indexer-api/Cargo.toml | 6 +- crates/order-generator/Cargo.toml | 4 +- crates/povw/Cargo.toml | 47 +++--- crates/test-utils/Cargo.toml | 20 ++- crates/zkc/Cargo.toml | 12 +- documentation/doc-test/Cargo.toml | 8 +- 16 files changed, 115 insertions(+), 234 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b68256136..194759036 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,7 @@ [workspace] resolver = "2" members = [ + "blake3_groth16", "crates/assessor", "crates/bench", "crates/boundless-cli", @@ -18,7 +19,6 @@ members = [ "crates/povw", "crates/requestor-lists", "crates/rewards", - "blake3_groth16", "crates/slasher", "crates/test-utils", "crates/zkc", @@ -33,6 +33,7 @@ homepage = "https://beboundless.xyz/" repository = "https://github.com/boundless-xyz/boundless/" [workspace.dependencies] +blake3_groth16 = { path = "blake3_groth16", default-features = false } boundless-assessor = { version = "1.2.0", path = "crates/assessor" } boundless-cli = { path = "crates/boundless-cli" } boundless-market = { version = "1.2.0", path = "crates/boundless-market" } @@ -44,7 +45,6 @@ distributor = { path = "crates/distributor" } guest-assessor = { path = "crates/guest/assessor" } guest-util = { path = "crates/guest/util" } order-stream = { path = "crates/order-stream" } -blake3_groth16 = { path = "blake3_groth16", default-features = false } requestor-lists = { path = "crates/requestor-lists" } alloy = { version = "1.0", default-features = false } diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index c56085a89..0c5cb61c5 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -7,7 +7,7 @@ repository = { workspace = true } [features] default = [] -prove = ["risc0-zkvm/prove"] +prove = ["risc0-zkvm/prove", "dep:circom-witnesscalc"] cuda = [ "prove", "risc0-zkvm/cuda", @@ -26,7 +26,7 @@ blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } borsh = { workspace = true, features = ["derive"] } bytemuck = { workspace = true } -circom-witnesscalc = { version = "0.2.1" } +circom-witnesscalc = { version = "0.2.1", optional = true } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } derive_more = { workspace = true } hex = { workspace = true } diff --git a/crates/bench/Cargo.toml b/crates/bench/Cargo.toml index c96397e64..a953ca53f 100644 --- a/crates/bench/Cargo.toml +++ b/crates/bench/Cargo.toml @@ -10,6 +10,8 @@ publish = false [package.metadata.release] release = false +[features] + [dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } anyhow = { workspace = true } @@ -35,5 +37,3 @@ url = { workspace = true } boundless-test-utils = { workspace = true } broker = { path = "../broker", features = ["test-utils"] } tracing-test = { workspace = true } - -[features] diff --git a/crates/boundless-cli/Cargo.toml b/crates/boundless-cli/Cargo.toml index 710eb5940..f9fe35f74 100644 --- a/crates/boundless-cli/Cargo.toml +++ b/crates/boundless-cli/Cargo.toml @@ -9,14 +9,24 @@ repository = { workspace = true } license = "Apache-2.0" build = "build.rs" -[build-dependencies] -shadow-rs = "1.1" +[[bin]] +name = "boundless" + +[[bin]] +name = "boundless-ffi" + +[features] +# Enables the prove feature on risc0-zkvm to build the prover directly into this CLI. +prove = ["risc0-zkvm/prove", "blake3_groth16/prove"] +# Enables the cuda feature on risc0-zkvm to build the prover directly into this CLI, with CUDA support. +cuda = ["prove", "risc0-zkvm/cuda", "blake3_groth16/cuda"] [dependencies] alloy = { workspace = true, features = ["full"] } anyhow = { workspace = true } atomicwrites = "0.4.4" bincode = { workspace = true } +blake3_groth16 = { workspace = true } bonsai-sdk = { workspace = true } boundless-assessor = { workspace = true } boundless-market = { workspace = true } @@ -46,7 +56,6 @@ serde = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } shadow-rs = { version = "1.1", default-features = false } -blake3_groth16 = { workspace = true } sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } tabled = "0.15" tokio = { workspace = true, features = ["rt-multi-thread"] } @@ -56,11 +65,8 @@ tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter"] } url = { workspace = true } -[[bin]] -name = "boundless" - -[[bin]] -name = "boundless-ffi" +[build-dependencies] +shadow-rs = "1.1" [dev-dependencies] alloy-node-bindings = { workspace = true } @@ -75,9 +81,3 @@ sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls" tempfile = { workspace = true } tokio-test = "0.4" tracing-test = { workspace = true } - -[features] -# Enables the prove feature on risc0-zkvm to build the prover directly into this CLI. -prove = ["risc0-zkvm/prove", "blake3_groth16/prove"] -# Enables the cuda feature on risc0-zkvm to build the prover directly into this CLI, with CUDA support. -cuda = ["prove", "risc0-zkvm/cuda", "blake3_groth16/cuda"] diff --git a/crates/boundless-market/Cargo.toml b/crates/boundless-market/Cargo.toml index 1dc8dc8e9..f45526761 100644 --- a/crates/boundless-market/Cargo.toml +++ b/crates/boundless-market/Cargo.toml @@ -12,6 +12,10 @@ license = "Apache-2.0" all-features = true rustdoc-args = ["--cfg", "docsrs"] +[features] +default = [] +test-utils = ["dep:risc0-circuit-recursion"] + [dependencies] alloy-chains = { workspace = true } alloy-primitives = { workspace = true } @@ -25,7 +29,6 @@ url = { workspace = true } # Host dependencies [target.'cfg(not(target_os = "zkvm"))'.dependencies] -derive_builder = "0.20.2" alloy = { workspace = true, features = [ "network", "node-bindings", @@ -40,9 +43,12 @@ alloy = { workspace = true, features = [ async-stream = { workspace = true } async-trait = "0.1" aws-sdk-s3 = "1.34" +blake3_groth16 = { workspace = true, default-features = false } bytemuck = { workspace = true } +chrono = { workspace = true } clap = { workspace = true } dashmap = "6" +derive_builder = "0.20.2" futures = "0.3" futures-util = { workspace = true } hex = { workspace = true } @@ -55,24 +61,18 @@ risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-zkvm = { workspace = true, features = ["std", "client"] } rmp-serde = { workspace = true } serde_json = { workspace = true } -blake3_groth16 = { workspace = true, default-features = false } +siwe = { version = "0.6", features = ["serde"] } tempfile = { workspace = true } +time = "0.3" tokio = { workspace = true } tokio-tungstenite = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter"] } -siwe = { version = "0.6", features = ["serde"] } -chrono = { workspace = true } -time = "0.3" utoipa = { workspace = true } -[dev-dependencies] -boundless-test-utils = { workspace = true } -tracing-test = { workspace = true } - [build-dependencies] serde_json = { workspace = true } -[features] -default = [] -test-utils = ["dep:risc0-circuit-recursion"] +[dev-dependencies] +boundless-test-utils = { workspace = true } +tracing-test = { workspace = true } diff --git a/crates/broker/Cargo.toml b/crates/broker/Cargo.toml index 84060400e..045fbc9f6 100644 --- a/crates/broker/Cargo.toml +++ b/crates/broker/Cargo.toml @@ -10,6 +10,11 @@ publish = false [package.metadata.release] release = false +[features] +test-utils = ["dep:boundless-test-utils"] +prove = ["blake3_groth16/prove"] +cuda = ["blake3_groth16/cuda"] + [dependencies] alloy = { workspace = true, features = [ "network", @@ -30,6 +35,7 @@ async-trait = { workspace = true } aws-config = { workspace = true } aws-sdk-s3 = { workspace = true } bincode = { workspace = true } +blake3_groth16 = { workspace = true } bonsai-sdk = { workspace = true } boundless-assessor = { workspace = true } boundless-market = { workspace = true } @@ -43,6 +49,9 @@ hex = { workspace = true } http-cache-reqwest = "0.15.1" moka = { version = "0.12", features = ["future"] } notify = "6.1" + +num-bigint = { version = "0.4", features = ["std"] } +num-traits = "0.2.19" rand = { workspace = true } requestor-lists = { path = "../requestor-lists" } reqwest = { workspace = true } @@ -65,10 +74,6 @@ tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } url = { workspace = true } uuid = { workspace = true } -num-bigint = { version = "0.4", features = ["std"] } -num-traits = "0.2.19" -blake3_groth16 = { workspace = true } - [dev-dependencies] alloy = { workspace = true, features = ["node-bindings"] } aws-smithy-http-client = { version = "1.0", features = ["test-util"] } @@ -81,16 +86,11 @@ httpmock = "0.7" proptest = "1.4" proptest-derive = "0.5" rand = { workspace = true } + +risc0-groth16 = { workspace = true, features = ["prove"] } risc0-zkvm = { workspace = true, default-features = true } serial_test = "3.2" temp-env = { version = "0.3", features = ["async_closure"] } +test-log = { workspace = true } tokio = { workspace = true, features = ["full"] } tracing-test = { workspace = true } - -risc0-groth16 = { workspace = true, features = ["prove"] } -test-log = { workspace = true } - -[features] -test-utils = ["dep:boundless-test-utils"] -prove = ["blake3_groth16/prove"] -cuda = ["blake3_groth16/cuda"] diff --git a/crates/distributor/Cargo.toml b/crates/distributor/Cargo.toml index 8c34dcf41..91a640126 100644 --- a/crates/distributor/Cargo.toml +++ b/crates/distributor/Cargo.toml @@ -10,6 +10,8 @@ publish = false [package.metadata.release] release = false +[features] + [dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } anyhow = { workspace = true } @@ -27,5 +29,3 @@ url = { workspace = true } [dev-dependencies] boundless-test-utils = { workspace = true } tracing-test = { workspace = true } - -[features] diff --git a/crates/guest/assessor/Cargo.toml b/crates/guest/assessor/Cargo.toml index e6edc19f7..27f6e3ca1 100644 --- a/crates/guest/assessor/Cargo.toml +++ b/crates/guest/assessor/Cargo.toml @@ -7,13 +7,13 @@ homepage = { workspace = true } repository = { workspace = true } publish = false -[build-dependencies] -hex = { workspace = true } -risc0-build = { workspace = true, features = ["unstable"] } -risc0-build-ethereum = { workspace = true } - [package.metadata.risc0] methods = ["assessor-guest"] [package.metadata.release] release = false + +[build-dependencies] +hex = { workspace = true } +risc0-build = { workspace = true, features = ["unstable"] } +risc0-build-ethereum = { workspace = true } diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index c53b253d8..dc558432c 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -1441,7 +1441,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ - "bindgen 0.69.5", + "bindgen", "cc", "cmake", "dunce", @@ -1834,26 +1834,6 @@ dependencies = [ "which", ] -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.9.4", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 2.1.1", - "shlex", - "syn 2.0.106", -] - [[package]] name = "bit-set" version = "0.5.3" @@ -1960,7 +1940,6 @@ dependencies = [ "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "bytemuck", - "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", "hex", @@ -2278,35 +2257,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "circom-witnesscalc" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3fb734f91de7e7002678ea3238fddfd4ee7afd33e9ed975176f4a94794a55a" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-serialize 0.5.0", - "bindgen 0.72.1", - "byteorder", - "indicatif", - "libc", - "memmap2", - "num-bigint 0.4.6", - "num-traits", - "prost", - "prost-build", - "rand 0.8.5", - "ruint", - "serde", - "serde_json", - "tempfile", - "thiserror 2.0.16", - "winnow", - "wtns-file", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -2391,19 +2341,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - [[package]] name = "const-hex" version = "1.15.0" @@ -3055,12 +2992,6 @@ dependencies = [ "log", ] -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - [[package]] name = "encoding_rs" version = "0.8.35" @@ -4051,19 +3982,6 @@ dependencies = [ "serde", ] -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", -] - [[package]] name = "io-uring" version = "0.7.10" @@ -4445,15 +4363,6 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "memmap2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" -dependencies = [ - "libc", -] - [[package]] name = "merlin" version = "3.0.0" @@ -4524,12 +4433,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - [[package]] name = "native-tls" version = "0.2.14" @@ -4708,12 +4611,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "nvtx" version = "1.3.0" @@ -5203,26 +5100,6 @@ dependencies = [ "prost-derive", ] -[[package]] -name = "prost-build" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" -dependencies = [ - "heck", - "itertools 0.14.0", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost", - "prost-types", - "regex", - "syn 2.0.106", - "tempfile", -] - [[package]] name = "prost-derive" version = "0.13.5" @@ -5236,15 +5113,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "prost-types" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" -dependencies = [ - "prost", -] - [[package]] name = "puffin" version = "0.19.1" @@ -7299,12 +7167,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - [[package]] name = "unicode-xid" version = "0.2.6" diff --git a/crates/guest/util/Cargo.toml b/crates/guest/util/Cargo.toml index 5fe5050d3..99920f05d 100644 --- a/crates/guest/util/Cargo.toml +++ b/crates/guest/util/Cargo.toml @@ -7,13 +7,13 @@ homepage = { workspace = true } repository = { workspace = true } publish = false -[build-dependencies] -hex = { workspace = true } -risc0-build = { workspace = true } -risc0-build-ethereum = { workspace = true } - [package.metadata.risc0] methods = ["echo", "identity", "loop"] [package.metadata.release] release = false + +[build-dependencies] +hex = { workspace = true } +risc0-build = { workspace = true } +risc0-build-ethereum = { workspace = true } diff --git a/crates/lambdas/indexer-api/Cargo.toml b/crates/lambdas/indexer-api/Cargo.toml index e9b4ff47b..44004da60 100644 --- a/crates/lambdas/indexer-api/Cargo.toml +++ b/crates/lambdas/indexer-api/Cargo.toml @@ -7,13 +7,13 @@ homepage = { workspace = true } repository = { workspace = true } publish = false +[package.metadata.release] +release = false + [[bin]] name = "local-server" path = "src/bin/local-server.rs" -[package.metadata.release] -release = false - [dependencies] # Core dependencies alloy = { workspace = true, default-features = false } diff --git a/crates/order-generator/Cargo.toml b/crates/order-generator/Cargo.toml index 8dff0fd76..eef7b8a60 100644 --- a/crates/order-generator/Cargo.toml +++ b/crates/order-generator/Cargo.toml @@ -10,6 +10,8 @@ publish = false [package.metadata.release] release = false +[features] + [dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } anyhow = { workspace = true } @@ -27,5 +29,3 @@ url = { workspace = true } [dev-dependencies] boundless-test-utils = { workspace = true } tracing-test = { workspace = true } - -[features] diff --git a/crates/povw/Cargo.toml b/crates/povw/Cargo.toml index 4ad06370f..c1e9d069e 100644 --- a/crates/povw/Cargo.toml +++ b/crates/povw/Cargo.toml @@ -7,6 +7,27 @@ homepage = { workspace = true } repository = { workspace = true } publish = false +[package.metadata.risc0] +methods = ["mint-calculator", "log-updater"] + +[package.metadata.release] +release = false + +[features] +default = ["prover"] +host = [ + "signer", + "risc0-steel/host", + "dep:alloy-provider", + "dep:alloy-contract", + "dep:serde_json", + "dep:clap", + "dep:url", +] +prover = ["host", "dep:risc0-zkvm", "dep:risc0-ethereum-contracts", "dep:tokio"] +signer = ["dep:alloy-signer"] +build-guest = ["dep:risc0-build", "dep:risc0-build-ethereum"] + [dependencies] alloy-chains = "0.2" alloy-contract = { version = "1.0", optional = true } @@ -29,6 +50,11 @@ serde = "1" tokio = { workspace = true, features = ["rt-multi-thread"], optional = true } url = { workspace = true, optional = true } +[build-dependencies] +risc0-build = { workspace = true, features = ["unstable"], optional = true } +risc0-build-ethereum = { workspace = true, optional = true } +serde_json = { version = "1.0", optional = true } + [dev-dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } # blst is included directly to mitigate a build issue where blst does not always end up linked. @@ -40,24 +66,3 @@ risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-povw = { workspace = true, features = ["prover"] } risc0-zkvm = { workspace = true, features = ["client", "unstable"] } tokio = { workspace = true, features = ["rt-multi-thread"] } - -[build-dependencies] -risc0-build = { workspace = true, features = ["unstable"], optional = true } -risc0-build-ethereum = { workspace = true, optional = true } -serde_json = { version = "1.0", optional = true } - -[package.metadata.risc0] -methods = ["mint-calculator", "log-updater"] - -[package.metadata.release] -release = false - -[features] -default = ["prover"] -host = ["signer", "risc0-steel/host", "dep:alloy-provider", "dep:alloy-contract", "dep:serde_json", "dep:clap", "dep:url"] -prover = ["host", "dep:risc0-zkvm", "dep:risc0-ethereum-contracts", "dep:tokio"] -signer = ["dep:alloy-signer"] -build-guest = [ - "dep:risc0-build", - "dep:risc0-build-ethereum", -] diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index ecfe1ea56..94543ba88 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -8,6 +8,23 @@ homepage = { workspace = true } repository = { workspace = true } license = "Apache-2.0" +[features] +povw = [ + "dep:boundless-povw", + "dep:bytemuck", + "dep:derive_builder", + "dep:postcard", + "dep:rand", + "dep:risc0-povw", + "dep:risc0-steel", + "dep:wiremock", + "dep:serde", + "dep:serde_json", + "dep:uuid", + "dep:bincode", + "dep:tracing", +] + [dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } alloy-primitives = { workspace = true } @@ -40,6 +57,3 @@ wiremock = { version = "0.6", optional = true } [dev-dependencies] reqwest = { workspace = true, features = ["json"] } - -[features] -povw = ["dep:boundless-povw", "dep:bytemuck", "dep:derive_builder", "dep:postcard", "dep:rand", "dep:risc0-povw", "dep:risc0-steel", "dep:wiremock", "dep:serde", "dep:serde_json", "dep:uuid", "dep:bincode", "dep:tracing"] diff --git a/crates/zkc/Cargo.toml b/crates/zkc/Cargo.toml index d99853314..cc5e4cc59 100644 --- a/crates/zkc/Cargo.toml +++ b/crates/zkc/Cargo.toml @@ -7,6 +7,9 @@ homepage = { workspace = true } repository = { workspace = true } publish = false +[package.metadata.release] +release = false + [dependencies] alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } alloy-chains = "0.2" @@ -18,14 +21,11 @@ serde = { workspace = true } tokio = { workspace = true } tracing = { workspace = true } -[dev-dependencies] -boundless-test-utils = { workspace = true, features = ["povw"] } -rand = "0.9" - [build-dependencies] risc0-build = { workspace = true, features = ["unstable"] } risc0-build-ethereum = { workspace = true } serde_json = { version = "1.0" } -[package.metadata.release] -release = false +[dev-dependencies] +boundless-test-utils = { workspace = true, features = ["povw"] } +rand = "0.9" diff --git a/documentation/doc-test/Cargo.toml b/documentation/doc-test/Cargo.toml index 8f4b2f5e6..ec3db83b0 100644 --- a/documentation/doc-test/Cargo.toml +++ b/documentation/doc-test/Cargo.toml @@ -10,6 +10,10 @@ publish = false [package.metadata.release] release = false +[build-dependencies] +glob = "0.3" +regex = "1.11" + [dev-dependencies] alloy = { workspace = true } alloy-primitives = { workspace = true } @@ -21,7 +25,3 @@ risc0-steel = { git = "https://github.com/boundless-xyz/steel", branch = "releas risc0-zkvm = { workspace = true, default-features = false, features = ["std"] } tracing = { workspace = true } url = { workspace = true } - -[build-dependencies] -glob = "0.3" -regex = "1.11" From 0b00be3bd433aa706040e0c7e7b8251ac43befd9 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 23:16:46 +0000 Subject: [PATCH 52/86] move receipt claim into boundless-market --- .github/workflows/contracts.yml | 3 - .github/workflows/main.yml | 11 +- Cargo.lock | 5 +- Cargo.toml | 1 + blake3_groth16/Cargo.toml | 1 + blake3_groth16/src/lib.rs | 4 +- crates/boundless-market/Cargo.toml | 4 +- .../boundless-market/src/blake3_groth16.rs | 11 +- crates/boundless-market/src/lib.rs | 4 + .../src/request_builder/requirements_layer.rs | 1 + .../guest/assessor/assessor-guest/Cargo.lock | 571 +----------------- 11 files changed, 42 insertions(+), 574 deletions(-) rename blake3_groth16/src/receipt_claim.rs => crates/boundless-market/src/blake3_groth16.rs (92%) diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 8f0142ce2..921a7bbb2 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -203,9 +203,6 @@ jobs: - name: forge build run: forge build - - name: Install protobuf-compiler - run: sudo apt-get install -y protobuf-compiler - - name: cargo install boundless-cli run: cargo install boundless-cli --path crates/boundless-cli --locked diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e8616b5f8..65a6e6a05 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -99,9 +99,6 @@ jobs: crate: cargo-sort version: "1.0" - - name: Install protobuf-compiler - run: sudo apt-get install -y protobuf-compiler - - name: cargo Sort run: cargo sort --workspace --check @@ -174,9 +171,6 @@ jobs: with: version: ${{ env.FOUNDRY_VERSION }} - - name: Install protobuf-compiler - run: sudo apt-get install -y protobuf-compiler - - name: check order-stream run: cargo check --locked -p order-stream --bin order_stream @@ -304,8 +298,6 @@ jobs: with: # Building with docs.rs config requires the nightly toolchain. toolchain: nightly-2025-05-09 - - name: Install protobuf-compiler - run: sudo apt-get install -y protobuf-compiler - run: cargo +nightly-2025-05-09 doc -p boundless-market --all-features --no-deps env: RUSTDOCFLAGS: "--cfg docsrs -D warnings" @@ -380,6 +372,9 @@ jobs: with: version: ${{ env.FOUNDRY_VERSION }} + - name: Install protoc + run: sudo apt install protobuf-compiler -y + - name: Install cargo-sort uses: risc0/cargo-install@b9307573043522ab0d3e3be64a51763b765b52a4 with: diff --git a/Cargo.lock b/Cargo.lock index da42ba4a7..46184fcff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2577,6 +2577,7 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", "bytemuck", "circom-witnesscalc", "crypto-bigint 0.5.2", @@ -2869,7 +2870,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "boundless-test-utils", "bytemuck", "chrono", @@ -2883,6 +2885,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", diff --git a/Cargo.toml b/Cargo.toml index 194759036..69f8de349 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,6 +80,7 @@ postcard = { version = "1.0" } rand = { version = "0.9" } reqwest = "0.12" risc0-aggregation = { version = "0.9.0" } +risc0-binfmt = { version = "3.0.2", default-features = false } risc0-build = { version = "3.0.3", features = ["docker", "unstable"] } risc0-build-ethereum = { version = "3.0.1" } risc0-circuit-recursion = { version = "4.0.2" } diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 0c5cb61c5..785f2969a 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -24,6 +24,7 @@ ark-serialize = "0.5.0" bincode = { workspace = true } blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } +boundless-market = { workspace = true } borsh = { workspace = true, features = ["derive"] } bytemuck = { workspace = true } circom-witnesscalc = { version = "0.2.1", optional = true } diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index e528d15b2..bd960b7a7 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -1,7 +1,6 @@ use anyhow::{Context, Result}; +pub use boundless_market::blake3_groth16::Blake3Groth16ReceiptClaim; pub use receipt::*; -pub use receipt_claim::*; -use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; use risc0_zkvm::{default_prover, sha::Digestible, InnerReceipt, MaybePruned, Receipt}; @@ -11,7 +10,6 @@ use risc0_zkvm::ProverOpts; #[cfg(feature = "prove")] mod prove; pub mod receipt; -pub mod receipt_claim; #[cfg(feature = "prove")] mod seal_to_json; pub mod verify; diff --git a/crates/boundless-market/Cargo.toml b/crates/boundless-market/Cargo.toml index f45526761..0a058cc17 100644 --- a/crates/boundless-market/Cargo.toml +++ b/crates/boundless-market/Cargo.toml @@ -43,7 +43,8 @@ alloy = { workspace = true, features = [ async-stream = { workspace = true } async-trait = "0.1" aws-sdk-s3 = "1.34" -blake3_groth16 = { workspace = true, default-features = false } +blake3 = { version = "1.5.0" } +borsh = { workspace = true, features = ["derive"] } bytemuck = { workspace = true } chrono = { workspace = true } clap = { workspace = true } @@ -56,6 +57,7 @@ httpmock = "0.7" rand = { workspace = true } reqwest = { workspace = true, features = ["json", "multipart"] } risc0-aggregation = { workspace = true } +risc0-binfmt = { workspace = true } risc0-circuit-recursion = { workspace = true, optional = true } risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-zkvm = { workspace = true, features = ["std", "client"] } diff --git a/blake3_groth16/src/receipt_claim.rs b/crates/boundless-market/src/blake3_groth16.rs similarity index 92% rename from blake3_groth16/src/receipt_claim.rs rename to crates/boundless-market/src/blake3_groth16.rs index 307b57055..972256824 100644 --- a/blake3_groth16/src/receipt_claim.rs +++ b/crates/boundless-market/src/blake3_groth16.rs @@ -1,5 +1,6 @@ use anyhow::Context; use borsh::{BorshDeserialize, BorshSerialize}; +use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; use risc0_zkvm::{ sha::{self, Digestible, Sha256, DIGEST_BYTES}, Digest, MaybePruned, ReceiptClaim, SystemState, VerifierContext, @@ -10,21 +11,26 @@ use serde::{Deserialize, Serialize}; /// The digest of this is what the BLAKE3 Groth16 proof outputs. #[derive(Clone, Debug, Serialize, Deserialize, BorshSerialize, BorshDeserialize)] pub struct Blake3Groth16ReceiptClaim { + /// pre-state pub pre: MaybePruned, + /// post-state pub post: MaybePruned, /// Note: This journal has to be exactly 32 bytes pub journal: Vec, + /// control root pub control_root: Digest, + /// control id pub control_id: Digest, } impl Blake3Groth16ReceiptClaim { + /// Returns the `Blake3Groth16ReceiptClaim` corresponding to the given image id and journal pub fn ok(image_id: impl Into, journal: impl Into>) -> Self { Self::ok_with_ctx(image_id, journal, VerifierContext::default()) .expect("default verifier context is expected to supply succinct verifier parameters") } - pub fn ok_with_ctx( + fn ok_with_ctx( image_id: impl Into, journal: impl Into>, ctx: VerifierContext, @@ -38,11 +44,12 @@ impl Blake3Groth16ReceiptClaim { control_root, pre: MaybePruned::Pruned(image_id.into()), post: MaybePruned::Value(SystemState { pc: 0, merkle_root: Digest::ZERO }), - control_id: crate::BN254_IDENTITY_CONTROL_ID, + control_id: BN254_IDENTITY_CONTROL_ID, journal: journal.into(), }) } + /// Returns the digest of the claim. pub fn claim_digest(&self) -> Digest { self.claim_digest_inner::() } diff --git a/crates/boundless-market/src/lib.rs b/crates/boundless-market/src/lib.rs index d795e73d9..f896b26ff 100644 --- a/crates/boundless-market/src/lib.rs +++ b/crates/boundless-market/src/lib.rs @@ -71,6 +71,10 @@ pub use order_stream_client::OrderStreamClient; #[cfg(not(target_os = "zkvm"))] pub mod request_builder; +/// Module providing blake3-groth16 related integrations. +#[cfg(not(target_os = "zkvm"))] +pub mod blake3_groth16; + /// Selector module implementing utility functions for supported selectors. #[cfg(not(target_os = "zkvm"))] pub mod selector; diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index 9a45d9000..f2bcd2dd8 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -13,6 +13,7 @@ // limitations under the License. use super::{Adapt, Layer, MissingFieldError, RequestParams}; +use crate::blake3_groth16; use crate::contracts::{Callback, Predicate, Requirements}; use crate::selector::is_blake3_groth16_selector; use alloy::primitives::{aliases::U96, Address, FixedBytes, B256}; diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index dc558432c..48e404a84 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -2,17 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addchain" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" -dependencies = [ - "num-bigint 0.3.3", - "num-integer", - "num-traits", -] - [[package]] name = "addr2line" version = "0.24.2" @@ -773,15 +762,6 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - [[package]] name = "ark-bn254" version = "0.5.0" @@ -813,7 +793,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -843,10 +822,9 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -861,7 +839,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.3.3", @@ -881,7 +859,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.4.1", @@ -902,10 +880,9 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", - "rayon", "zeroize", ] @@ -945,7 +922,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "quote", "syn 1.0.109", @@ -957,7 +934,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -970,7 +947,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -990,7 +967,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1006,7 +982,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1020,7 +995,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "tracing", @@ -1056,7 +1031,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1069,8 +1044,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint 0.4.6", - "rayon", + "num-bigint", ] [[package]] @@ -1124,7 +1098,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -1926,40 +1899,6 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "blake3_groth16" -version = "1.2.0" -dependencies = [ - "anyhow", - "ark-bn254", - "ark-ff 0.5.0", - "ark-groth16", - "ark-serialize 0.5.0", - "bincode", - "blake3", - "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", - "borsh", - "bytemuck", - "crypto-bigint 0.5.2", - "derive_more", - "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", - "risc0-groth16", - "risc0-zkp", - "risc0-zkvm", - "serde", - "serde_json", - "sha2", - "tempfile", - "tokio", - "tracing", - "wtns-file", -] - [[package]] name = "block" version = "0.1.6" @@ -2000,32 +1939,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "bonsai-sdk" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" -dependencies = [ - "duplicate", - "maybe-async", - "reqwest", - "serde", - "thiserror 2.0.16", -] - -[[package]] -name = "bonsai-sdk" -version = "1.4.1" -source = "git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2#6ed3f0321638ae7eb9c097b8aa8becba3f4b1350" -dependencies = [ - "duplicate", - "maybe-async", - "reqwest", - "serde", - "thiserror 2.0.16", - "tokio", -] - [[package]] name = "borsh" version = "1.5.7" @@ -2074,7 +1987,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -2087,6 +2001,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-ethereum-contracts", "risc0-zkvm", "rmp-serde", @@ -2475,25 +2390,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2518,15 +2414,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -2682,17 +2569,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "derive_builder" version = "0.20.2" @@ -2766,15 +2642,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs" version = "6.0.0" @@ -2840,37 +2707,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" -[[package]] -name = "downloader" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" -dependencies = [ - "digest 0.10.7", - "futures", - "rand 0.8.5", - "reqwest", - "thiserror 1.0.69", - "tokio", -] - [[package]] name = "dunce" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" -[[package]] -name = "duplicate" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" -dependencies = [ - "heck", - "proc-macro2", - "proc-macro2-diagnostics", -] - [[package]] name = "dyn-clone" version = "1.0.20" @@ -3108,28 +2950,10 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "bitvec", - "byteorder", - "ff_derive", "rand_core 0.6.4", "subtle", ] -[[package]] -name = "ff_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" -dependencies = [ - "addchain", - "num-bigint 0.3.3", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "find-msvc-tools" version = "0.1.0" @@ -3154,16 +2978,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "flate2" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - [[package]] name = "fnv" version = "1.0.7" @@ -3365,10 +3179,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -3378,11 +3190,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.3+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -3752,7 +3562,6 @@ dependencies = [ "tokio", "tokio-rustls 0.26.2", "tower-service", - "webpki-roots", ] [[package]] @@ -4291,12 +4100,6 @@ dependencies = [ "hashbrown 0.15.5", ] -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "macro-string" version = "0.1.4" @@ -4326,27 +4129,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matrixmultiply" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" -dependencies = [ - "autocfg", - "rawpointer", -] - -[[package]] -name = "maybe-async" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "md-5" version = "0.10.6" @@ -4419,7 +4201,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] @@ -4450,22 +4231,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "ndarray" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" -dependencies = [ - "matrixmultiply", - "num-complex", - "num-integer", - "num-traits", - "portable-atomic", - "portable-atomic-util", - "rawpointer", - "rayon", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4497,17 +4262,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -4535,15 +4289,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -4611,15 +4356,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "nvtx" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" -dependencies = [ - "cc", -] - [[package]] name = "nybbles" version = "0.4.3" @@ -4939,21 +4675,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - [[package]] name = "postcard" version = "1.1.3" @@ -5058,18 +4779,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", - "version_check", -] - [[package]] name = "proptest" version = "1.7.0" @@ -5113,81 +4822,12 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "puffin" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" -dependencies = [ - "anyhow", - "byteorder", - "cfg-if", - "itertools 0.10.5", - "once_cell", - "parking_lot", -] - [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.1", - "rustls 0.23.31", - "socket2 0.6.0", - "thiserror 2.0.16", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash 2.1.1", - "rustls 0.23.31", - "rustls-pki-types", - "slab", - "thiserror 2.0.16", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.0", - "tracing", - "windows-sys 0.60.2", -] - [[package]] name = "quote" version = "1.0.40" @@ -5280,32 +4920,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "redox_syscall" version = "0.5.17" @@ -5401,7 +5015,6 @@ dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", - "futures-channel", "futures-core", "futures-util", "h2 0.4.12", @@ -5419,8 +5032,6 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls 0.23.31", "rustls-pki-types", "serde", "serde_json", @@ -5428,17 +5039,13 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", - "tokio-util", "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", - "webpki-roots", ] [[package]] @@ -5549,20 +5156,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "risc0-build-kernel" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" -dependencies = [ - "cc", - "directories", - "hex", - "rayon", - "sha2", - "tempfile", -] - [[package]] name = "risc0-circuit-keccak" version = "4.0.2" @@ -5587,33 +5180,11 @@ checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", - "cfg-if", - "downloader", "hex", - "lazy-regex", "metal", - "rand 0.9.2", - "rayon", - "risc0-circuit-recursion-sys", "risc0-core", - "risc0-sys", "risc0-zkp", - "serde", - "sha2", "tracing", - "zip", -] - -[[package]] -name = "risc0-circuit-recursion-sys" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" -dependencies = [ - "glob", - "risc0-build-kernel", - "risc0-core", - "risc0-sys", ] [[package]] @@ -5641,8 +5212,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", - "nvtx", - "puffin", "rand_core 0.9.3", ] @@ -5679,23 +5248,13 @@ dependencies = [ "ark-serialize 0.5.0", "bytemuck", "hex", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] -[[package]] -name = "risc0-sys" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" -dependencies = [ - "anyhow", - "risc0-build-kernel", -] - [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" @@ -5719,18 +5278,12 @@ dependencies = [ "bytemuck", "cfg-if", "digest 0.10.7", - "ff 0.13.1", "hex", "hex-literal", "metal", - "ndarray", - "parking_lot", "paste", - "rand 0.9.2", "rand_core 0.9.3", - "rayon", "risc0-core", - "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", @@ -5746,7 +5299,6 @@ checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "anyhow", "bincode", - "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -5865,7 +5417,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "parity-scale-codec", @@ -5974,7 +5526,6 @@ checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki 0.103.4", "subtle", @@ -6020,7 +5571,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "web-time", "zeroize", ] @@ -6451,12 +6001,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - [[package]] name = "similar" version = "2.7.0" @@ -6829,21 +6373,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.47.1" @@ -7386,19 +6915,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-streams" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "wasmtimer" version = "0.4.3" @@ -7423,25 +6939,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "4.4.2" @@ -7732,15 +7229,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" -[[package]] -name = "wtns-file" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3b856452298f68a5879e3901918bac5d753ca9fa4be8a983a37a3d25dabf0a" -dependencies = [ - "byteorder", -] - [[package]] name = "wyz" version = "0.5.1" @@ -7885,35 +7373,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.11.0", - "memchr", - "thiserror 2.0.16", - "zopfli", -] - -[[package]] -name = "zopfli" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] - [[patch.unused]] name = "sha2" version = "0.10.8" From 83c41b1b4358b5026450be7e58e82baf8390677d Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 23:20:54 +0000 Subject: [PATCH 53/86] sort --- bento/crates/workflow/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bento/crates/workflow/Cargo.toml b/bento/crates/workflow/Cargo.toml index 676b3c106..7716dc29d 100644 --- a/bento/crates/workflow/Cargo.toml +++ b/bento/crates/workflow/Cargo.toml @@ -21,6 +21,7 @@ cuda = ["risc0-zkvm/cuda", "blake3_groth16/cuda"] [dependencies] anyhow = { workspace = true } bincode = { workspace = true } +blake3_groth16 = { workspace = true, features = ["prove"] } bytemuck = { workspace = true } clap = { workspace = true, features = ["env", "derive"] } deadpool-redis = { workspace = true } @@ -32,7 +33,6 @@ risc0-binfmt = { workspace = true } risc0-zkvm = { workspace = true, default-features = false, features = ["prove"] } serde = { workspace = true } serde_json = { workspace = true } -blake3_groth16 = { workspace = true, features = ["prove"] } signal-hook = "0.3" sqlx = { workspace = true } taskdb = { workspace = true } From e31019c2cf90390552e59461f82f8cf152f68d6c Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 23:33:30 +0000 Subject: [PATCH 54/86] drop optional for risc0-circuit-recursion --- crates/boundless-market/Cargo.toml | 4 +- .../guest/assessor/assessor-guest/Cargo.lock | 432 +++++++++++++++++- 2 files changed, 422 insertions(+), 14 deletions(-) diff --git a/crates/boundless-market/Cargo.toml b/crates/boundless-market/Cargo.toml index 0a058cc17..3304e2132 100644 --- a/crates/boundless-market/Cargo.toml +++ b/crates/boundless-market/Cargo.toml @@ -14,7 +14,7 @@ rustdoc-args = ["--cfg", "docsrs"] [features] default = [] -test-utils = ["dep:risc0-circuit-recursion"] +test-utils = [] [dependencies] alloy-chains = { workspace = true } @@ -58,7 +58,7 @@ rand = { workspace = true } reqwest = { workspace = true, features = ["json", "multipart"] } risc0-aggregation = { workspace = true } risc0-binfmt = { workspace = true } -risc0-circuit-recursion = { workspace = true, optional = true } +risc0-circuit-recursion = { workspace = true } risc0-ethereum-contracts = { workspace = true, features = ["unstable"] } risc0-zkvm = { workspace = true, features = ["std", "client"] } rmp-serde = { workspace = true } diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index 48e404a84..32668de19 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -2,6 +2,17 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -762,6 +773,15 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-bn254" version = "0.5.0" @@ -822,7 +842,7 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "zeroize", @@ -839,7 +859,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.3.3", @@ -859,7 +879,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.4.1", @@ -880,7 +900,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "zeroize", @@ -922,7 +942,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "quote", "syn 1.0.109", @@ -934,7 +954,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -947,7 +967,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -995,7 +1015,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "tracing", @@ -1031,7 +1051,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1044,7 +1064,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -2002,6 +2022,7 @@ dependencies = [ "reqwest", "risc0-aggregation", "risc0-binfmt", + "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", "rmp-serde", @@ -2390,6 +2411,25 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2569,6 +2609,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -2642,6 +2693,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs" version = "6.0.0" @@ -2707,6 +2767,20 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" @@ -2950,10 +3024,28 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ + "bitvec", + "byteorder", + "ff_derive", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "find-msvc-tools" version = "0.1.0" @@ -2978,6 +3070,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3179,8 +3281,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -3190,9 +3294,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.3+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -3562,6 +3668,7 @@ dependencies = [ "tokio", "tokio-rustls 0.26.2", "tower-service", + "webpki-roots", ] [[package]] @@ -4100,6 +4207,12 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "macro-string" version = "0.1.4" @@ -4129,6 +4242,16 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "md-5" version = "0.10.6" @@ -4201,6 +4324,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -4231,6 +4355,22 @@ dependencies = [ "tempfile", ] +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "rayon", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4262,6 +4402,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4289,6 +4440,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -4356,6 +4516,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "nvtx" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" +dependencies = [ + "cc", +] + [[package]] name = "nybbles" version = "0.4.3" @@ -4675,6 +4844,21 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "postcard" version = "1.1.3" @@ -4822,12 +5006,81 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "puffin" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" +dependencies = [ + "anyhow", + "byteorder", + "cfg-if", + "itertools 0.10.5", + "once_cell", + "parking_lot", +] + [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "socket2 0.5.10", + "thiserror 2.0.16", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "rustls-pki-types", + "slab", + "thiserror 2.0.16", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.5.10", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "quote" version = "1.0.40" @@ -4920,6 +5173,32 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.5.17" @@ -5032,6 +5311,8 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", + "quinn", + "rustls 0.23.31", "rustls-pki-types", "serde", "serde_json", @@ -5039,6 +5320,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", + "tokio-rustls 0.26.2", "tower", "tower-http", "tower-service", @@ -5046,6 +5328,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots", ] [[package]] @@ -5156,6 +5439,20 @@ dependencies = [ "tempfile", ] +[[package]] +name = "risc0-build-kernel" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +dependencies = [ + "cc", + "directories", + "hex", + "rayon", + "sha2", + "tempfile", +] + [[package]] name = "risc0-circuit-keccak" version = "4.0.2" @@ -5180,11 +5477,33 @@ checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", + "cfg-if", + "downloader", "hex", + "lazy-regex", "metal", + "rand 0.9.2", + "rayon", + "risc0-circuit-recursion-sys", "risc0-core", + "risc0-sys", "risc0-zkp", + "serde", + "sha2", "tracing", + "zip", +] + +[[package]] +name = "risc0-circuit-recursion-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +dependencies = [ + "glob", + "risc0-build-kernel", + "risc0-core", + "risc0-sys", ] [[package]] @@ -5212,6 +5531,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", + "nvtx", + "puffin", "rand_core 0.9.3", ] @@ -5248,13 +5569,23 @@ dependencies = [ "ark-serialize 0.5.0", "bytemuck", "hex", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] +[[package]] +name = "risc0-sys" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +dependencies = [ + "anyhow", + "risc0-build-kernel", +] + [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" @@ -5278,12 +5609,18 @@ dependencies = [ "bytemuck", "cfg-if", "digest 0.10.7", + "ff 0.13.1", "hex", "hex-literal", "metal", + "ndarray", + "parking_lot", "paste", + "rand 0.9.2", "rand_core 0.9.3", + "rayon", "risc0-core", + "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", @@ -5417,7 +5754,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "parity-scale-codec", @@ -5526,6 +5863,7 @@ checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", + "ring", "rustls-pki-types", "rustls-webpki 0.103.4", "subtle", @@ -5571,6 +5909,7 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ + "web-time", "zeroize", ] @@ -6001,6 +6340,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "similar" version = "2.7.0" @@ -6373,6 +6718,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.47.1" @@ -6939,6 +7299,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" @@ -7373,6 +7752,35 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.11.0", + "memchr", + "thiserror 2.0.16", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[patch.unused]] name = "sha2" version = "0.10.8" From 027ef551e7721dbe077385b9a3bf53d64a7ee9a4 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 23:38:52 +0000 Subject: [PATCH 55/86] update lock files --- examples/composition/Cargo.lock | 6 ++++-- examples/counter-with-callback/Cargo.lock | 6 ++++-- examples/counter/Cargo.lock | 6 ++++-- examples/smart-contract-requestor/Cargo.lock | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 370fa27b1..2c9186a11 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -2071,8 +2071,8 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", "bytemuck", - "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", "hex", @@ -2207,7 +2207,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -2220,6 +2221,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index e36c5db1a..4ce22cf67 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -2071,8 +2071,8 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", "bytemuck", - "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", "hex", @@ -2207,7 +2207,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -2220,6 +2221,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index c8b0ec764..29419069d 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -2089,8 +2089,8 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", "bytemuck", - "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", "hex", @@ -2225,7 +2225,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -2238,6 +2239,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index 7947afe74..430c39873 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -2071,8 +2071,8 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", "bytemuck", - "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", "hex", @@ -2207,7 +2207,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3_groth16", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -2220,6 +2221,7 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", From fe960f976f45367a593e220e89bfae3c20d5dc62 Mon Sep 17 00:00:00 2001 From: capossele Date: Fri, 14 Nov 2025 23:39:25 +0000 Subject: [PATCH 56/86] update lock --- bento/Cargo.lock | 2146 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 2082 insertions(+), 64 deletions(-) diff --git a/bento/Cargo.lock b/bento/Cargo.lock index 823fd1746..987516335 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -62,14 +62,654 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "alloy" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a83b2001153fdb12999f808b53068ba36902ca59bf32ad979bb176d03f8f8772" +dependencies = [ + "alloy-consensus", + "alloy-contract", + "alloy-core", + "alloy-eips", + "alloy-network", + "alloy-node-bindings", + "alloy-provider", + "alloy-rpc-client", + "alloy-rpc-types", + "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", + "alloy-transport-http", + "alloy-trie", +] + +[[package]] +name = "alloy-chains" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfaa9ea039a6f9304b4a593d780b1f23e1ae183acdee938b11b38795acacc9f1" +dependencies = [ + "alloy-primitives", + "num_enum", + "serde", + "strum", +] + +[[package]] +name = "alloy-consensus" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad704069c12f68d0c742d0cad7e0a03882b42767350584627fbf8a47b1bf1846" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-trie", + "alloy-tx-macros", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "k256", + "once_cell", + "rand 0.8.5", + "secp256k1", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-consensus-any" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc374f640a5062224d7708402728e3d6879a514ba10f377da62e7dfb14c673e6" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c493b2812943f7b58191063a8d13ea97c76099900869c08231e8eba3bf2f92" +dependencies = [ + "alloy-consensus", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-network-primitives", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport", + "futures", + "futures-util", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-core" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "itoa", + "serde", + "serde_json", + "winnow", +] + +[[package]] +name = "alloy-eip2124" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eip2930" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", +] + +[[package]] +name = "alloy-eip7702" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "borsh", + "serde", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-eips" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e867b5fd52ed0372a95016f3a37cbff95a9d5409230fbaef2d8ea00e8618098" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "auto_impl", + "borsh", + "c-kzg", + "derive_more", + "either", + "serde", + "serde_with", + "sha2", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-genesis" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b90be17e9760a6ba6d13cebdb049cea405ebc8bf57d90664ed708cc5bc348342" +dependencies = [ + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-hardforks" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165210652f71dfc094b051602bafd691f506c54050a174b1cba18fb5ef706a3" +dependencies = [ + "alloy-chains", + "alloy-eip2124", + "alloy-primitives", + "auto_impl", + "dyn-clone", +] + +[[package]] +name = "alloy-json-abi" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-json-rpc" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcab4c51fb1273e3b0f59078e0cdf8aa99f697925b09f0d2055c18be46b4d48c" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "http 1.3.1", + "serde", + "serde_json", + "thiserror 2.0.16", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196d7fd3f5d414f7bbd5886a628b7c42bd98d1b126f9a7cff69dbfd72007b39c" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-json-rpc", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rpc-types-any", + "alloy-rpc-types-eth", + "alloy-serde", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "derive_more", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-network-primitives" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3ae2777e900a7a47ad9e3b8ab58eff3d93628265e73bbdee09acf90bf68f75" +dependencies = [ + "alloy-consensus", + "alloy-eips", + "alloy-primitives", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-node-bindings" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ead1731af4146c573e2ea0e83c6a0696814efb0c25feea2892bdd5e4ee1f479" +dependencies = [ + "alloy-genesis", + "alloy-hardforks", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "alloy-signer-local", + "k256", + "rand 0.8.5", + "serde_json", + "tempfile", + "thiserror 2.0.16", + "tracing", + "url", +] + +[[package]] +name = "alloy-primitives" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more", + "foldhash 0.2.0", + "hashbrown 0.16.0", + "indexmap 2.11.0", + "itoa", + "k256", + "keccak-asm", + "paste", + "proptest", + "rand 0.9.2", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + +[[package]] +name = "alloy-provider" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9bf40c9b2a90c7677f9c39bccd9f06af457f35362439c0497a706f16557703" +dependencies = [ + "alloy-chains", + "alloy-consensus", + "alloy-eips", + "alloy-json-rpc", + "alloy-network", + "alloy-network-primitives", + "alloy-node-bindings", + "alloy-primitives", + "alloy-rpc-client", + "alloy-rpc-types-anvil", + "alloy-rpc-types-eth", + "alloy-signer", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-http", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "either", + "futures", + "futures-utils-wasm", + "lru 0.13.0", + "parking_lot", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tracing", + "url", + "wasmtimer", +] + [[package]] name = "alloy-rlp" version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-rpc-client" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c2630fde9ff6033a780635e1af6ef40e92d74a9cacb8af3defc1b15cfebca5" +dependencies = [ + "alloy-json-rpc", + "alloy-primitives", + "alloy-transport", + "alloy-transport-http", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad098153a12382c22a597e865530033f5e644473742d6c733562d448125e02a2" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "214d9d1033c173ab8fa32edd8a4655cd784447c820b0b66cd0d5167e049567d6" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b8429b5b62d21bf3691eb1ae12aaae9bb496894d5a114e3cc73e27e6800ec8" +dependencies = [ + "alloy-consensus-any", + "alloy-rpc-types-eth", + "alloy-serde", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29031a6bf46177d65efce661f7ab37829ca09dd341bc40afb5194e97600655cc" +dependencies = [ + "alloy-consensus", + "alloy-consensus-any", + "alloy-eips", + "alloy-network-primitives", + "alloy-primitives", + "alloy-rlp", + "alloy-serde", + "alloy-sol-types", + "itertools 0.14.0", + "serde", + "serde_json", + "serde_with", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-serde" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e856112bfa0d9adc85bd7c13db03fad0e71d1d6fb4c2010e475b6718108236" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a4f629da632d5279bbc5731634f0f5c9484ad9c4cad0cd974d9669dc1f46d6" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "either", + "elliptic-curve 0.13.8", + "k256", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-signer-local" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c8950810dc43660c0f22883659c4218e090a5c75dce33fa4ca787715997b7b" +dependencies = [ + "alloy-consensus", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "k256", + "rand 0.8.5", + "thiserror 2.0.16", +] + +[[package]] +name = "alloy-sol-macro" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.11.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.106", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" +dependencies = [ + "serde", + "winnow", +] + +[[package]] +name = "alloy-sol-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe215a2f9b51d5f1aa5c8cf22c8be8cdb354934de09c9a4e37aefb79b77552fd" +dependencies = [ + "alloy-json-rpc", + "auto_impl", + "base64 0.22.1", + "derive_more", + "futures", + "futures-utils-wasm", + "parking_lot", + "serde", + "serde_json", + "thiserror 2.0.16", + "tokio", + "tower", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b37b1a30d23deb3a8746e882c70b384c574d355bc2bbea9ea918b0c31366e" +dependencies = [ + "alloy-json-rpc", + "alloy-transport", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-trie" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ + "alloy-primitives", + "alloy-rlp", "arrayvec", - "bytes", + "derive_more", + "nybbles", + "serde", + "smallvec", + "tracing", +] + +[[package]] +name = "alloy-tx-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ccf423f6de62e8ce1d6c7a11fb7508ae3536d02e0d68aaeb05c8669337d0937" +dependencies = [ + "darling 0.21.3", + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -553,6 +1193,220 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.5.0", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.0.8", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener 5.4.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-object-pool" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "333c456b97c3f2d50604e8b2624253b7f787208cb72eb75e64b0ad11b221652c" +dependencies = [ + "async-std", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel 2.5.0", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener 5.4.1", + "futures-lite", + "rustix 1.0.8", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.0.8", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-std" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" @@ -692,7 +1546,7 @@ dependencies = [ "http 0.2.12", "http 1.3.1", "http-body 0.4.6", - "lru", + "lru 0.12.5", "percent-encoding", "regex-lite", "sha2", @@ -1005,6 +1859,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + [[package]] name = "base64" version = "0.21.7" @@ -1033,6 +1893,17 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +[[package]] +name = "basic-cookies" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67bd8fd42c16bdb08688243dc5f0cc117a3ca9efeeaba3a345a18a6159ad96f7" +dependencies = [ + "lalrpop", + "lalrpop-util", + "regex", +] + [[package]] name = "bento-client" version = "0.1.0" @@ -1116,12 +1987,52 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" +[[package]] +name = "bitcoin-io" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" + +[[package]] +name = "bitcoin_hashes" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +dependencies = [ + "bitcoin-io", + "hex-conservative", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -1173,7 +2084,7 @@ dependencies = [ [[package]] name = "blake3_groth16" -version = "1.1.0" +version = "1.2.0" dependencies = [ "anyhow", "ark-bn254", @@ -1184,6 +2095,8 @@ dependencies = [ "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", + "boundless-market", + "bytemuck", "circom-witnesscalc", "crypto-bigint 0.5.2", "derive_more", @@ -1192,6 +2105,7 @@ dependencies = [ "num-traits", "risc0-binfmt", "risc0-circuit-recursion", + "risc0-core", "risc0-groth16", "risc0-groth16-sys", "risc0-zkp", @@ -1220,6 +2134,19 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel 2.5.0", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "blst" version = "0.3.15" @@ -1235,7 +2162,8 @@ dependencies = [ [[package]] name = "bonsai-sdk" version = "1.4.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21055e2f49cbbdbfe9f8f96d597c5527b0c6ab7933341fdc2f147180e48a988e" dependencies = [ "duplicate", "maybe-async", @@ -1280,6 +2208,52 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "boundless-market" +version = "1.2.0" +dependencies = [ + "alloy", + "alloy-chains", + "alloy-primitives", + "alloy-sol-types", + "anyhow", + "async-stream", + "async-trait", + "aws-sdk-s3", + "blake3", + "borsh", + "bytemuck", + "chrono", + "clap", + "dashmap", + "derive_builder", + "futures", + "futures-util", + "hex", + "httpmock", + "rand 0.9.2", + "reqwest", + "risc0-aggregation", + "risc0-binfmt", + "risc0-circuit-recursion", + "risc0-ethereum-contracts", + "risc0-zkvm", + "rmp-serde", + "serde", + "serde_json", + "sha2", + "siwe", + "tempfile", + "thiserror 2.0.16", + "time", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-subscriber 0.3.20", + "url", + "utoipa", +] + [[package]] name = "bumpalo" version = "3.19.0" @@ -1337,6 +2311,21 @@ dependencies = [ "either", ] +[[package]] +name = "c-kzg" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" +dependencies = [ + "blst", + "cc", + "glob", + "hex", + "libc", + "once_cell", + "serde", +] + [[package]] name = "camino" version = "1.1.12" @@ -1416,9 +2405,11 @@ checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", + "js-sys", "num-traits", "serde", - "windows-link", + "wasm-bindgen", + "windows-link 0.1.3", ] [[package]] @@ -1588,6 +2579,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "const-hex" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" +dependencies = [ + "cfg-if", + "cpufeatures", + "proptest", + "serde_core", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -1823,8 +2826,10 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ + "generic-array", "rand_core 0.6.4", "subtle", + "zeroize", ] [[package]] @@ -1889,8 +2894,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1907,17 +2922,63 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.106", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", "syn 2.0.106", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "deadpool" version = "0.12.3" @@ -2017,7 +3078,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", @@ -2093,6 +3154,16 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.5.0" @@ -2101,10 +3172,21 @@ checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.5.2", "windows-sys 0.60.2", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users 0.4.6", + "winapi", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -2178,11 +3260,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ "der 0.6.1", - "elliptic-curve", - "rfc6979", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", "signature 1.6.4", ] +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der 0.7.10", + "digest 0.10.7", + "elliptic-curve 0.13.8", + "rfc6979 0.4.0", + "serdect", + "signature 2.2.0", + "spki 0.7.3", +] + [[package]] name = "educe" version = "0.6.0" @@ -2216,16 +3313,36 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "base16ct", + "base16ct 0.1.1", "crypto-bigint 0.4.9", "der 0.6.1", "digest 0.10.7", "ff 0.12.1", "generic-array", - "group", + "group 0.12.1", "pkcs8 0.9.0", "rand_core 0.6.4", - "sec1", + "sec1 0.3.0", + "subtle", + "zeroize", +] + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct 0.2.0", + "crypto-bigint 0.5.5", + "digest 0.10.7", + "ff 0.13.1", + "generic-array", + "group 0.13.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "serdect", "subtle", "zeroize", ] @@ -2242,6 +3359,15 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "1.0.0" @@ -2334,6 +3460,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "event-listener" version = "5.4.1" @@ -2345,6 +3477,16 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener 5.4.1", + "pin-project-lite", +] + [[package]] name = "fallible-iterator" version = "0.3.0" @@ -2444,6 +3586,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "fixedbitset" version = "0.5.7" @@ -2483,6 +3631,21 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + [[package]] name = "foreign-types" version = "0.5.0" @@ -2490,7 +3653,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared", + "foreign-types-shared 0.3.1", ] [[package]] @@ -2504,6 +3667,12 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -2590,6 +3759,19 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -2631,6 +3813,12 @@ dependencies = [ "slab", ] +[[package]] +name = "futures-utils-wasm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" + [[package]] name = "gdbstub" version = "0.7.7" @@ -2663,6 +3851,7 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", + "zeroize", ] [[package]] @@ -2718,6 +3907,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "group" version = "0.12.1" @@ -2729,6 +3930,17 @@ dependencies = [ "subtle", ] +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff 0.13.1", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "h2" version = "0.3.27" @@ -2809,7 +4021,17 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", + "serde", ] [[package]] @@ -2853,6 +4075,15 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex-conservative" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +dependencies = [ + "arrayvec", +] + [[package]] name = "hex-literal" version = "0.4.1" @@ -2954,6 +4185,34 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "httpmock" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08ec9586ee0910472dec1a1f0f8acf52f0fdde93aea74d70d4a3107b4be0fd5b" +dependencies = [ + "assert-json-diff", + "async-object-pool", + "async-std", + "async-trait", + "base64 0.21.7", + "basic-cookies", + "crossbeam-utils", + "form_urlencoded", + "futures-util", + "hyper 0.14.32", + "lazy_static", + "levenshtein", + "log", + "regex", + "serde", + "serde_json", + "serde_regex", + "similar", + "tokio", + "url", +] + [[package]] name = "hyper" version = "0.14.32" @@ -3035,6 +4294,22 @@ dependencies = [ "webpki-roots 1.0.2", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.7.0", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.16" @@ -3054,9 +4329,11 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2 0.6.0", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -3377,17 +4654,81 @@ version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ - "once_cell", - "wasm-bindgen", + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "k256" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" +dependencies = [ + "cfg-if", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", + "once_cell", + "serdect", + "sha2", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "keccak-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lalrpop" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" +dependencies = [ + "ascii-canvas", + "bit-set 0.5.3", + "ena", + "itertools 0.11.0", + "lalrpop-util", + "petgraph 0.6.5", + "pico-args", + "regex", + "regex-syntax", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", + "walkdir", ] [[package]] -name = "keccak" -version = "0.1.5" +name = "lalrpop-util" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "cpufeatures", + "regex-automata", ] [[package]] @@ -3428,6 +4769,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "levenshtein" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" + [[package]] name = "libc" version = "0.2.175" @@ -3524,6 +4871,9 @@ name = "log" version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +dependencies = [ + "value-bag", +] [[package]] name = "lru" @@ -3534,12 +4884,32 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +dependencies = [ + "hashbrown 0.15.5", +] + [[package]] name = "lru-slab" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "malachite" version = "0.4.22" @@ -3695,7 +5065,7 @@ dependencies = [ "bitflags 2.9.4", "block", "core-graphics-types", - "foreign-types", + "foreign-types 0.5.0", "log", "objc", "paste", @@ -3707,6 +5077,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3745,6 +5125,23 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "ndarray" version = "0.16.1" @@ -3761,6 +5158,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nix" version = "0.29.0" @@ -3938,6 +5341,20 @@ dependencies = [ "cc", ] +[[package]] +name = "nybbles" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa11e84403164a9f12982ab728f3c67c6fd4ab5b5f0254ffc217bdbd3b28ab0" +dependencies = [ + "alloy-rlp", + "cfg-if", + "proptest", + "ruint", + "serde", + "smallvec", +] + [[package]] name = "objc" version = "0.2.7" @@ -3976,12 +5393,50 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "openssl" +version = "0.10.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "openssl-probe" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -4000,8 +5455,8 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" dependencies = [ - "ecdsa", - "elliptic-curve", + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", "sha2", ] @@ -4094,16 +5549,61 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap 2.11.0", +] + [[package]] name = "petgraph" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ - "fixedbitset", + "fixedbitset 0.5.7", "indexmap 2.11.0", ] +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pico-args" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -4116,6 +5616,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkcs1" version = "0.7.5" @@ -4181,6 +5692,20 @@ dependencies = [ "plotters-backend", ] +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.0.8", + "windows-sys 0.61.2", +] + [[package]] name = "portable-atomic" version = "1.11.1" @@ -4233,6 +5758,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "prettyplease" version = "0.2.37" @@ -4263,6 +5794,28 @@ dependencies = [ "toml_edit", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "proc-macro2" version = "1.0.101" @@ -4291,6 +5844,8 @@ version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", "bitflags 2.9.4", "lazy_static", "num-traits", @@ -4298,6 +5853,8 @@ dependencies = [ "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax", + "rusty-fork", + "tempfile", "unarray", ] @@ -4322,7 +5879,7 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph", + "petgraph 0.7.1", "prettyplease", "prost", "prost-types", @@ -4367,6 +5924,12 @@ dependencies = [ "parking_lot", ] +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quinn" version = "0.11.9" @@ -4452,6 +6015,7 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", + "serde", ] [[package]] @@ -4462,6 +6026,7 @@ checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", + "serde", ] [[package]] @@ -4500,6 +6065,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ "getrandom 0.3.3", + "serde", ] [[package]] @@ -4572,6 +6138,17 @@ dependencies = [ "bitflags 2.9.4", ] +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + [[package]] name = "redox_users" version = "0.5.2" @@ -4646,17 +6223,23 @@ checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64 0.22.1", "bytes", + "encoding_rs", "futures-channel", "futures-core", "futures-util", + "h2 0.4.12", "http 1.3.1", "http-body 1.0.1", "http-body-util", "hyper 1.7.0", "hyper-rustls 0.27.7", + "hyper-tls", "hyper-util", "js-sys", "log", + "mime", + "mime_guess", + "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -4667,6 +6250,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", + "tokio-native-tls", "tokio-rustls 0.26.2", "tokio-util", "tower", @@ -4691,6 +6275,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + [[package]] name = "ring" version = "0.17.14" @@ -4711,10 +6305,28 @@ version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3df6368f71f205ff9c33c076d170dd56ebf68e8161c733c0caa07a7a5509ed53" +[[package]] +name = "risc0-aggregation" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b37f9050c74d66eb953591e88a60f2d347e99b121e7330eabb0f29c4053d2a36" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "bytemuck", + "hex", + "risc0-binfmt", + "risc0-zkp", + "risc0-zkvm", + "serde", + "thiserror 2.0.16", +] + [[package]] name = "risc0-binfmt" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" dependencies = [ "anyhow", "borsh", @@ -4735,7 +6347,8 @@ dependencies = [ [[package]] name = "risc0-build" version = "3.0.3" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bbb512d728e011d03ce0958ca7954624ee13a215bcafd859623b3c63b2a3f60" dependencies = [ "anyhow", "cargo_metadata", @@ -4758,7 +6371,8 @@ dependencies = [ [[package]] name = "risc0-build-kernel" version = "2.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" dependencies = [ "cc", "directories", @@ -4771,7 +6385,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" dependencies = [ "anyhow", "bytemuck", @@ -4792,7 +6407,8 @@ dependencies = [ [[package]] name = "risc0-circuit-keccak-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a8f21cc053fe9892acebbe0ebe2610a5d79ad638cd17f2e5122cf0b3e7cd1a" dependencies = [ "cc", "cust", @@ -4807,7 +6423,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" dependencies = [ "anyhow", "bytemuck", @@ -4832,7 +6449,8 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" dependencies = [ "glob", "risc0-build-kernel", @@ -4844,10 +6462,11 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" version = "4.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" dependencies = [ "anyhow", - "bit-vec", + "bit-vec 0.8.0", "bytemuck", "byteorder", "cfg-if", @@ -4877,7 +6496,8 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" version = "4.0.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb25f3935e53e89ca020224ad0c09de96cab89a215054c0cee290405074a5166" dependencies = [ "cc", "cust", @@ -4892,7 +6512,8 @@ dependencies = [ [[package]] name = "risc0-core" version = "3.0.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", "nvtx", @@ -4900,10 +6521,30 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "risc0-ethereum-contracts" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a604f09f459f456fd9ef4919c6efcaa6a787a6f9ffcd76cfc81eae1860584a1" +dependencies = [ + "alloy", + "alloy-primitives", + "alloy-sol-types", + "anyhow", + "cfg-if", + "hex", + "risc0-aggregation", + "risc0-zkvm", + "serde", + "thiserror 2.0.16", + "tracing", +] + [[package]] name = "risc0-groth16" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" dependencies = [ "anyhow", "ark-bn254", @@ -4932,7 +6573,8 @@ dependencies = [ [[package]] name = "risc0-groth16-sys" version = "0.1.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "580750e1394c5a79b691c8197906263f17a1d3aa7bb46a934362f1ba1475b1a5" dependencies = [ "anyhow", "blst", @@ -4943,7 +6585,8 @@ dependencies = [ [[package]] name = "risc0-sys" version = "1.5.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" dependencies = [ "anyhow", "blst", @@ -4955,7 +6598,8 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" version = "2.2.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -4965,7 +6609,8 @@ dependencies = [ [[package]] name = "risc0-zkp" version = "3.0.2" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" dependencies = [ "anyhow", "blake2", @@ -4996,12 +6641,13 @@ dependencies = [ [[package]] name = "risc0-zkvm" version = "3.0.3" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fcce11648a9ff60b8e7af2f0ce7fbf8d25275ab6d414cc91b9da69ee75bc978" dependencies = [ "addr2line", "anyhow", "bincode", - "bonsai-sdk 1.4.1 (git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370)", + "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "borsh", "bytemuck", "bytes", @@ -5044,8 +6690,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "2.2.0" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaa10feba15828c788837ddde84b994393936d8f5715228627cfe8625122a40" dependencies = [ "bytemuck", "cfg-if", @@ -5061,10 +6708,32 @@ dependencies = [ name = "rlp" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rmp" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4" +dependencies = [ + "byteorder", + "num-traits", + "paste", +] + +[[package]] +name = "rmp-serde" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" dependencies = [ - "bytes", - "rustc-hex", + "byteorder", + "rmp", + "serde", ] [[package]] @@ -5344,6 +7013,18 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +[[package]] +name = "rusty-fork" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + [[package]] name = "ruzstd" version = "0.7.3" @@ -5362,7 +7043,8 @@ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "rzup" version = "0.5.1" -source = "git+https://github.com/boundless-xyz/risc0.git?branch=ec2%2Fv3.0.3-backport-3370#7026d7f48930c0c5821843564999a3677d5318d7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", @@ -5465,7 +7147,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ - "base16ct", + "base16ct 0.1.1", "der 0.6.1", "generic-array", "pkcs8 0.9.0", @@ -5473,6 +7155,42 @@ dependencies = [ "zeroize", ] +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.10", + "generic-array", + "pkcs8 0.10.2", + "serdect", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", + "serde", +] + +[[package]] +name = "secp256k1-sys" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" +dependencies = [ + "cc", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -5538,18 +7256,28 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -5578,6 +7306,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -5625,12 +7363,22 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn 2.0.106", ] +[[package]] +name = "serdect" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" +dependencies = [ + "base16ct 0.2.0", + "serde", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5659,6 +7407,26 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sha3-asm" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "sharded-slab" version = "0.1.7" @@ -5719,6 +7487,35 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "similar" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "siwe" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95bdefc0eedf06440b27092fbfe33f2cb493ad6a3423aa12cfe7f2aac44bd618" +dependencies = [ + "hex", + "http 1.3.1", + "iri-string", + "k256", + "rand 0.8.5", + "serde", + "sha3", + "thiserror 1.0.69", + "time", +] + [[package]] name = "slab" version = "0.4.11" @@ -5819,7 +7616,7 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener", + "event-listener 5.4.1", "futures-core", "futures-intrusive", "futures-io", @@ -6017,6 +7814,18 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + [[package]] name = "stringprep" version = "0.1.5" @@ -6083,6 +7892,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -6103,6 +7924,27 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.4", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -6139,6 +7981,17 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -6227,6 +8080,15 @@ dependencies = [ "time-core", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tinystr" version = "0.8.1" @@ -6292,6 +8154,16 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" @@ -6332,6 +8204,21 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" +dependencies = [ + "futures-util", + "log", + "native-tls", + "tokio", + "tokio-native-tls", + "tungstenite", ] [[package]] @@ -6511,6 +8398,25 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.3.1", + "httparse", + "log", + "native-tls", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", + "utf-8", +] + [[package]] name = "twox-hash" version = "1.6.3" @@ -6587,6 +8493,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + [[package]] name = "unicode-bidi" version = "0.3.18" @@ -6644,6 +8556,12 @@ dependencies = [ "serde", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -6656,6 +8574,29 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "utoipa" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" +dependencies = [ + "indexmap 2.11.0", + "serde", + "serde_json", + "utoipa-gen", +] + +[[package]] +name = "utoipa-gen" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "uuid" version = "1.18.1" @@ -6674,6 +8615,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" + [[package]] name = "vcpkg" version = "0.2.15" @@ -6704,6 +8651,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" +[[package]] +name = "wait-timeout" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" +dependencies = [ + "libc", +] + [[package]] name = "walkdir" version = "2.5.0" @@ -6828,6 +8784,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.77" @@ -6898,6 +8868,22 @@ dependencies = [ "safe_arch", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.10" @@ -6907,6 +8893,12 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.61.2" @@ -6915,7 +8907,7 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.1.3", "windows-result", "windows-strings", ] @@ -6948,13 +8940,30 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-registry" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +dependencies = [ + "windows-link 0.1.3", + "windows-result", + "windows-strings", +] + [[package]] name = "windows-result" version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -6963,7 +8972,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -7002,6 +9011,15 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -7039,7 +9057,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", From 1de58d624e42b967cd8b7e655c7964bb2d51f45e Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 00:07:34 +0000 Subject: [PATCH 57/86] fixes --- .github/workflows/bento.yml | 3 +++ .github/workflows/contracts.yml | 3 +++ blake3_groth16/Cargo.toml | 2 +- crates/boundless-cli/Cargo.toml | 14 ++++++++++++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/bento.yml b/.github/workflows/bento.yml index 32a5db0a7..15b446db8 100644 --- a/.github/workflows/bento.yml +++ b/.github/workflows/bento.yml @@ -85,6 +85,9 @@ jobs: with: version: ${{ env.FOUNDRY_VERSION }} + - name: Install protoc + run: sudo apt install protobuf-compiler -y + - name: Install cargo-sort uses: risc0/cargo-install@b9307573043522ab0d3e3be64a51763b765b52a4 with: diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index 921a7bbb2..bfdece5d4 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -171,6 +171,9 @@ jobs: risczero-version: ${{ env.RISC0_CRATE_VERSION }} toolchain-version: ${{ env.RISC0_TOOLCHAIN_VERSION }} + - name: Install protoc + run: sudo apt install protobuf-compiler -y + - name: checkout main code uses: actions/checkout@v4 with: diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 785f2969a..6a16e8fa9 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -24,8 +24,8 @@ ark-serialize = "0.5.0" bincode = { workspace = true } blake3 = { version = "1.5.0" } bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } -boundless-market = { workspace = true } borsh = { workspace = true, features = ["derive"] } +boundless-market = { workspace = true } bytemuck = { workspace = true } circom-witnesscalc = { version = "0.2.1", optional = true } crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } diff --git a/crates/boundless-cli/Cargo.toml b/crates/boundless-cli/Cargo.toml index f9fe35f74..b9057f193 100644 --- a/crates/boundless-cli/Cargo.toml +++ b/crates/boundless-cli/Cargo.toml @@ -56,7 +56,12 @@ serde = { workspace = true } serde_json = { workspace = true } serde_yaml = { workspace = true } shadow-rs = { version = "1.1", default-features = false } -sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } +sqlx = { workspace = true, features = [ + "postgres", + "runtime-tokio", + "tls-rustls", + "chrono", +] } tabled = "0.15" tokio = { workspace = true, features = ["rt-multi-thread"] } toml = "0.8" @@ -77,7 +82,12 @@ boundless-test-utils = { workspace = true, features = ["povw"] } order-stream = { workspace = true } predicates = "3.1" rand = { workspace = true } -sqlx = { workspace = true, features = ["postgres", "runtime-tokio", "tls-rustls", "chrono"] } +sqlx = { workspace = true, features = [ + "postgres", + "runtime-tokio", + "tls-rustls", + "chrono", +] } tempfile = { workspace = true } tokio-test = "0.4" tracing-test = { workspace = true } From c1a85f9a4dd914b1349ed8d5291abfb73dc3c41e Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 00:39:29 +0000 Subject: [PATCH 58/86] fix license --- blake3_groth16/src/lib.rs | 14 ++++++++++++++ blake3_groth16/src/prove.rs | 14 ++++++++++++++ blake3_groth16/src/prove/cuda.rs | 2 +- blake3_groth16/src/prove/docker.rs | 14 ++++++++++++++ blake3_groth16/src/prove/witgen.rs | 14 ++++++++++++++ blake3_groth16/src/receipt.rs | 14 ++++++++++++++ blake3_groth16/src/verify.rs | 14 ++++++++++++++ contracts/test/Blake3Groth16Verifier.t.sol | 18 ++++-------------- crates/boundless-market/src/blake3_groth16.rs | 14 ++++++++++++++ license-check.py | 4 ++++ xtask/src/bootstrap_blake3_groth16.rs | 13 ++++++------- xtask/src/main.rs | 14 ++++++++++++++ xtask/src/setup_blake3_groth16.rs | 2 +- 13 files changed, 128 insertions(+), 23 deletions(-) diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index bd960b7a7..44b2e050d 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use anyhow::{Context, Result}; pub use boundless_market::blake3_groth16::Blake3Groth16ReceiptClaim; pub use receipt::*; diff --git a/blake3_groth16/src/prove.rs b/blake3_groth16/src/prove.rs index 6e67985dc..d28e091e4 100644 --- a/blake3_groth16/src/prove.rs +++ b/blake3_groth16/src/prove.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use std::path::Path; use anyhow::{Context, Result}; diff --git a/blake3_groth16/src/prove/cuda.rs b/blake3_groth16/src/prove/cuda.rs index 530f773e3..d400cad37 100644 --- a/blake3_groth16/src/prove/cuda.rs +++ b/blake3_groth16/src/prove/cuda.rs @@ -1,4 +1,4 @@ -// Copyright 2025 RISC Zero, Inc. +// Copyright 2025 Boundless Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/blake3_groth16/src/prove/docker.rs b/blake3_groth16/src/prove/docker.rs index 39f24196e..df1c00548 100644 --- a/blake3_groth16/src/prove/docker.rs +++ b/blake3_groth16/src/prove/docker.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use std::{path::Path, process::ExitStatus}; use crate::prove::witgen::calculate_witness_encoded; diff --git a/blake3_groth16/src/prove/witgen.rs b/blake3_groth16/src/prove/witgen.rs index e50938c94..0a102acf8 100644 --- a/blake3_groth16/src/prove/witgen.rs +++ b/blake3_groth16/src/prove/witgen.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use anyhow::{anyhow, Result}; use std::path::Path; diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index 7a2e7d9af..0e3f33e96 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use anyhow::{bail, Context, Result}; use borsh::{BorshDeserialize, BorshSerialize}; use derive_more::Debug; diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index c2a5c1ea9..4f67bbf7f 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use anyhow::{ensure, Result}; use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; use ark_ff::PrimeField; diff --git a/contracts/test/Blake3Groth16Verifier.t.sol b/contracts/test/Blake3Groth16Verifier.t.sol index e25e42c00..19e186715 100644 --- a/contracts/test/Blake3Groth16Verifier.t.sol +++ b/contracts/test/Blake3Groth16Verifier.t.sol @@ -1,18 +1,8 @@ -// Copyright 2025 RISC Zero, Inc. +// Copyright 2025 Boundless Foundation, Inc. // -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// SPDX-License-Identifier: Apache-2.0 +// Use of this source code is governed by the Business Source License +// as found in the LICENSE-BSL file. +// SPDX-License-Identifier: BUSL-1.1 pragma solidity ^0.8.13; diff --git a/crates/boundless-market/src/blake3_groth16.rs b/crates/boundless-market/src/blake3_groth16.rs index 972256824..8ceb50e2d 100644 --- a/crates/boundless-market/src/blake3_groth16.rs +++ b/crates/boundless-market/src/blake3_groth16.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use anyhow::Context; use borsh::{BorshDeserialize, BorshSerialize}; use risc0_circuit_recursion::control_id::BN254_IDENTITY_CONTROL_ID; diff --git a/license-check.py b/license-check.py index 0f88cea5d..0658a5264 100755 --- a/license-check.py +++ b/license-check.py @@ -36,10 +36,12 @@ ] SKIP_PATHS = [ + str(Path.cwd()) + "/blake3_groth16/src/seal_to_json.rs", # ImageID.sol is automatically generated. str(Path.cwd()) + "/contracts/src/SetBuilderImageID.sol", str(Path.cwd()) + "/contracts/src/libraries/AssessorImageID.sol", str(Path.cwd()) + "/contracts/src/libraries/UtilImageID.sol", + str(Path.cwd()) + "/contracts/src/blake3-groth16/Groth16Verifier.sol", str(Path.cwd()) + "/crates/boundless-market/src/contracts/artifacts", str(Path.cwd()) + "/crates/boundless-market/src/contracts/bytecode.rs", str(Path.cwd()) + "/crates/povw/src/contracts/artifacts", @@ -48,6 +50,7 @@ ] APACHE_PATHS = [ + str(Path.cwd()) + "/blake3_groth16", str(Path.cwd()) + "/contracts/src/HitPoints.sol", str(Path.cwd()) + "/contracts/src/IBoundlessMarket.sol", str(Path.cwd()) + "/contracts/src/IHitPoints.sol", @@ -72,6 +75,7 @@ str(Path.cwd()) + "/examples", str(Path.cwd()) + "/crates/lambdas", str(Path.cwd()) + "/crates/rewards", + str(Path.cwd()) + "/xtask", ] def check_header(file, expected_year, lines_actual): diff --git a/xtask/src/bootstrap_blake3_groth16.rs b/xtask/src/bootstrap_blake3_groth16.rs index d2b9d7e6f..3af8aa086 100644 --- a/xtask/src/bootstrap_blake3_groth16.rs +++ b/xtask/src/bootstrap_blake3_groth16.rs @@ -1,17 +1,16 @@ -// Copyright 2025 RISC Zero, Inc. +// Copyright 2025 Boundless Foundation, Inc. // -// Licensed under the Apache License, Version 2.0, or the MIT license , at your option. This file may not be -// copied, modified, or distributed except according to those terms. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// -// SPDX-License-Identifier: Apache-2.0 OR MIT use std::{fs, path::Path, process::Command}; diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 66a2cb75b..293150157 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -1,3 +1,17 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + use clap::{Parser, Subcommand}; mod bootstrap_blake3_groth16; diff --git a/xtask/src/setup_blake3_groth16.rs b/xtask/src/setup_blake3_groth16.rs index 5bea05c81..8308b728d 100644 --- a/xtask/src/setup_blake3_groth16.rs +++ b/xtask/src/setup_blake3_groth16.rs @@ -1,4 +1,4 @@ -// Copyright 2025 RISC Zero, Inc. +// Copyright 2025 Boundless Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 4af8f2e59d21ffb73a23bd2f0cf212ca5cb0f853 Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 00:53:08 +0000 Subject: [PATCH 59/86] add protobuf-compiler --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 65a6e6a05..59c1e9780 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -93,6 +93,9 @@ jobs: with: version: ${{ env.FOUNDRY_VERSION }} + - name: Install protoc + run: sudo apt install protobuf-compiler -y + - name: Install cargo-sort uses: risc0/cargo-install@b9307573043522ab0d3e3be64a51763b765b52a4 with: From aea1be51723a2d4f8218843411f14257dcf27d85 Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 09:23:19 +0000 Subject: [PATCH 60/86] fix deploy --- contracts/scripts/Deploy.s.sol | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 19b90214e..183dd0aba 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -75,9 +75,13 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { IRiscZeroVerifier _blake3G16Verifier = deployBlake3Verifier(); IRiscZeroSelectable blake3G16Selectable = IRiscZeroSelectable(address(_blake3G16Verifier)); bytes4 blake3G16Selector = blake3G16Selectable.SELECTOR(); - verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); - console2.log("Added Blake3 Groth16 verifier to router with selector"); - console2.logBytes4(blake3G16Selector); + // Only add the _blake3G16Verifier if not dev mode as otherwise we have added already + // the mock verifier in the previous steps. + if (!devMode()) { + verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); + console2.log("Added Blake3 Groth16 verifier to router with selector"); + console2.logBytes4(blake3G16Selector); + } // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. string memory setBuilderPath = From d9971d5e1935b81e0fc38a279ae2bd602c98f09a Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 09:26:44 +0000 Subject: [PATCH 61/86] drop deployBlake3Verifier --- contracts/scripts/Deploy.s.sol | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 183dd0aba..51fb95f70 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -72,16 +72,6 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { console2.log("Added Groth16 verifier to router with selector"); console2.logBytes4(selector); - IRiscZeroVerifier _blake3G16Verifier = deployBlake3Verifier(); - IRiscZeroSelectable blake3G16Selectable = IRiscZeroSelectable(address(_blake3G16Verifier)); - bytes4 blake3G16Selector = blake3G16Selectable.SELECTOR(); - // Only add the _blake3G16Verifier if not dev mode as otherwise we have added already - // the mock verifier in the previous steps. - if (!devMode()) { - verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); - console2.log("Added Blake3 Groth16 verifier to router with selector"); - console2.logBytes4(blake3G16Selector); - } // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. string memory setBuilderPath = @@ -180,18 +170,4 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { // Check for uncommitted changes warning checkUncommittedChangesWarning("Deployment"); } - - /// @notice Deploy either a test or fully verifying `Blake3Groth16Verifier` depending on `devMode()`. - function deployBlake3Verifier() internal returns (IRiscZeroVerifier) { - if (devMode()) { - // NOTE: Using a fixed selector of 0xFFFFFFFF for the selector of the mock verifier. - IRiscZeroVerifier _verifier = new RiscZeroMockVerifier(bytes4(0xFFFFFFFF)); - console2.log("Deployed RiscZeroMockVerifier to", address(_verifier)); - return _verifier; - } else { - IRiscZeroVerifier _verifier = new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); - console2.log("Deployed Blake3Groth16Verifier to", address(_verifier)); - return _verifier; - } - } } From aa03c7c636f2a2067187e4dabf40ae0e535d6275 Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 09:31:03 +0000 Subject: [PATCH 62/86] add ignore --- crates/boundless-cli/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 9ede0dd36..9317adf24 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -696,7 +696,7 @@ mod tests { } #[tokio::test] - // #[ignore = "runs a proof; slow without RISC0_DEV_MODE=1"] + #[ignore = "runs a proof; slow without RISC0_DEV_MODE=1"] async fn test_fulfill_blake3_groth16_selector() { let anvil = Anvil::new().spawn(); let ctx = create_test_ctx(&anvil).await.unwrap(); From 29f0262841b9f85d325326e9edb93b0a71e83c3d Mon Sep 17 00:00:00 2001 From: capossele Date: Sat, 15 Nov 2025 13:03:55 +0000 Subject: [PATCH 63/86] Revert "drop deployBlake3Verifier" This reverts commit d9971d5e1935b81e0fc38a279ae2bd602c98f09a. --- contracts/scripts/Deploy.s.sol | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 51fb95f70..183dd0aba 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -72,6 +72,16 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { console2.log("Added Groth16 verifier to router with selector"); console2.logBytes4(selector); + IRiscZeroVerifier _blake3G16Verifier = deployBlake3Verifier(); + IRiscZeroSelectable blake3G16Selectable = IRiscZeroSelectable(address(_blake3G16Verifier)); + bytes4 blake3G16Selector = blake3G16Selectable.SELECTOR(); + // Only add the _blake3G16Verifier if not dev mode as otherwise we have added already + // the mock verifier in the previous steps. + if (!devMode()) { + verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); + console2.log("Added Blake3 Groth16 verifier to router with selector"); + console2.logBytes4(blake3G16Selector); + } // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. string memory setBuilderPath = @@ -170,4 +180,18 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { // Check for uncommitted changes warning checkUncommittedChangesWarning("Deployment"); } + + /// @notice Deploy either a test or fully verifying `Blake3Groth16Verifier` depending on `devMode()`. + function deployBlake3Verifier() internal returns (IRiscZeroVerifier) { + if (devMode()) { + // NOTE: Using a fixed selector of 0xFFFFFFFF for the selector of the mock verifier. + IRiscZeroVerifier _verifier = new RiscZeroMockVerifier(bytes4(0xFFFFFFFF)); + console2.log("Deployed RiscZeroMockVerifier to", address(_verifier)); + return _verifier; + } else { + IRiscZeroVerifier _verifier = new Blake3Groth16Verifier(ControlID.CONTROL_ROOT, ControlID.BN254_CONTROL_ID); + console2.log("Deployed Blake3Groth16Verifier to", address(_verifier)); + return _verifier; + } + } } From 7fa3e30074d442bc772ca48aaec5caba9ce90ba4 Mon Sep 17 00:00:00 2001 From: capossele Date: Mon, 17 Nov 2025 10:42:15 +0000 Subject: [PATCH 64/86] fix is_blake3_groth16_selector --- crates/boundless-market/src/selector.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index cf913f71d..455ddee9d 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -241,10 +241,7 @@ pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { pub fn is_blake3_groth16_selector(selector: FixedBytes<4>) -> bool { let sel = SelectorExt::from_bytes(selector.into()); match sel { - Some(selector) => { - selector.get_type() == SelectorExtType::FakeReceipt - || selector.get_type() == SelectorExtType::Blake3Groth16 - } + Some(selector) => selector.get_type() == SelectorExtType::Blake3Groth16, None => false, } } From 62ba5e217f3b4beea486d2938763a1e92fa35df2 Mon Sep 17 00:00:00 2001 From: capossele Date: Mon, 17 Nov 2025 12:13:52 +0000 Subject: [PATCH 65/86] improve dev mode for blake3 groth16 --- contracts/scripts/Deploy.s.sol | 14 ++-- crates/boundless-market/src/contracts/mod.rs | 6 +- crates/boundless-market/src/selector.rs | 27 +++++++- crates/broker/src/submitter.rs | 10 ++- crates/broker/src/tests/e2e.rs | 73 +++++++++++++++++++- crates/test-utils/src/verifier.rs | 30 ++++++-- 6 files changed, 136 insertions(+), 24 deletions(-) diff --git a/contracts/scripts/Deploy.s.sol b/contracts/scripts/Deploy.s.sol index 183dd0aba..55c6daf71 100644 --- a/contracts/scripts/Deploy.s.sol +++ b/contracts/scripts/Deploy.s.sol @@ -75,13 +75,9 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { IRiscZeroVerifier _blake3G16Verifier = deployBlake3Verifier(); IRiscZeroSelectable blake3G16Selectable = IRiscZeroSelectable(address(_blake3G16Verifier)); bytes4 blake3G16Selector = blake3G16Selectable.SELECTOR(); - // Only add the _blake3G16Verifier if not dev mode as otherwise we have added already - // the mock verifier in the previous steps. - if (!devMode()) { - verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); - console2.log("Added Blake3 Groth16 verifier to router with selector"); - console2.logBytes4(blake3G16Selector); - } + verifierRouter.addVerifier(blake3G16Selector, _blake3G16Verifier); + console2.log("Added Blake3 Groth16 verifier to router with selector"); + console2.logBytes4(blake3G16Selector); // TODO: Create a more robust way of getting a URI for guests, and ensure that it is // in-sync with the configured image ID. string memory setBuilderPath = @@ -184,8 +180,8 @@ contract Deploy is BoundlessScriptBase, RiscZeroCheats { /// @notice Deploy either a test or fully verifying `Blake3Groth16Verifier` depending on `devMode()`. function deployBlake3Verifier() internal returns (IRiscZeroVerifier) { if (devMode()) { - // NOTE: Using a fixed selector of 0xFFFFFFFF for the selector of the mock verifier. - IRiscZeroVerifier _verifier = new RiscZeroMockVerifier(bytes4(0xFFFFFFFF)); + // NOTE: Using a fixed selector of 0xFFFF0000 for the selector of the mock verifier. + IRiscZeroVerifier _verifier = new RiscZeroMockVerifier(bytes4(0xFFFF0000)); console2.log("Deployed RiscZeroMockVerifier to", address(_verifier)); return _verifier; } else { diff --git a/crates/boundless-market/src/contracts/mod.rs b/crates/boundless-market/src/contracts/mod.rs index 627122993..8c6f07160 100644 --- a/crates/boundless-market/src/contracts/mod.rs +++ b/crates/boundless-market/src/contracts/mod.rs @@ -579,14 +579,16 @@ impl Requirements { /// Set the selector for a blake3 groth16 proof. /// /// This will set the selector to the appropriate value based on the current environment. - /// In dev mode, the selector will be set to `FakeReceipt`, otherwise it will be set + /// In dev mode, the selector will be set to `FakeBlake3Groth16`, otherwise it will be set /// to the latest Blake3Groth16 selector. #[cfg(not(target_os = "zkvm"))] pub fn with_blake3_groth16_proof(self) -> Self { use crate::selector::SelectorExt; match crate::util::is_dev_mode() { - true => Self { selector: FixedBytes::from(SelectorExt::FakeReceipt as u32), ..self }, + true => { + Self { selector: FixedBytes::from(SelectorExt::FakeBlake3Groth16 as u32), ..self } + } false => Self { selector: FixedBytes::from(SelectorExt::blake3_groth16_latest() as u32), ..self diff --git a/crates/boundless-market/src/selector.rs b/crates/boundless-market/src/selector.rs index 455ddee9d..5f6fe383d 100644 --- a/crates/boundless-market/src/selector.rs +++ b/crates/boundless-market/src/selector.rs @@ -51,6 +51,8 @@ pub enum SelectorExtType { SetVerifier, /// Blake3 Groth16 selector. Blake3Groth16, + /// Fake Blake3 Groth16 selector + FakeBlake3Groth16, } #[repr(u32)] @@ -60,6 +62,8 @@ pub enum SelectorExtType { pub enum SelectorExt { /// A fake receipt selector used for testing and development. FakeReceipt = 0xFFFFFFFF, + /// A fake Blake3 Groth16 proof selector. + FakeBlake3Groth16 = 0xFFFF0000, /// Groth16 proof selector version 3.0. Groth16V3_0 = Selector::Groth16V3_0 as u32, /// Set verifier selector version 0.9. @@ -80,6 +84,7 @@ impl TryFrom for SelectorExt { fn try_from(value: u32) -> Result { match value { 0xFFFFFFFF => Ok(SelectorExt::FakeReceipt), + 0xFFFF0000 => Ok(SelectorExt::FakeBlake3Groth16), 0x73c457ba => Ok(SelectorExt::Groth16V3_0), 0x242f9d5b => Ok(SelectorExt::SetVerifierV0_9), 0x62f049f6 => Ok(SelectorExt::Blake3Groth16V0_1), @@ -122,6 +127,7 @@ impl SelectorExt { pub fn get_type(self) -> SelectorExtType { match self { SelectorExt::FakeReceipt => SelectorExtType::FakeReceipt, + SelectorExt::FakeBlake3Groth16 => SelectorExtType::FakeBlake3Groth16, SelectorExt::Groth16V3_0 => SelectorExtType::Groth16, SelectorExt::SetVerifierV0_9 => SelectorExtType::SetVerifier, SelectorExt::Blake3Groth16V0_1 => SelectorExtType::Blake3Groth16, @@ -167,7 +173,11 @@ impl Default for SupportedSelectors { ); if is_dev_mode() { supported_selectors = supported_selectors - .with_selector(FixedBytes::from(SelectorExt::FakeReceipt as u32), ProofType::Any); + .with_selector(FixedBytes::from(SelectorExt::FakeReceipt as u32), ProofType::Any) + .with_selector( + FixedBytes::from(SelectorExt::FakeBlake3Groth16 as u32), + ProofType::Blake3Groth16, + ) } supported_selectors } @@ -241,7 +251,10 @@ pub fn is_groth16_selector(selector: FixedBytes<4>) -> bool { pub fn is_blake3_groth16_selector(selector: FixedBytes<4>) -> bool { let sel = SelectorExt::from_bytes(selector.into()); match sel { - Some(selector) => selector.get_type() == SelectorExtType::Blake3Groth16, + Some(selector) => { + selector.get_type() == SelectorExtType::FakeBlake3Groth16 + || selector.get_type() == SelectorExtType::Blake3Groth16 + } None => false, } } @@ -264,5 +277,15 @@ mod tests { fn test_is_groth16_selector() { let selector = FixedBytes::from(SelectorExt::groth16_latest() as u32); assert!(is_groth16_selector(selector)); + let fake_selector = FixedBytes::from(SelectorExt::FakeReceipt as u32); + assert!(is_groth16_selector(fake_selector)); + } + + #[test] + fn test_is_blake3_groth16_selector() { + let selector = FixedBytes::from(SelectorExt::blake3_groth16_latest() as u32); + assert!(is_blake3_groth16_selector(selector)); + let fake_selector = FixedBytes::from(SelectorExt::FakeBlake3Groth16 as u32); + assert!(is_blake3_groth16_selector(fake_selector)); } } diff --git a/crates/broker/src/submitter.rs b/crates/broker/src/submitter.rs index 6202f5aae..e469d8dcc 100644 --- a/crates/broker/src/submitter.rs +++ b/crates/broker/src/submitter.rs @@ -44,7 +44,7 @@ use risc0_zkvm::{ use crate::{ config::ConfigLock, db::DbObj, - impl_coded_debug, now_timestamp, + impl_coded_debug, is_dev_mode, now_timestamp, provers::ProverObj, task::{RetryRes, RetryTask, SupervisorErr}, Batch, FulfillmentType, Order, @@ -184,8 +184,14 @@ where let blake3_receipt: Blake3Groth16Receipt = bincode::deserialize(&blake3_receipt) .context("Failed to deserialize Blake3 Groth16 receipt")?; - let encoded_seal = encode_seal(&blake3_receipt.into()) + let mut encoded_seal = encode_seal(&blake3_receipt.into()) .context("Failed to encode Blake3 Groth16 receipt seal")?; + if is_dev_mode() { + // In dev mode, we use the fake selector for Blake3 Groth16 proofs. + let fake_selector = &[0xFFu8, 0xFF, 0x00, 0x00]; + // Replace the first 4 bytes with the fake selector + encoded_seal.splice(0..4, fake_selector.iter().cloned()); + } Ok(encoded_seal) } diff --git a/crates/broker/src/tests/e2e.rs b/crates/broker/src/tests/e2e.rs index 172417b43..887f445cc 100644 --- a/crates/broker/src/tests/e2e.rs +++ b/crates/broker/src/tests/e2e.rs @@ -30,7 +30,7 @@ use boundless_market::{ hit_points::default_allowance, Callback, FulfillmentData, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, }, - selector::{is_groth16_selector, ProofType}, + selector::{is_blake3_groth16_selector, is_groth16_selector, ProofType}, storage::{MockStorageProvider, StorageProvider}, Deployment, }; @@ -73,6 +73,12 @@ fn generate_request( if proof_type == ProofType::Groth16 { requirements = requirements.with_groth16_proof(); + } else if proof_type == ProofType::Blake3Groth16 { + requirements = requirements.with_blake3_groth16_proof(); + let blake3_claim_digest = + blake3_groth16::Blake3Groth16ReceiptClaim::ok(ECHO_ID, [255u8; 32]).digest(); + requirements = + requirements.with_predicate(Predicate::claim_digest_match(blake3_claim_digest)); } if let Some(callback) = callback { requirements = requirements.with_callback(callback); @@ -82,7 +88,7 @@ fn generate_request( requirements, image_url, input.unwrap_or_else(|| { - RequestInput::builder().write_slice(&[0x41, 0x41, 0x41, 0x41]).build_inline().unwrap() + RequestInput::builder().write_slice(&[255u8; 32]).build_inline().unwrap() }), offer.unwrap_or(Offer { minPrice: parse_ether("0.02").unwrap(), @@ -453,6 +459,69 @@ async fn e2e_with_selector() { .await; } +#[tokio::test] +#[traced_test] +async fn e2e_with_blake3_groth16_selector() { + // Setup anvil + let anvil = Anvil::new().spawn(); + + // Setup signers / providers + let ctx = create_test_ctx(&anvil).await.unwrap(); + + // Deposit prover / customer balances + ctx.prover_market + .deposit_collateral_with_permit(default_allowance(), &ctx.prover_signer) + .await + .unwrap(); + ctx.customer_market.deposit(utils::parse_ether("0.5").unwrap()).await.unwrap(); + + // Start broker + let config = new_config(1).await; + let args = broker_args( + config.path().to_path_buf(), + ctx.deployment.clone(), + anvil.endpoint_url(), + ctx.prover_signer, + ); + let broker = Broker::new(args, ctx.prover_provider).await.unwrap(); + + // Provide URL for ECHO program + let storage = MockStorageProvider::start(); + let image_url = storage.upload_program(ECHO_ELF).await.unwrap(); + + // Submit an order + let request = generate_request( + ctx.customer_market.index_from_nonce().await.unwrap(), + &ctx.customer_signer.address(), + ProofType::Blake3Groth16, + image_url, + None, + None, + None, + None, + ); + + run_with_broker(broker, async move { + // Submit the request + ctx.customer_market.submit_request(&request, &ctx.customer_signer).await.unwrap(); + + // Wait for fulfillment + let fulfillment = ctx + .customer_market + .wait_for_request_fulfillment( + U256::from(request.id), + Duration::from_secs(1), + request.expires_at(), + ) + .await + .unwrap(); + let seal = fulfillment.seal; + let selector = FixedBytes(seal[0..4].try_into().unwrap()); + assert!(is_blake3_groth16_selector(selector)); + }) + .await; +} + #[tokio::test] #[traced_test] #[ignore = "runs a proof; requires BONSAI if RISC0_DEV_MODE=FALSE"] diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index 4fa156dd9..b3672e00b 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -36,6 +36,16 @@ pub async fn deploy_mock_verifier(deployer_provider: P) -> Result( + deployer_provider: P, +) -> Result
{ + let instance = + RiscZeroMockVerifier::deploy(deployer_provider, FixedBytes([0xFFu8, 0xFF, 0x00, 0x00])) + .await + .context("failed to deploy RiscZeroMockVerifier")?; + Ok(*instance.address()) +} + /// Deploy a RiscZeroGroth16Verifier contract pub async fn deploy_groth16_verifier( deployer_provider: P, @@ -133,8 +143,11 @@ pub async fn setup_verifiers( RiscZeroVerifierRouterInstance::new(verifier_router, deployer_provider.clone()); // Deploying the blake3 groth16 verifier - match is_dev_mode() { - true => println!("Skipping Blake3Groth16 verifier deployment in dev mode"), + let (blake_groth16_verifier, blake_groth16_selector) = match is_dev_mode() { + true => ( + deploy_mock_blake3_groth16_verifier(&deployer_provider).await?, + [0xFFu8, 0xFF, 0x00, 0x00], + ), false => { let control_root = ALLOWED_CONTROL_ROOT; let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; @@ -152,12 +165,9 @@ pub async fn setup_verifiers( let b3_groth16_selector = verifier_parameters_digest.as_bytes()[..4].try_into()?; - let call = &router_instance - .addVerifier(b3_groth16_selector, b3_groth16_verifier) - .from(deployer_address); - call.send().await?.get_receipt().await?; + (b3_groth16_verifier, b3_groth16_selector) } - } + }; // Add groth16 verifier to router let call = &router_instance @@ -174,5 +184,11 @@ pub async fn setup_verifiers( .from(deployer_address); call.send().await?.get_receipt().await?; + // Add blake3 groth16 verifier to router + let call = &router_instance + .addVerifier(blake_groth16_selector.into(), blake_groth16_verifier) + .from(deployer_address); + call.send().await?.get_receipt().await?; + Ok((verifier_router, set_verifier, groth16_verifier)) } From 5702040237dfabe098e64117c80dcf99b3344437 Mon Sep 17 00:00:00 2001 From: capossele Date: Tue, 18 Nov 2025 16:28:47 +0000 Subject: [PATCH 66/86] add allow_local_file_storage --- crates/broker/src/lib.rs | 9 +++++++++ crates/broker/src/storage.rs | 9 ++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/crates/broker/src/lib.rs b/crates/broker/src/lib.rs index 251388a54..b0fb8db89 100644 --- a/crates/broker/src/lib.rs +++ b/crates/broker/src/lib.rs @@ -1213,6 +1213,15 @@ pub(crate) fn is_dev_mode() -> bool { .is_some() } +/// Returns `true` if the `ALLOW_LOCAL_FILE_STORAGE` environment variable is enabled. +pub(crate) fn allow_local_file_storage() -> bool { + std::env::var("ALLOW_LOCAL_FILE_STORAGE") + .ok() + .map(|x| x.to_lowercase()) + .filter(|x| x == "1" || x == "true" || x == "yes") + .is_some() +} + #[cfg(feature = "test-utils")] pub mod test_utils { use alloy::network::Ethereum; diff --git a/crates/broker/src/storage.rs b/crates/broker/src/storage.rs index b578bdeb0..f33cd4695 100644 --- a/crates/broker/src/storage.rs +++ b/crates/broker/src/storage.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use crate::{config::ConfigLock, errors::CodedError}; +use crate::{allow_local_file_storage, config::ConfigLock, errors::CodedError, is_dev_mode}; use alloy::primitives::bytes::Buf; use anyhow::{Context, Result}; use async_trait::async_trait; @@ -82,10 +82,9 @@ pub(crate) async fn create_uri_handler( match uri.scheme() { "file" => { - // TODO(ec2): uncomment this. - // if !is_dev_mode() { - // return Err(StorageErr::UnsupportedScheme("file".to_string())); - // } + if !is_dev_mode() && !allow_local_file_storage() { + return Err(StorageErr::UnsupportedScheme("file".to_string())); + } let max_size = if skip_max_size_check { usize::MAX } else { From 7cae37c23154a459334242fefbcce1c4eebf4d60 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 18 Nov 2025 11:42:56 -0500 Subject: [PATCH 67/86] update the setup xtask to use upstream r0-to-bitvm2 --- xtask/src/setup_blake3_groth16.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xtask/src/setup_blake3_groth16.rs b/xtask/src/setup_blake3_groth16.rs index 8308b728d..20ee79886 100644 --- a/xtask/src/setup_blake3_groth16.rs +++ b/xtask/src/setup_blake3_groth16.rs @@ -20,8 +20,8 @@ use xshell::{cmd, Shell}; const CIRCOM_WITNESSCALC_URL: &str = "https://github.com/iden3/circom-witnesscalc.git"; const CIRCOM_WITNESSCALC_COMMIT: &str = "b7ff0ffd9c72c8f60896ce131ee98a35aba96009"; // 0.2.1 -const RISC0_TO_BITVM2_URL: &str = "https://github.com/ec2/risc0-to-bitvm2-boundless.git"; -const RISC0_TO_BITVM2_COMMIT: &str = "b47483ae7ff2bbfbf6d4448bac76aa26afc80e47"; +const RISC0_TO_BITVM2_URL: &str = "https://github.com/chainwayxyz/risc0-to-bitvm2-boundless.git"; +const RISC0_TO_BITVM2_COMMIT: &str = "efc448ef016cef2a908d97e69b9d3d1f2b2cfdb5"; const CIRCOMLIB_URL: &str = "https://github.com/iden3/circomlib.git"; const CIRCOMLIB_COMMIT: &str = "35e54ea21da3e8762557234298dbb553c175ea8d"; From 642530ffa5cfa60f4f8cd12c7c998e4c8e6c99ba Mon Sep 17 00:00:00 2001 From: Angelo Capossele Date: Tue, 18 Nov 2025 16:58:25 +0000 Subject: [PATCH 68/86] add sanity checks (#1335) --- .../src/request_builder/finalizer.rs | 12 +++++++++++- .../src/request_builder/requirements_layer.rs | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/boundless-market/src/request_builder/finalizer.rs b/crates/boundless-market/src/request_builder/finalizer.rs index 75e428f9a..4b135c09a 100644 --- a/crates/boundless-market/src/request_builder/finalizer.rs +++ b/crates/boundless-market/src/request_builder/finalizer.rs @@ -15,7 +15,8 @@ use super::{Adapt, Layer, RequestParams}; use crate::{ contracts::{ - FulfillmentData, Offer, Predicate, ProofRequest, RequestId, RequestInput, Requirements, + FulfillmentData, Offer, Predicate, PredicateType, ProofRequest, RequestId, RequestInput, + Requirements, }, selector::is_blake3_groth16_selector, util::now_timestamp, @@ -136,6 +137,15 @@ impl Adapt for RequestParams { (Some(journal), Some(image_id)) => { tracing::debug!("Evaluating journal and image id against predicate "); let eval_data = if is_blake3_groth16_selector(requirements.selector) { + if requirements.predicate.predicateType != PredicateType::ClaimDigestMatch { + bail!("Blake3Groth16 proofs require a ClaimDigestMatch predicate"); + } + if journal.bytes.len() != 32 { + bail!( + "Blake3Groth16 proofs require a 32-byte journal, got {} bytes", + journal.bytes.len() + ); + } // It is not possible to fulfill a blake3 groth16 request with fulfillment data FulfillmentData::None } else { diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index f2bcd2dd8..571cc4bed 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -161,6 +161,12 @@ impl Layer<(Digest, &Journal, &RequirementParams)> for RequirementsLayer { if let Some(selector) = ¶ms.selector { if is_blake3_groth16_selector(*selector) { + if journal.bytes.len() != 32 { + anyhow::bail!( + "Blake3Groth16 proofs require a 32-byte journal, got {} bytes", + journal.bytes.len() + ); + } predicate = Some(params.predicate.clone().unwrap_or_else(|| { let blake3_claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok( image_id, From 9c617c5e1b692150ba40728e189ed0ed5f45c677 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 18 Nov 2025 17:18:29 -0500 Subject: [PATCH 69/86] xtask for publishing artifacts to R2/S3 --- Cargo.lock | 63 ++++++ xtask/Cargo.toml | 13 +- xtask/src/main.rs | 5 + xtask/src/upload_blake3_groth16_artifacts.rs | 207 +++++++++++++++++++ 4 files changed, 284 insertions(+), 4 deletions(-) create mode 100644 xtask/src/upload_blake3_groth16_artifacts.rs diff --git a/Cargo.lock b/Cargo.lock index 46184fcff..98b5a1acc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1442,6 +1442,22 @@ dependencies = [ "tempfile", ] +[[package]] +name = "astral-tokio-tar" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec179a06c1769b1e42e1e2cbe74c7dcdb3d6383c838454d063eaac5bbb7ebbe5" +dependencies = [ + "filetime", + "futures-core", + "libc", + "portable-atomic", + "rustc-hash", + "tokio", + "tokio-stream", + "xattr", +] + [[package]] name = "async-attributes" version = "1.1.2" @@ -1475,6 +1491,19 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-compression" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93c1f86859c1af3d514fa19e8323147ff10ea98684e6c7b307912509f50e67b2" +dependencies = [ + "compression-codecs", + "compression-core", + "futures-core", + "pin-project-lite", + "tokio", +] + [[package]] name = "async-executor" version = "1.13.3" @@ -3519,6 +3548,22 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "compression-codecs" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680dc087785c5230f8e8843e2e57ac7c1c90488b6a91b88caa265410568f441b" +dependencies = [ + "compression-core", + "liblzma", +] + +[[package]] +name = "compression-core" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9b614a5787ef0c8802a55766480563cb3a93b435898c422ed2a359cf811582" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -12343,6 +12388,16 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix 1.1.2", +] + [[package]] name = "xmlparser" version = "0.13.6" @@ -12368,12 +12423,20 @@ checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547" name = "xtask" version = "1.2.0" dependencies = [ + "anyhow", + "astral-tokio-tar", + "async-compression", + "aws-config", + "aws-credential-types", + "aws-sdk-s3", "blake3_groth16", "boundless-market", "clap", "guest-util", "hex", + "liblzma", "memmap2 0.9.8", + "num_cpus", "regex", "risc0-circuit-recursion", "risc0-groth16-sys", diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 6a29b4cdd..37783cc6d 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -10,21 +10,26 @@ default = [] cuda = ["dep:risc0-groth16-sys", "blake3_groth16/cuda"] [dependencies] +anyhow = "1.0" +async-compression = { version = "0.4", default-features = false, features = ["lzma", "tokio"] } +astral-tokio-tar = { version = "0.5" } +aws-config = "1.0" +aws-sdk-s3 = { version = "1.0" } +aws-credential-types = "1.0" blake3_groth16 = { path = "../blake3_groth16", features = ["prove"] } boundless-market = { path = "../crates/boundless-market" } clap = { version = "4.5", features = ["derive", "env"] } guest-util = { workspace = true } hex = { workspace = true } +liblzma = { version = "0.4", features = ["static"] } memmap2 = { version = "0.9", optional = true } regex = "1" risc0-circuit-recursion = { workspace = true } -risc0-groth16-sys = { workspace = true, optional = true, features = [ - "cuda", - "setup", -] } +risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } risc0-zkvm = { workspace = true, features = ["prove"] } rlimit = "0.10.2" tokio = { workspace = true } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" +num_cpus = "1.0" diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 293150157..58a134051 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -16,6 +16,7 @@ use clap::{Parser, Subcommand}; mod bootstrap_blake3_groth16; mod setup_blake3_groth16; +mod upload_blake3_groth16_artifacts; #[derive(Parser)] struct Cli { @@ -27,6 +28,9 @@ struct Cli { enum Commands { SetupBlake3Groth16(crate::setup_blake3_groth16::SetupBlake3Groth16), BootstrapBlake3Groth16(crate::bootstrap_blake3_groth16::BootstrapBlake3Groth16), + UploadBlake3Groth16Artifacts( + crate::upload_blake3_groth16_artifacts::UploadBlake3Groth16Artifacts, + ), } impl Commands { @@ -34,6 +38,7 @@ impl Commands { match self { Commands::SetupBlake3Groth16(cmd) => cmd.run(), Commands::BootstrapBlake3Groth16(cmd) => cmd.run().await, + Commands::UploadBlake3Groth16Artifacts(cmd) => cmd.run().await, } } } diff --git a/xtask/src/upload_blake3_groth16_artifacts.rs b/xtask/src/upload_blake3_groth16_artifacts.rs new file mode 100644 index 000000000..32ebb1462 --- /dev/null +++ b/xtask/src/upload_blake3_groth16_artifacts.rs @@ -0,0 +1,207 @@ +// Copyright 2025 Boundless Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use anyhow::{Context, Result}; +use aws_config::BehaviorVersion; +use aws_credential_types::Credentials; +use aws_sdk_s3::config::Region; +use aws_sdk_s3::primitives::ByteStream; +use aws_sdk_s3::Client; +use clap::Parser; +use tokio::fs::File; +use tokio::io::AsyncWriteExt; +use tokio_tar::Builder; + +#[derive(Debug, Parser)] +pub struct UploadBlake3Groth16Artifacts { + /// blake3-groth16 setup directory + #[arg(long, env)] + blake3_groth16_setup_dir: std::path::PathBuf, + + /// S3-compatible bucket name + #[arg(long)] + bucket: String, + + /// S3-compatible endpoint URL (optional as not needed if using AWS S3) + #[arg(long)] + endpoint: Option, + + /// S3-compatible region (optional, defaults to us-east-1) + #[arg(long)] + region: Option, + + /// Access key ID + #[arg(long, env)] + access_key_id: Option, + + /// Secret access key + #[arg(long, env)] + secret_access_key: Option, + + /// Is R2 bucket + #[arg(long)] + is_r2_bucket: bool, + + #[arg(long, default_value = "6")] + /// XZ compression level (1-9) + compression_level: i32, + + #[arg(long, default_value_t = false)] + publish: bool, +} + +const ARCHIVE_NAME: &str = "blake3_groth16_artifacts.tar.xz"; +const FILES_TO_ARCHIVE: &[&str] = &[ + "verify_for_guest_final.zkey", + "verify_for_guest_graph.bin", + "fuzzed_msm_results.bin", + "preprocessed_coeffs.bin", +]; + +impl UploadBlake3Groth16Artifacts { + pub async fn run(&self) { + let tar_xz_path = self.blake3_groth16_setup_dir.join(ARCHIVE_NAME); + + let file = self.create_tar_xz(tar_xz_path.clone()).await.unwrap(); + tracing::info!( + "Created tar.xz at {} ({} bytes)", + tar_xz_path.display(), + file.metadata().await.unwrap().len() + ); + if self.publish { + self.publish(tar_xz_path).await.unwrap(); + } else { + tracing::info!("Skipping upload as --publish not set"); + } + } + + async fn publish(&self, tar_xz_path: impl AsRef) -> Result<()> { + let uploader = BucketUploader::new( + self.is_r2_bucket, + self.endpoint.clone(), + self.access_key_id.clone(), + self.secret_access_key.clone(), + None, + self.bucket.clone(), + self.region.clone(), + ) + .await + .context("Failed to create bucket uploader")?; + + tracing::info!("Uploading to bucket: {}", &uploader.bucket); + + let byte_stream = ByteStream::read_from() + .path(tar_xz_path) + .build() + .await + .context("Failed to create s3 byte stream")?; + + uploader + .client + .put_object() + .bucket(&uploader.bucket) + .key(format!("v3/proving/{}", ARCHIVE_NAME)) + .body(byte_stream) + .send() + .await + .context("Failed to upload artifacts to S3 bucket")?; + + tracing::info!("Uploaded artifacts to bucket: {}", &uploader.bucket); + Ok(()) + } + + async fn create_tar_xz(&self, output_path: impl AsRef) -> Result { + tracing::info!( + "Creating tar.xz at {} with compression level {}", + output_path.as_ref().display(), + self.compression_level + ); + let level = async_compression::Level::Precise(self.compression_level); + let output_file = File::create(output_path).await?; + + let writer = async_compression::tokio::write::LzmaEncoder::with_quality(output_file, level); + + let mut tar_builder = Builder::new(writer); + + for file_path in FILES_TO_ARCHIVE { + tracing::info!("Adding file to tar.xz: {}", file_path); + tar_builder + .append_file( + format!("blake3_groth16_artifacts/{}", file_path), + &mut File::open(self.blake3_groth16_setup_dir.join(file_path)).await?, + ) + .await?; + } + tar_builder.finish().await?; + let mut writer = tar_builder.into_inner().await?; + writer.shutdown().await?; + + Ok(writer.into_inner()) + } +} + +struct BucketUploader { + client: Client, + bucket: String, +} + +impl BucketUploader { + async fn new( + is_r2_bucket: bool, + endpoint: Option, + access_key_id: Option, + secret_access_key: Option, + session_token: Option, + bucket: String, + region: Option, + ) -> Result { + let mut credentials: Option = None; + if is_r2_bucket { + credentials = Some(Credentials::new( + access_key_id.unwrap(), + secret_access_key.unwrap(), + None, + None, + "R2", + )); + } else if access_key_id.is_some() && secret_access_key.is_some() { + credentials = Some(Credentials::new( + access_key_id.unwrap(), + secret_access_key.unwrap(), + session_token, + None, + "static", + )); + } + + let mut config_builder = aws_config::defaults(BehaviorVersion::latest()); + + if let Some(credentials) = credentials { + config_builder = config_builder.credentials_provider(credentials); + } + + if let Some(endpoint_url) = endpoint { + config_builder = config_builder.endpoint_url(endpoint_url); + } + + if let Some(region_value) = region { + config_builder = config_builder.region(Region::new(region_value)); + } + + let config = config_builder.load().await; + let client = Client::new(&config); + + Ok(Self { client, bucket }) + } +} From bf1e6790c7f645aed994c5b1a197d845134324ac Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 18 Nov 2025 17:30:46 -0500 Subject: [PATCH 70/86] fix chainway repo link --- xtask/src/setup_blake3_groth16.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xtask/src/setup_blake3_groth16.rs b/xtask/src/setup_blake3_groth16.rs index 20ee79886..426fbdd13 100644 --- a/xtask/src/setup_blake3_groth16.rs +++ b/xtask/src/setup_blake3_groth16.rs @@ -20,7 +20,7 @@ use xshell::{cmd, Shell}; const CIRCOM_WITNESSCALC_URL: &str = "https://github.com/iden3/circom-witnesscalc.git"; const CIRCOM_WITNESSCALC_COMMIT: &str = "b7ff0ffd9c72c8f60896ce131ee98a35aba96009"; // 0.2.1 -const RISC0_TO_BITVM2_URL: &str = "https://github.com/chainwayxyz/risc0-to-bitvm2-boundless.git"; +const RISC0_TO_BITVM2_URL: &str = "https://github.com/chainwayxyz/risc0-to-bitvm2.git"; const RISC0_TO_BITVM2_COMMIT: &str = "efc448ef016cef2a908d97e69b9d3d1f2b2cfdb5"; const CIRCOMLIB_URL: &str = "https://github.com/iden3/circomlib.git"; From a1cb4c5e605efd4746741e7e2ad8eb4f8afe4009 Mon Sep 17 00:00:00 2001 From: capossele Date: Wed, 19 Nov 2025 10:51:50 +0000 Subject: [PATCH 71/86] sort --- xtask/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index 37783cc6d..dcc3354f2 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -11,11 +11,11 @@ cuda = ["dep:risc0-groth16-sys", "blake3_groth16/cuda"] [dependencies] anyhow = "1.0" -async-compression = { version = "0.4", default-features = false, features = ["lzma", "tokio"] } astral-tokio-tar = { version = "0.5" } +async-compression = { version = "0.4", default-features = false, features = ["lzma", "tokio"] } aws-config = "1.0" -aws-sdk-s3 = { version = "1.0" } aws-credential-types = "1.0" +aws-sdk-s3 = { version = "1.0" } blake3_groth16 = { path = "../blake3_groth16", features = ["prove"] } boundless-market = { path = "../crates/boundless-market" } clap = { version = "4.5", features = ["derive", "env"] } @@ -23,6 +23,7 @@ guest-util = { workspace = true } hex = { workspace = true } liblzma = { version = "0.4", features = ["static"] } memmap2 = { version = "0.9", optional = true } +num_cpus = "1.0" regex = "1" risc0-circuit-recursion = { workspace = true } risc0-groth16-sys = { workspace = true, optional = true, features = ["cuda", "setup"] } @@ -32,4 +33,3 @@ tokio = { workspace = true } tracing = { workspace = true } tracing-subscriber = { version = "0.3", features = ["env-filter"] } xshell = "0.2" -num_cpus = "1.0" From 6487c09e24ca1f4d530e4c4035d93aadb1634bfe Mon Sep 17 00:00:00 2001 From: Eric Tu <6364934+ec2@users.noreply.github.com> Date: Thu, 20 Nov 2025 11:47:01 -0500 Subject: [PATCH 72/86] Update crates/broker/src/proving.rs Co-authored-by: Angelo Capossele --- crates/broker/src/proving.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index a32f8bfd9..6c42f833b 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -117,7 +117,7 @@ impl ProvingService { .prover .compress_blake3_groth16(stark_proof_id) .await - .context("Failed to shrink proof")?, + .context("Failed to compress blake3 groth16 proof")?, CompressionType::None => { unreachable!("Compression type should not be None here") } From b7f1f9ede45c7cd4f964b8fb75194862796e4eab Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 11:00:00 -0500 Subject: [PATCH 73/86] cargo locks --- examples/composition/Cargo.lock | 2 ++ examples/counter-with-callback/Cargo.lock | 2 ++ examples/counter/Cargo.lock | 2 ++ examples/smart-contract-requestor/Cargo.lock | 2 ++ 4 files changed, 8 insertions(+) diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 2c9186a11..5fe0ae61f 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -2235,6 +2235,7 @@ dependencies = [ "time", "tokio", "tokio-tungstenite", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", @@ -2326,6 +2327,7 @@ dependencies = [ "tokio", "tokio-util", "toml", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index 4ce22cf67..c72704652 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -2235,6 +2235,7 @@ dependencies = [ "time", "tokio", "tokio-tungstenite", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", @@ -2326,6 +2327,7 @@ dependencies = [ "tokio", "tokio-util", "toml", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 29419069d..36e4b06f7 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -2253,6 +2253,7 @@ dependencies = [ "time", "tokio", "tokio-tungstenite", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", @@ -2344,6 +2345,7 @@ dependencies = [ "tokio", "tokio-util", "toml", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index 430c39873..6b7a25a0c 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -2235,6 +2235,7 @@ dependencies = [ "time", "tokio", "tokio-tungstenite", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", @@ -2326,6 +2327,7 @@ dependencies = [ "tokio", "tokio-util", "toml", + "tower", "tracing", "tracing-subscriber 0.3.20", "url", From 5bfc81c44fcd1aa12929ae97cf324ba1678843af Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 11:26:40 -0500 Subject: [PATCH 74/86] update blake3_groth16 cargo toml --- blake3_groth16/Cargo.toml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 6a16e8fa9..81a2615ea 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -8,12 +8,7 @@ repository = { workspace = true } [features] default = [] prove = ["risc0-zkvm/prove", "dep:circom-witnesscalc"] -cuda = [ - "prove", - "risc0-zkvm/cuda", - "risc0-groth16/cuda", - "dep:risc0-groth16-sys", -] +cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] [dependencies] anyhow = { workspace = true } @@ -33,7 +28,7 @@ derive_more = { workspace = true } hex = { workspace = true } num-bigint = { version = "0.4", features = ["std"] } num-traits = "0.2.19" -risc0-binfmt = { version = "3.0.2", default-features = false } +risc0-binfmt = { workspace = true, default-features = false } risc0-circuit-recursion = { workspace = true } risc0-core = { workspace = true } risc0-groth16 = { workspace = true } From 1cc3170bab3302c66af8415ed995619c79a7e2eb Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 11:32:12 -0500 Subject: [PATCH 75/86] use r0 seal_to_json --- blake3_groth16/src/lib.rs | 3 +- blake3_groth16/src/prove.rs | 3 +- blake3_groth16/src/seal_to_json.rs | 25831 --------------------------- 3 files changed, 2 insertions(+), 25835 deletions(-) delete mode 100644 blake3_groth16/src/seal_to_json.rs diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 44b2e050d..4c6224736 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -24,8 +24,7 @@ use risc0_zkvm::ProverOpts; #[cfg(feature = "prove")] mod prove; pub mod receipt; -#[cfg(feature = "prove")] -mod seal_to_json; + pub mod verify; /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. diff --git a/blake3_groth16/src/prove.rs b/blake3_groth16/src/prove.rs index d28e091e4..234dbeaa2 100644 --- a/blake3_groth16/src/prove.rs +++ b/blake3_groth16/src/prove.rs @@ -17,12 +17,11 @@ use std::path::Path; use anyhow::{Context, Result}; use num_bigint::BigUint; use num_traits::Num; -use risc0_groth16::ProofJson as Groth16ProofJson; +use risc0_groth16::{prove::to_json as seal_to_json, ProofJson as Groth16ProofJson}; use risc0_zkvm::sha::Digestible; use risc0_zkvm::{ProverOpts, ReceiptClaim, SuccinctReceipt}; use tempfile::tempdir; -use crate::seal_to_json::seal_to_json; #[cfg(feature = "cuda")] pub(crate) mod cuda; #[cfg(not(feature = "cuda"))] diff --git a/blake3_groth16/src/seal_to_json.rs b/blake3_groth16/src/seal_to_json.rs deleted file mode 100644 index 94c0fab86..000000000 --- a/blake3_groth16/src/seal_to_json.rs +++ /dev/null @@ -1,25831 +0,0 @@ -// Copyright 2025 RISC Zero, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// TODO: Drop in replacement until https://github.com/risc0/risc0/pull/3370 gets backported. - -use std::fmt::Write; - -use anyhow::{Context, Result}; -use num_bigint::BigUint; -use num_traits::Num; -use risc0_core::field::baby_bear::BabyBearElem; -use risc0_zkp::core::{ - digest::{Digest, DIGEST_WORDS}, - hash::poseidon_254::digest_to_fr, -}; - -// Convert a recursion VM seal (i.e. succinct receipt) into a JSON format compatible with the -// `stark_verify` witness generator. -pub(crate) fn seal_to_json(seal_bytes: &[u8]) -> Result { - let mut json = String::new(); - - let mut iop = vec![0u32; K_SEAL_WORDS]; - iop.copy_from_slice(bytemuck::cast_slice(seal_bytes)); - - writeln!(json, "{{\n \"iop\" : [")?; - - let mut pos = 0; - for seal_type in K_SEAL_TYPES.iter().take(K_SEAL_ELEMS) { - if pos != 0 { - writeln!(json, ",")?; - } - match seal_type { - IopType::Fp => { - let value = BabyBearElem::new_raw(iop[pos]).as_u32(); - pos += 1; - writeln!(json, " \"{value}\"")?; - } - _ => { - let digest = Digest::try_from(&iop[pos..pos + DIGEST_WORDS])?; - let value = digest_to_decimal(&digest)?; - pos += 8; - writeln!(json, " \"{value}\"")?; - } - } - } - write!(json, " ]\n}}")?; - - Ok(json) -} - -fn digest_to_decimal(digest: &Digest) -> Result { - to_decimal(&format!("{:?}", digest_to_fr(digest))).context("digest_to_decimal failed") -} - -fn to_decimal(s: &str) -> Option { - s.strip_prefix("Fr(0x") - .and_then(|s| s.strip_suffix(')')) - .and_then(|stripped| BigUint::from_str_radix(stripped, 16).ok()) - .map(|n| n.to_str_radix(10)) -} - -pub(crate) const K_SEAL_WORDS: usize = 55667; -pub(crate) const K_SEAL_ELEMS: usize = 25749; - -pub(crate) enum IopType { - Fp, - Digest, -} - -pub(crate) static K_SEAL_TYPES: [IopType; K_SEAL_ELEMS] = [ - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Digest, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Fp, - IopType::Digest, - IopType::Digest, - IopType::Digest, -]; From 900f2741e6a09eb927819bed7b2a0eb21ff3a802 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 12:15:39 -0500 Subject: [PATCH 76/86] Attempt to minimize lock file changes by target gating proving to not zkvm --- Cargo.lock | 25 --------- blake3_groth16/Cargo.toml | 54 ++++++++++---------- blake3_groth16/src/lib.rs | 13 +++-- blake3_groth16/src/receipt.rs | 1 - blake3_groth16/src/verify.rs | 2 +- examples/composition/Cargo.lock | 29 ----------- examples/counter-with-callback/Cargo.lock | 29 ----------- examples/counter/Cargo.lock | 29 ----------- examples/smart-contract-requestor/Cargo.lock | 29 ----------- 9 files changed, 38 insertions(+), 173 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e04d2c9b..322cd0586 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1057,7 +1057,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2 0.10.9", ] @@ -1090,7 +1089,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -1149,7 +1147,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1234,7 +1231,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1250,7 +1246,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1314,7 +1309,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1368,7 +1362,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2603,28 +2596,19 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", "circom-witnesscalc", - "crypto-bigint 0.5.2", - "derive_more 2.0.1", "guest-util", "hex", "num-bigint 0.4.6", "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", "risc0-groth16-sys", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2 0.10.9", "tempfile", "test-log", "tokio", @@ -3840,15 +3824,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 81a2615ea..74cfe584f 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -7,42 +7,44 @@ repository = { workspace = true } [features] default = [] -prove = ["risc0-zkvm/prove", "dep:circom-witnesscalc"] +prove = [ + "risc0-zkvm/prove", + "dep:circom-witnesscalc", + "dep:num-bigint", + "dep:num-traits", + "dep:tempfile", + "dep:wtns-file", +] cuda = ["prove", "risc0-zkvm/cuda", "risc0-groth16/cuda", "dep:risc0-groth16-sys"] [dependencies] anyhow = { workspace = true } -ark-bn254 = "0.5.0" -ark-ff = "0.5.0" -ark-groth16 = { version = "0.5.0" } -ark-serialize = "0.5.0" -bincode = { workspace = true } -blake3 = { version = "1.5.0" } -bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } +ark-bn254 = { version = "0.5.0", default-features = false } +ark-ff = { version = "0.5.0", default-features = false } +ark-groth16 = { version = "0.5.0", default-features = false } +ark-serialize = { version = "0.5.0", default-features = false } borsh = { workspace = true, features = ["derive"] } boundless-market = { workspace = true } -bytemuck = { workspace = true } -circom-witnesscalc = { version = "0.2.1", optional = true } -crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0", default-features = false } -derive_more = { workspace = true } -hex = { workspace = true } -num-bigint = { version = "0.4", features = ["std"] } -num-traits = "0.2.19" -risc0-binfmt = { workspace = true, default-features = false } -risc0-circuit-recursion = { workspace = true } -risc0-core = { workspace = true } risc0-groth16 = { workspace = true } -risc0-groth16-sys = { workspace = true, optional = true } -risc0-zkp = { workspace = true } -risc0-zkvm = { workspace = true, features = ["bonsai"] } +risc0-zkvm = { workspace = true, default-features = false } serde = { workspace = true } serde_json = { workspace = true } -sha2 = { workspace = true } -tempfile = { workspace = true } -tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } tracing = { workspace = true } -wtns-file = { version = "0.1.5" } -[dev-dependencies] +# Host dependencies +[target.'cfg(not(target_os = "zkvm"))'.dependencies] +bonsai-sdk = { workspace = true, features = ["non_blocking", "shrink_bitvm2"] } +bincode = { workspace = true } +circom-witnesscalc = { version = "0.2.1", optional = true } +hex = { workspace = true } +num-bigint = { version = "0.4", features = ["std"], optional = true } +num-traits = { version = "0.2.19", optional = true } +risc0-groth16-sys = { workspace = true, optional = true } +risc0-zkvm = { workspace = true, default-features = false, features = ["bonsai"] } +tempfile = { workspace = true, optional = true } +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } +wtns-file = { version = "0.1.5", optional = true } + +[target.'cfg(not(target_os = "zkvm"))'.dev-dependencies] guest-util = { workspace = true } test-log = { workspace = true } diff --git a/blake3_groth16/src/lib.rs b/blake3_groth16/src/lib.rs index 4c6224736..496882ffc 100644 --- a/blake3_groth16/src/lib.rs +++ b/blake3_groth16/src/lib.rs @@ -11,22 +11,25 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. - +#[cfg(not(target_os = "zkvm"))] use anyhow::{Context, Result}; pub use boundless_market::blake3_groth16::Blake3Groth16ReceiptClaim; pub use receipt::*; +#[cfg(not(target_os = "zkvm"))] pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; +#[cfg(not(target_os = "zkvm"))] use risc0_zkvm::{default_prover, sha::Digestible, InnerReceipt, MaybePruned, Receipt}; -#[cfg(feature = "prove")] +#[cfg(all(feature = "prove", not(target_os = "zkvm")))] use risc0_zkvm::ProverOpts; -#[cfg(feature = "prove")] +#[cfg(all(feature = "prove", not(target_os = "zkvm")))] mod prove; pub mod receipt; pub mod verify; +#[cfg(not(target_os = "zkvm"))] /// Compresses a Receipt into a BLAKE3 Groth16 Receipt. pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result { tracing::debug!("Compressing receipt to blake3 groth16"); @@ -86,6 +89,7 @@ pub async fn compress_blake3_groth16(receipt: &Receipt) -> Result bool { std::env::var("RISC0_DEV_MODE") .ok() @@ -123,7 +128,7 @@ fn is_dev_mode() -> bool { .is_some() } -#[cfg(test)] +#[cfg(all(test, not(target_os = "zkvm")))] mod tests { use super::*; use guest_util::ECHO_ELF; diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index 0e3f33e96..516f16cf2 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -14,7 +14,6 @@ use anyhow::{bail, Context, Result}; use borsh::{BorshDeserialize, BorshSerialize}; -use derive_more::Debug; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; use risc0_zkvm::{ sha::Digestible, Digest, Groth16Receipt, InnerReceipt, MaybePruned, Receipt, ReceiptClaim, diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 4f67bbf7f..735a8cac2 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -118,7 +118,7 @@ fn from_seal(seal_bytes: &[u8]) -> ark_groth16::Proof { ark_groth16::Proof { a, b, c } } -pub fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { +fn get_ark_verifying_key() -> ark_groth16::VerifyingKey { let alpha_g1 = G1Affine::new(Fq::from_str(ALPHA_X).unwrap(), Fq::from_str(ALPHA_Y).unwrap()); let beta_g2 = G2Affine::new( diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 06244a8cd..7d74767b4 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -839,7 +839,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -872,7 +871,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -931,7 +929,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1016,7 +1013,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1032,7 +1028,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1096,7 +1091,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1150,7 +1144,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2068,29 +2061,16 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", - "crypto-bigint 0.5.2", - "derive_more", "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2", - "tempfile", "tokio", "tracing", - "wtns-file", ] [[package]] @@ -2841,15 +2821,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index 6f6703440..05255c637 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -839,7 +839,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -872,7 +871,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -931,7 +929,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1016,7 +1013,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1032,7 +1028,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1096,7 +1091,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1150,7 +1144,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2068,29 +2061,16 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", - "crypto-bigint 0.5.2", - "derive_more", "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2", - "tempfile", "tokio", "tracing", - "wtns-file", ] [[package]] @@ -2841,15 +2821,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 833694125..976e8598e 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -835,7 +835,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -868,7 +867,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -927,7 +925,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1012,7 +1009,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1028,7 +1024,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1092,7 +1087,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1146,7 +1140,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2086,29 +2079,16 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", - "crypto-bigint 0.5.2", - "derive_more", "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2", - "tempfile", "tokio", "tracing", - "wtns-file", ] [[package]] @@ -2861,15 +2841,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index 84d27d029..c09a36d67 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -839,7 +839,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -872,7 +871,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -931,7 +929,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1016,7 +1013,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1032,7 +1028,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1096,7 +1091,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1150,7 +1144,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2068,29 +2061,16 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", - "crypto-bigint 0.5.2", - "derive_more", "hex", - "num-bigint 0.4.6", - "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2", - "tempfile", "tokio", "tracing", - "wtns-file", ] [[package]] @@ -2841,15 +2821,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" From 7ba0fb122a977af5363993a1b11105947ddc29b1 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 12:56:59 -0500 Subject: [PATCH 77/86] update cargo toml --- Cargo.lock | 282 +++++++++++++++++----------------- Cargo.toml | 2 +- blake3_groth16/Cargo.toml | 19 ++- blake3_groth16/src/receipt.rs | 3 + blake3_groth16/src/verify.rs | 3 + 5 files changed, 162 insertions(+), 147 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 322cd0586..6b74c197e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -73,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6cfe35f100bc496007c9a00f90b88bdf565f1421d4c707c9f07e0717e2aaad" +checksum = "e01db470290bb814e0485fa79aba6e36bb5d221c2e3cfeba5fba05a8a2ca8dad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -100,11 +100,11 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "num_enum", "serde", "strum", @@ -112,12 +112,12 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59094911f05dbff1cf5b29046a00ef26452eccc8d47136d50a47c0cf22f00c85" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "alloy-trie 0.9.1", @@ -138,13 +138,13 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903cb8f728107ca27c816546f15be38c688df3c381d7bd1a4a9f215effc1ddb4" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "serde", @@ -152,16 +152,16 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03df5cb3b428ac96b386ad64c11d5c6e87a5505682cf1fbd6f8f773e9eda04f6" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", "alloy-json-abi", "alloy-network", "alloy-network-primitives", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-pubsub", "alloy-rpc-types-eth", @@ -175,25 +175,25 @@ dependencies = [ [[package]] name = "alloy-core" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-type-parser", "alloy-sol-types", "itoa", @@ -208,7 +208,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "crc", "serde", @@ -221,7 +221,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "serde", ] @@ -232,7 +232,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "k256 0.13.4", "serde", @@ -241,14 +241,14 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7f1c9a1ccc7f3e03c36976455751a6166a4f0d2d2c530c3f87dfe7d0cdc836" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "auto_impl", @@ -270,7 +270,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-hardforks 0.3.5", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", @@ -283,12 +283,12 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1421f6c9d15e5b86afbfe5865ca84dea3b9f77173a0963c1a2ee4e626320ada9" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-serde", "alloy-trie 0.9.1", "serde", @@ -303,7 +303,7 @@ checksum = "3165210652f71dfc094b051602bafd691f506c54050a174b1cba18fb5ef706a3" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "auto_impl", "dyn-clone", ] @@ -316,18 +316,18 @@ checksum = "889eb3949b58368a09d4f16931c660275ef5fb08e5fbd4a96573b19c7085c41f" dependencies = [ "alloy-chains", "alloy-eip2124", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "auto_impl", "dyn-clone", ] [[package]] name = "alloy-json-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-type-parser", "serde", "serde_json", @@ -335,11 +335,11 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f763621707fa09cece30b73ecc607eb43fd7a72451fe3b46f645b905086926" +checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "http 1.3.1", "serde", @@ -350,16 +350,16 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f59a869fa4b4c3a7f08b1c8cb79aec61c29febe6e24a24fe0fcfded8a9b5703" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-json-rpc", "alloy-network-primitives", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", @@ -376,27 +376,27 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46e9374c667c95c41177602ebe6f6a2edd455193844f011d973d374b65501b38" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-serde", "serde", ] [[package]] name = "alloy-node-bindings" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d392c130f3d4a325c913348351395efb16d197da1d07c2de3a2f7876d9d981ee" +checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" dependencies = [ "alloy-genesis", "alloy-hardforks 0.2.13", "alloy-network", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-signer", "alloy-signer-local", "k256 0.13.4", @@ -432,9 +432,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", @@ -459,9 +459,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77818b7348bd5486491a5297579dbfe5f706a81f8e1f5976393025f1e22a7c7d" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -470,7 +470,7 @@ dependencies = [ "alloy-network", "alloy-network-primitives", "alloy-node-bindings", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types-anvil", @@ -506,12 +506,12 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249b45103a66c9ad60ad8176b076106d03a2399a37f0ee7b0e03692e6b354cb9" +checksum = "f77d20cdbb68a614c7a86b3ffef607b37d087bb47a03c58f4c3f8f99bc3ace3b" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-transport", "auto_impl", "bimap", @@ -550,12 +550,12 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2430d5623e428dd012c6c2156ae40b7fe638d6fca255e3244e0fba51fa698e93" +checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-pubsub", "alloy-transport", "alloy-transport-http", @@ -576,11 +576,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e131624d08a25cfc40557041e7dc42e1182fa1153e7592d120f769a1edce56" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-anvil", "alloy-rpc-types-debug", "alloy-rpc-types-engine", @@ -593,11 +593,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65e3266095e6d8e8028aab5f439c6b8736c5147314f7e606c61597e014cb8a0" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -605,9 +605,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07429a1099cd17227abcddb91b5e38c960aaeb02a6967467f5bb561fbe716ac6" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -616,11 +616,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aeff305b7d10cc1c888456d023e7bb8a5ea82e9e42b951e37619b88cc1a1486d" +checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "derive_more 2.0.1", "serde", "serde_with", @@ -628,13 +628,13 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222ecadcea6aac65e75e32b6735635ee98517aa63b111849ee01ae988a71d685" +checksum = "07da696cc7fbfead4b1dda8afe408685cae80975cbb024f843ba74d9639cd0d3" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "derive_more 2.0.1", @@ -646,15 +646,15 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db46b0901ee16bbb68d986003c66dcb74a12f9d9b3c44f8e85d51974f2458f0f" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", "alloy-eips", "alloy-network-primitives", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-serde", "alloy-sol-types", @@ -667,11 +667,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-trace" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f10620724bd45f80c79668a8cdbacb6974f860686998abce28f6196ae79444" +checksum = "fb0c800e2ce80829fca1491b3f9063c29092850dc6cf19249d5f678f0ce71bb0" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -681,11 +681,11 @@ dependencies = [ [[package]] name = "alloy-rpc-types-txpool" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864f41befa90102d4e02327679699a7e9510930e2924c529e31476086609fa89" +checksum = "2f82e3068673a3cf93fbbc2f60a59059395cd54bbe39af895827faa5e641cc8f" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -693,22 +693,22 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5413814be7a22fbc81e0f04a2401fcc3eb25e56fd53b04683e8acecc6e1fe01b" +checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "serde", "serde_json", ] [[package]] name = "alloy-signer" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53410a18a61916e2c073a6519499514e027b01e77eeaf96acd1df7cf96ef6bb2" +checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "async-trait", "auto_impl", "either", @@ -719,13 +719,13 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.37" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6006c4cbfa5d08cadec1fcabea6cb56dc585a30a9fce40bcf81e307d6a71c8e" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-signer", "async-trait", "k256 0.13.4", @@ -735,9 +735,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -749,9 +749,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -768,9 +768,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -786,9 +786,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -796,24 +796,23 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-macro", "serde", ] [[package]] name = "alloy-transport" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94ee404368a3d9910dfe61b203e888c6b0e151a50e147f95da8baff9f9c7763" +checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" dependencies = [ "alloy-json-rpc", - "alloy-primitives 1.4.0", "auto_impl", "base64 0.22.1", "derive_more 2.0.1", @@ -832,9 +831,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f8a6338d594f6c6481292215ee8f2fd7b986c80aba23f3f44e761a8658de78" +checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -847,9 +846,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17a37a8ca18006fa0a58c7489645619ff58cfa073f2b29c4e052c9bd114b123a" +checksum = "6ace83a4a6bb896e5894c3479042e6ba78aa5271dde599aa8c36a021d49cc8cc" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -867,9 +866,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "679b0122b7bca9d4dc5eb2c0549677a3c53153f6e232f23f4b3ba5575f74ebde" +checksum = "86c9ab4c199e3a8f3520b60ba81aa67bb21fed9ed0d8304e0569094d0758a56f" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -889,7 +888,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "arrayvec", "derive_more 2.0.1", @@ -905,7 +904,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "arrayvec", "derive_more 2.0.1", @@ -917,11 +916,10 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.37" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64c09ec565a90ed8390d82aa08cd3b22e492321b96cb4a3d4f58414683c9e2f" +checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" dependencies = [ - "alloy-primitives 1.4.0", "darling 0.21.3", "proc-macro2", "quote", @@ -2479,7 +2477,7 @@ dependencies = [ "bitflags 2.9.4", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.11.0", "log", "prettyplease", "proc-macro2", @@ -2719,7 +2717,7 @@ name = "boundless-assessor" version = "1.2.0" dependencies = [ "alloy", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "boundless-market", "guest-assessor", @@ -2877,7 +2875,7 @@ version = "1.2.0" dependencies = [ "alloy", "alloy-chains", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "anyhow", "async-stream", @@ -2947,7 +2945,7 @@ dependencies = [ "alloy", "alloy-chains", "alloy-contract", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-provider", "alloy-signer", "alloy-sol-types", @@ -3018,7 +3016,7 @@ name = "boundless-test-utils" version = "1.2.0" dependencies = [ "alloy", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "anyhow", "bincode", @@ -3531,7 +3529,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -4243,7 +4241,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.1", + "windows-sys 0.59.0", ] [[package]] @@ -4279,7 +4277,7 @@ name = "doc-test" version = "1.2.0" dependencies = [ "alloy", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "anyhow", "boundless-market", @@ -4607,7 +4605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.1", + "windows-sys 0.52.0", ] [[package]] @@ -5707,7 +5705,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -5962,7 +5960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.15.5", "serde", "serde_core", ] @@ -6422,7 +6420,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.4", + "windows-targets 0.48.5", ] [[package]] @@ -7298,7 +7296,7 @@ checksum = "d9ade20c592484ba1ea538006e0454284174447a3adf9bb59fa99ed512f95493" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "derive_more 2.0.1", "thiserror 2.0.17", @@ -8001,8 +7999,8 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "heck 0.5.0", - "itertools 0.14.0", + "heck 0.4.1", + "itertools 0.11.0", "log", "multimap", "once_cell", @@ -8022,7 +8020,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools 0.11.0", "proc-macro2", "quote", "syn 2.0.106", @@ -8081,7 +8079,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.32", - "socket2 0.6.0", + "socket2 0.5.10", "thiserror 2.0.17", "tokio", "tracing", @@ -8118,7 +8116,7 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.5.10", "tracing", "windows-sys 0.60.2", ] @@ -8632,7 +8630,7 @@ version = "20.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "num_enum", "once_cell", "serde", @@ -8706,7 +8704,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b37f9050c74d66eb953591e88a60f2d347e99b121e7330eabb0f29c4053d2a36" dependencies = [ - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "bytemuck", "hex", @@ -8942,7 +8940,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a604f09f459f456fd9ef4919c6efcaa6a787a6f9ffcd76cfc81eae1860584a1" dependencies = [ "alloy", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-sol-types", "anyhow", "cfg-if", @@ -9023,7 +9021,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-evm", - "alloy-primitives 1.4.0", + "alloy-primitives 1.4.1", "alloy-rlp", "alloy-rpc-types", "alloy-sol-types", @@ -9384,7 +9382,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.61.1", + "windows-sys 0.52.0", ] [[package]] @@ -10537,9 +10535,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", @@ -10656,7 +10654,7 @@ dependencies = [ "getrandom 0.3.3", "once_cell", "rustix 1.1.2", - "windows-sys 0.61.1", + "windows-sys 0.52.0", ] [[package]] @@ -11899,7 +11897,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.48.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 594dda56a..626d1f07e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -86,7 +86,7 @@ risc0-build = { version = "3.0.4", features = ["docker", "unstable"] } risc0-circuit-recursion = { version = "4.0.3" } risc0-core = { version = "3.0.0" } risc0-ethereum-contracts = { version = "3.0.1" } -risc0-groth16 = { version = "3.0.3" } +risc0-groth16 = { version = "3.0.3", default-features = false } risc0-groth16-sys = { version = "0.1.0" } risc0-povw = { version = "0.4.1", default-features = false } risc0-zkp = { version = "3.0.3" } diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 74cfe584f..3d455c82b 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -6,8 +6,19 @@ homepage = { workspace = true } repository = { workspace = true } [features] -default = [] +default = ["std"] +std = [ + "ark-bn254/std", + "ark-groth16/std", + "ark-serialize/std", + "hex/std", + "num-bigint/std", + "num-traits/std", + "risc0-groth16/std", + "serde/std", +] prove = [ + "std", "risc0-zkvm/prove", "dep:circom-witnesscalc", "dep:num-bigint", @@ -25,11 +36,10 @@ ark-groth16 = { version = "0.5.0", default-features = false } ark-serialize = { version = "0.5.0", default-features = false } borsh = { workspace = true, features = ["derive"] } boundless-market = { workspace = true } -risc0-groth16 = { workspace = true } +risc0-groth16 = { workspace = true, default-features = false } risc0-zkvm = { workspace = true, default-features = false } -serde = { workspace = true } +serde = { workspace = true, features = ["alloc", "derive"] } serde_json = { workspace = true } -tracing = { workspace = true } # Host dependencies [target.'cfg(not(target_os = "zkvm"))'.dependencies] @@ -44,6 +54,7 @@ risc0-zkvm = { workspace = true, default-features = false, features = ["bonsai"] tempfile = { workspace = true, optional = true } tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } wtns-file = { version = "0.1.5", optional = true } +tracing = { workspace = true } [target.'cfg(not(target_os = "zkvm"))'.dev-dependencies] guest-util = { workspace = true } diff --git a/blake3_groth16/src/receipt.rs b/blake3_groth16/src/receipt.rs index 516f16cf2..5c84caccc 100644 --- a/blake3_groth16/src/receipt.rs +++ b/blake3_groth16/src/receipt.rs @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +extern crate alloc; + +use alloc::vec::Vec; use anyhow::{bail, Context, Result}; use borsh::{BorshDeserialize, BorshSerialize}; pub use risc0_groth16::{ProofJson as Groth16ProofJson, Seal as Groth16Seal}; diff --git a/blake3_groth16/src/verify.rs b/blake3_groth16/src/verify.rs index 735a8cac2..c21761a8c 100644 --- a/blake3_groth16/src/verify.rs +++ b/blake3_groth16/src/verify.rs @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +extern crate alloc; + +use alloc::vec; use anyhow::{ensure, Result}; use ark_bn254::{Fq, Fq2, G1Affine, G2Affine}; use ark_ff::PrimeField; From 1905bacb8a0ce4ac5655082b1da2ccc627c9999a Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 13:12:36 -0500 Subject: [PATCH 78/86] cargo locks --- Cargo.lock | 1241 ++++++------ bento/Cargo.lock | 130 +- .../guest/assessor/assessor-guest/Cargo.lock | 464 +---- examples/composition/Cargo.lock | 906 +++++---- examples/counter-with-callback/Cargo.lock | 906 +++++---- examples/counter/Cargo.lock | 1704 ++++++++--------- examples/smart-contract-requestor/Cargo.lock | 906 +++++---- 7 files changed, 2799 insertions(+), 3458 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b74c197e..fe7c0f9a9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -22,7 +22,7 @@ dependencies = [ "cpp_demangle", "fallible-iterator", "gimli 0.31.1", - "memmap2 0.9.8", + "memmap2 0.9.9", "object 0.36.7", "rustc-demangle", "smallvec", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -217,23 +217,25 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives 1.4.1", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives 1.4.1", "alloy-rlp", + "borsh", "k256 0.13.4", "serde", "thiserror 2.0.17", @@ -335,9 +337,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives 1.4.1", "alloy-sol-types", @@ -443,7 +445,7 @@ dependencies = [ "derive_more 2.0.1", "foldhash 0.2.0", "hashbrown 0.16.0", - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "k256 0.13.4", "keccak-asm", @@ -492,7 +494,7 @@ dependencies = [ "futures", "futures-utils-wasm", "lru 0.13.0", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-project", "reqwest", "serde", @@ -506,9 +508,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77d20cdbb68a614c7a86b3ffef607b37d087bb47a03c58f4c3f8f99bc3ace3b" +checksum = "810766eeed6b10ffa11815682b3f37afc5019809e3b470b23555297d5770ce63" dependencies = [ "alloy-json-rpc", "alloy-primitives 1.4.1", @@ -516,7 +518,7 @@ dependencies = [ "auto_impl", "bimap", "futures", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "serde", "serde_json", "tokio", @@ -545,14 +547,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives 1.4.1", @@ -616,9 +618,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b2ca3a434a6d49910a7e8e51797eb25db42ef8a5578c52d877fcb26d0afe7bc" +checksum = "977698b458738369ba5ca645d2cdb4d51ba07a81db37306ff85322853161ea3a" dependencies = [ "alloy-primitives 1.4.1", "derive_more 2.0.1", @@ -693,9 +695,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives 1.4.1", "serde", @@ -704,9 +706,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives 1.4.1", "async-trait", @@ -744,7 +746,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -757,11 +759,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.11.4", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] @@ -780,7 +782,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", ] @@ -808,9 +810,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -818,7 +820,7 @@ dependencies = [ "derive_more 2.0.1", "futures", "futures-utils-wasm", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "serde", "serde_json", "thiserror 2.0.17", @@ -831,9 +833,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -846,9 +848,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ace83a4a6bb896e5894c3479042e6ba78aa5271dde599aa8c36a021d49cc8cc" +checksum = "ea89c214c7ddd2bcad100da929d6b642bbfed85788caf3b1be473abacd3111f9" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -866,15 +868,15 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86c9ab4c199e3a8f3520b60ba81aa67bb21fed9ed0d8304e0569094d0758a56f" +checksum = "571aadf0afce0d515a28b2c6352662a39cb9f48b4eeff9a5c34557d6ea126730" dependencies = [ "alloy-pubsub", "alloy-transport", "futures", "http 1.3.1", - "rustls 0.23.32", + "rustls 0.23.35", "serde_json", "tokio", "tokio-tungstenite 0.26.2", @@ -916,14 +918,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -937,9 +939,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -1066,7 +1068,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1175,7 +1177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1213,7 +1215,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1317,7 +1319,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1484,9 +1486,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c1f86859c1af3d514fa19e8323147ff10ea98684e6c7b307912509f50e67b2" +checksum = "0e86f6d3dc9dc4352edeea6b8e499e13e3f5dc3b964d7ca5fd411415a3498473" dependencies = [ "compression-codecs", "compression-core", @@ -1539,7 +1541,7 @@ dependencies = [ "polling", "rustix 1.1.2", "slab", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -1595,7 +1597,7 @@ dependencies = [ "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -1645,7 +1647,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1662,7 +1664,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1729,7 +1731,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1740,9 +1742,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.6" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bc1b40fb26027769f16960d2f4a6bc20c4bb755d403e552c8c1a73af433c246" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1770,9 +1772,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.6" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1792,23 +1794,22 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libloading", ] [[package]] name = "aws-runtime" -version = "1.5.10" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1831,9 +1832,9 @@ dependencies = [ [[package]] name = "aws-sdk-cloudwatch" -version = "1.92.0" +version = "1.97.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a93118d58a83aabefb333e53f7586b1de88fa52ca021b3882435a8005b4d9c" +checksum = "7e87388c13664e4e17a924d7971f3cfd98bcf2cdec22069c04d48e150878b71b" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1857,9 +1858,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.106.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c230530df49ed3f2b7b4d9c8613b72a04cdac6452eede16d587fc62addfabac" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1891,9 +1892,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.84.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357a841807f6b52cb26123878b3326921e2a25faca412fabdd32bd35b7edd5d3" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1913,9 +1914,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.86.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1cc7fb324aa12eb4404210e6381195c5b5e9d52c2682384f295f38716dd3c7" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1935,9 +1936,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.86.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d835f123f307cafffca7b9027c14979f1d403b417d8541d67cf252e8a21e35" +checksum = "8f8090151d4d1e971269957b10dbf287bba551ab812e591ce0516b1c73b75d27" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1958,9 +1959,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.4" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1986,9 +1987,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" dependencies = [ "futures-util", "pin-project-lite", @@ -1997,9 +1998,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.8" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d2df0314b8e307995a3b86d44565dfe9de41f876901a7d71886c756a25979f" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -2017,9 +2018,9 @@ dependencies = [ [[package]] name = "aws-smithy-compression" -version = "0.0.4" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ceb9b25cf3a8b10ae5c3cf6490488c092871b120a01256af387c51c2eeace313" +checksum = "f29ef43748637ea19e0d264ad38da275af1aa28a14aa5f7e9ed29c790473768f" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -2034,9 +2035,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.11" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "182b03393e8c677347fb5705a04a9392695d47d20ef0a2f8cfe28c8e6b9b9778" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -2045,9 +2046,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.3" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -2055,6 +2056,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", "http 1.3.1", "http-body 0.4.6", @@ -2066,9 +2068,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-protocol-test", @@ -2086,11 +2088,11 @@ dependencies = [ "hyper-rustls 0.24.2", "hyper-rustls 0.27.7", "hyper-util", - "indexmap 2.11.4", + "indexmap 2.12.0", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "serde", "serde_json", @@ -2102,27 +2104,27 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.5" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-observability" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-protocol-test" -version = "0.63.4" +version = "0.63.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2116be0e3a8e18771b126f8eb69901b2780fbe12b1890370cb1c462337d13b" +checksum = "fa808d23a8edf0da73f6812d06d8c0a48d70f05d2d3696362982aad11ee475b7" dependencies = [ "assert-json-diff", "aws-smithy-runtime-api", @@ -2139,9 +2141,9 @@ dependencies = [ [[package]] name = "aws-smithy-query" -version = "0.60.7" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -2149,9 +2151,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa63ad37685ceb7762fa4d73d06f1d5493feb88e3f27259b9ed277f4c01b185" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -2173,9 +2175,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -2190,9 +2192,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", @@ -2216,18 +2218,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.10" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.8" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -2372,7 +2374,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2393,7 +2395,7 @@ dependencies = [ "miniz_oxide", "object 0.37.3", "rustc-demangle", - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -2474,10 +2476,10 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", - "itertools 0.11.0", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -2485,7 +2487,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2542,11 +2544,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2709,7 +2711,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3170,9 +3172,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "regex-automata", @@ -3199,22 +3201,22 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3337,9 +3339,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.39" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1354349954c6fc9cb0deab020f27f783cf0b604e8bb754dc4658ecf0d29c35f" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -3358,9 +3360,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -3379,7 +3381,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -3423,7 +3425,7 @@ dependencies = [ "byteorder", "indicatif", "libc", - "memmap2 0.9.8", + "memmap2 0.9.9", "num-bigint 0.4.6", "num-traits", "prost", @@ -3451,9 +3453,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -3461,9 +3463,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -3473,30 +3475,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.58" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75bf0b32ad2e152de789bb635ea4d3078f6b838ad7974143e99b99f45a04af4a" +checksum = "8e602857739c5a4291dfa33b5a298aeac9006185229a700e5810a3ef7272d971" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -3529,14 +3531,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ "lazy_static", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "compression-codecs" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680dc087785c5230f8e8843e2e57ac7c1c90488b6a91b88caa265410568f441b" +checksum = "302266479cb963552d11bd042013a58ef1adc56768016c8b82b4199488f2d4ad" dependencies = [ "compression-core", "liblzma", @@ -3544,9 +3546,9 @@ dependencies = [ [[package]] name = "compression-core" -version = "0.4.30" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9b614a5787ef0c8802a55766480563cb3a93b435898c422ed2a359cf811582" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" [[package]] name = "concurrent-queue" @@ -3566,15 +3568,15 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", @@ -3590,9 +3592,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -3710,15 +3712,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -3789,7 +3791,7 @@ dependencies = [ "crossterm_winapi", "libc", "mio 0.8.11", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "signal-hook", "signal-hook-mio", "winapi", @@ -3846,21 +3848,21 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "52cd9d68cf7efc6ddfaaee42e7288d3a99d613d4b50f76ce9827ae0c6e14f938" dependencies = [ "csv-core", "itoa", "ryu", - "serde", + "serde_core", ] [[package]] name = "csv-core" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" +checksum = "704a3c26996a80471189265814dbc2c257598b96b8a7feae2d31ace646bb9782" dependencies = [ "memchr", ] @@ -3942,7 +3944,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3957,7 +3959,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3968,7 +3970,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3979,7 +3981,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3993,7 +3995,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -4043,9 +4045,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -4070,7 +4072,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4081,7 +4083,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4102,7 +4104,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4112,7 +4114,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4125,7 +4127,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4146,7 +4148,7 @@ dependencies = [ "convert_case 0.7.1", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "unicode-xid", ] @@ -4241,7 +4243,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4263,14 +4265,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "doc-comment" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "doc-test" @@ -4336,9 +4338,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -4387,7 +4389,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4526,27 +4528,27 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4557,14 +4559,14 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", ] @@ -4589,9 +4591,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", "serde_core", @@ -4605,7 +4607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4756,9 +4758,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "find_cuda_helper" @@ -4787,11 +4789,17 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "libz-rs-sys", @@ -4863,7 +4871,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4958,7 +4966,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -4988,7 +4996,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5047,11 +5055,11 @@ dependencies = [ [[package]] name = "gdbstub" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +checksum = "72742d2b395902caf8a5d520d0dd3334ba6d1138938429200e58d5174e275f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "log", "managed", @@ -5071,9 +5079,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -5089,21 +5097,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -5114,7 +5122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.4", + "indexmap 2.12.0", "stable_deref_trait", ] @@ -5130,7 +5138,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", "libgit2-sys", "log", @@ -5154,9 +5162,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "globset" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ "aho-corasick", "bstr", @@ -5171,7 +5179,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "ignore", "walkdir", ] @@ -5259,7 +5267,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -5278,7 +5286,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -5287,12 +5295,13 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ "cfg-if", "crunchy", + "zerocopy", ] [[package]] @@ -5422,11 +5431,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -5662,13 +5671,13 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", "tower-service", - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] @@ -5705,7 +5714,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.5.10", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -5739,9 +5748,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -5752,9 +5761,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -5765,11 +5774,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -5780,42 +5788,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -5852,9 +5856,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.23" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" dependencies = [ "crossbeam-deque", "globset", @@ -5883,7 +5887,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5955,12 +5959,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", "serde_core", ] @@ -5974,7 +5978,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "web-time", ] @@ -6004,7 +6008,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossterm", "dyn-clone", "fuzzy-matcher", @@ -6060,17 +6064,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -6079,9 +6072,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -6095,9 +6088,9 @@ checksum = "1fe266d2e243c931d8190177f20bf7f24eed45e96f39e87dc49a27b32d12d407" [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -6147,15 +6140,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -6261,7 +6254,7 @@ dependencies = [ "ena", "itertools 0.11.0", "lalrpop-util", - "petgraph", + "petgraph 0.6.5", "pico-args", "regex", "regex-syntax", @@ -6359,9 +6352,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -6370,14 +6363,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6397,9 +6390,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libgit2-sys" @@ -6415,12 +6408,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-link 0.2.1", ] [[package]] @@ -6455,9 +6448,9 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", ] [[package]] @@ -6558,17 +6551,16 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] @@ -6613,7 +6605,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6728,7 +6720,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6758,9 +6750,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -6783,7 +6775,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -6812,7 +6804,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6844,6 +6836,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -6860,19 +6853,19 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -6888,7 +6881,7 @@ dependencies = [ "equivalent", "event-listener 5.4.1", "futures-util", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "portable-atomic", "rustc_version 0.4.1", "smallvec", @@ -7023,7 +7016,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -7038,11 +7031,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -7082,11 +7075,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -7120,7 +7112,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7176,9 +7168,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -7186,14 +7178,14 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7284,9 +7276,9 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "op-alloy-consensus" @@ -7304,9 +7296,9 @@ dependencies = [ [[package]] name = "op-revm" -version = "10.1.0" +version = "10.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9ba4f4693811e73449193c8bd656d3978f265871916882e6a51a487e4f96217" +checksum = "826f43a5b1613c224f561847c152bfbaefcb593a9ae2c612ff4dc4661c6e625f" dependencies = [ "auto_impl", "revm", @@ -7321,11 +7313,11 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -7342,7 +7334,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7353,18 +7345,18 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.5.3+3.5.4" +version = "300.5.4+3.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6bad8cd0233b63971e232cc9c5e83039375b8586d2312f31fda85db8f888c2" +checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -7475,7 +7467,7 @@ dependencies = [ "proc-macro-crate 3.4.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7497,12 +7489,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -7521,15 +7513,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -7540,12 +7532,12 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64 0.22.1", - "serde", + "serde_core", ] [[package]] @@ -7565,12 +7557,11 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 2.0.17", "ucd-trie", ] @@ -7580,8 +7571,18 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", - "indexmap 2.11.4", + "fixedbitset 0.4.2", + "indexmap 2.12.0", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset 0.5.7", + "indexmap 2.12.0", ] [[package]] @@ -7625,7 +7626,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7660,7 +7661,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7734,7 +7735,7 @@ dependencies = [ "hermit-abi", "pin-project-lite", "rustix 1.1.2", - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -7767,9 +7768,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -7842,7 +7843,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7881,7 +7882,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.7", ] [[package]] @@ -7927,14 +7928,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -7947,21 +7948,19 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -7980,7 +7979,7 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7999,17 +7998,17 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", + "heck 0.5.0", + "itertools 0.14.0", "log", "multimap", "once_cell", - "petgraph", + "petgraph 0.7.1", "prettyplease", "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -8020,10 +8019,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8046,7 +8045,7 @@ dependencies = [ "cfg-if", "itertools 0.10.5", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -8078,8 +8077,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.32", - "socket2 0.5.10", + "rustls 0.23.35", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -8093,12 +8092,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -8116,16 +8115,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -8200,7 +8199,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -8256,11 +8255,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -8302,7 +8301,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8319,9 +8318,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -8331,9 +8330,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -8342,15 +8341,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "requestor-lists" @@ -8366,9 +8365,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -8392,7 +8391,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -8410,7 +8409,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] @@ -8642,7 +8641,7 @@ version = "7.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "revm-bytecode", "revm-primitives", "serde", @@ -9014,8 +9013,8 @@ dependencies = [ [[package]] name = "risc0-steel" -version = "2.4.0" -source = "git+https://github.com/boundless-xyz/steel?branch=release-2.4#3731e48e9a7ba4bb0c6ef800b635d95f4114ca85" +version = "2.4.1" +source = "git+https://github.com/boundless-xyz/steel?branch=release-2.4#6160a2f6689178561338dbfb4c9ddf490572157b" dependencies = [ "alloy", "alloy-consensus", @@ -9082,7 +9081,7 @@ dependencies = [ "hex-literal", "metal", "ndarray", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "paste", "rand 0.9.2", "rand_core 0.9.3", @@ -9155,7 +9154,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -9291,9 +9290,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rust-embed" -version = "8.7.2" +version = "8.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025908b8682a26ba8d12f6f2d66b987584a4a87bc024abc5bbc12553a8cd178a" +checksum = "947d7f3fad52b283d261c4c99a084937e2fe492248cb9a68a8435a861b8798ca" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -9302,22 +9301,22 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "8.7.2" +version = "8.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6065f1a4392b71819ec1ea1df1120673418bf386f50de1d6f54204d836d4349c" +checksum = "5fa2c8c9e8711e10f9c4fd2d64317ef13feaab820a4c51541f1a8c8e2e851ab2" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.106", + "syn 2.0.110", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "8.7.2" +version = "8.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6cc0c81648b20b70c491ff8cce00c1c3b223bb8ed2b5d41f0e54c6c4c0a3594" +checksum = "60b161f275cb337fe0a44d924a5f4df0ed69c2c39519858f931ce61c779d3475" dependencies = [ "sha2 0.10.9", "walkdir", @@ -9365,7 +9364,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -9378,11 +9377,11 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -9399,15 +9398,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.32" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.6", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -9426,9 +9425,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -9447,9 +9446,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -9467,9 +9466,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.6" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8572f3c2cb9934231157b45499fc41e1f58c589fdfb81a844ba873265e80f8eb" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -9485,9 +9484,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -9562,7 +9561,7 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.61.1", + "windows-sys 0.61.2", ] [[package]] @@ -9579,9 +9578,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -9687,7 +9686,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -9700,7 +9699,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -9784,7 +9783,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9793,7 +9792,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "memchr", "ryu", @@ -9845,19 +9844,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.1" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", - "serde", - "serde_derive", + "schemars 1.1.0", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -9865,14 +9863,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.1" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9893,7 +9891,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "ryu", "serde", @@ -9919,7 +9917,7 @@ dependencies = [ "futures", "log", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "scc", "serial_test_derive", ] @@ -9932,7 +9930,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10153,12 +10151,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -10232,12 +10230,12 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.12.0", "log", "memchr", "once_cell", "percent-encoding", - "rustls 0.23.32", + "rustls 0.23.35", "serde", "serde_json", "sha2 0.10.9", @@ -10260,7 +10258,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10283,7 +10281,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -10296,7 +10294,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "bytes", "chrono", @@ -10339,7 +10337,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "chrono", "crc", @@ -10440,14 +10438,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -10462,7 +10460,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "phf_shared", "precomputed-hash", ] @@ -10502,7 +10500,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10524,9 +10522,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -10542,7 +10540,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10574,7 +10572,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10583,7 +10581,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -10641,7 +10639,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050" dependencies = [ "futures", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -10651,10 +10649,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.2", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -10693,7 +10691,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10722,7 +10720,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10733,7 +10731,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10798,9 +10796,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -10823,33 +10821,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", - "parking_lot 0.12.4", + "mio 1.1.0", + "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -10878,7 +10873,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.32", + "rustls 0.23.35", "tokio", ] @@ -10929,7 +10924,7 @@ checksum = "7a9daff607c6d2bf6c16fd681ccb7eecc83e4e2cdc1ca067ffaadfca5de7f084" dependencies = [ "futures-util", "log", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -10951,9 +10946,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -10995,9 +10990,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -11008,7 +11003,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -11018,21 +11013,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.4", - "toml_datetime 0.7.2", + "indexmap 2.12.0", + "toml_datetime 0.7.3", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -11080,7 +11075,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "http 1.3.1", "http-body 1.0.1", @@ -11098,7 +11093,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -11142,7 +11137,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -11224,7 +11219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -11264,7 +11259,7 @@ dependencies = [ "httparse", "log", "rand 0.9.2", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "sha1", "thiserror 2.0.17", @@ -11312,9 +11307,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "typetag" @@ -11337,14 +11332,14 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "tz-rs" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1450bf2b99397e72070e7935c89facaa80092ac812502200375f1f7d33c71a1" +checksum = "14eff19b8dc1ace5bf7e4d920b2628ae3837f422ff42210cb1567cbf68b5accf" [[package]] name = "tzdb" @@ -11404,24 +11399,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-segmentation" @@ -11437,9 +11432,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -11507,7 +11502,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_json", "utoipa-gen", @@ -11535,7 +11530,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -11580,7 +11575,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -11661,15 +11656,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -11687,9 +11673,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", @@ -11698,25 +11684,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -11727,9 +11699,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -11737,22 +11709,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -11793,7 +11765,7 @@ checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-utils", "slab", "wasm-bindgen", @@ -11801,9 +11773,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -11825,14 +11797,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.2", + "webpki-roots 1.0.4", ] [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -11871,9 +11843,9 @@ dependencies = [ [[package]] name = "widestring" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -11897,7 +11869,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -11908,9 +11880,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.62.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49e6c4a1f363c8210c6f77ba24f645c61c6fb941eccf013da691f7e09515b8ac" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", "windows-core", @@ -11920,57 +11892,57 @@ dependencies = [ [[package]] name = "windows-collections" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "123e712f464a8a60ce1a13f4c446d2d43ab06464cb5842ff68f5c71b6fb7852e" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ "windows-core", ] [[package]] name = "windows-core" -version = "0.62.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.2.0", - "windows-result 0.4.0", - "windows-strings 0.5.0", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] name = "windows-future" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f3db6b24b120200d649cd4811b4947188ed3a8d2626f7075146c5d178a9a4a" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ "windows-core", - "windows-link 0.2.0", + "windows-link 0.2.1", "windows-threading", ] [[package]] name = "windows-implement" -version = "0.60.1" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb307e42a74fb6de9bf3a02d9712678b22399c87e6fa869d6dfcd8c1b7754e0" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "windows-interface" -version = "0.59.2" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0abd1ddbc6964ac14db11c7213d6532ef34bd9aa042c2e5935f59d7908b46a5" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -11981,18 +11953,18 @@ checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-link" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce3498fe0aba81e62e477408383196b4b0363db5e0c27646f932676283b43d8" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ "windows-core", - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -12017,11 +11989,11 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -12035,11 +12007,11 @@ dependencies = [ [[package]] name = "windows-strings" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -12075,16 +12047,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.4", + "windows-targets 0.53.5", ] [[package]] name = "windows-sys" -version = "0.61.1" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -12120,28 +12092,28 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.4" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.0", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] name = "windows-threading" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab47f085ad6932defa48855254c758cdd0e2f2d48e62a34118a268d8f345e118" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link 0.2.0", + "windows-link 0.2.1", ] [[package]] @@ -12158,9 +12130,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -12176,9 +12148,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -12194,9 +12166,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -12206,9 +12178,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -12224,9 +12196,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -12242,9 +12214,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -12260,9 +12232,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -12278,9 +12250,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" @@ -12322,9 +12294,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "ws_stream_wasm" @@ -12410,7 +12382,7 @@ dependencies = [ "guest-util", "hex", "liblzma", - "memmap2 0.9.8", + "memmap2 0.9.9", "num_cpus", "regex", "risc0-circuit-recursion", @@ -12457,11 +12429,10 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -12469,13 +12440,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure 0.13.2", ] @@ -12496,7 +12467,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -12516,7 +12487,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure 0.13.2", ] @@ -12537,14 +12508,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -12553,9 +12524,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -12564,13 +12535,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -12584,7 +12555,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.0", "memchr", "thiserror 2.0.17", "zopfli", @@ -12599,7 +12570,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.0", "memchr", "zopfli", ] @@ -12612,9 +12583,9 @@ checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", diff --git a/bento/Cargo.lock b/bento/Cargo.lock index 63a9c500a..a97f20ee3 100644 --- a/bento/Cargo.lock +++ b/bento/Cargo.lock @@ -64,9 +64,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a83b2001153fdb12999f808b53068ba36902ca59bf32ad979bb176d03f8f8772" +checksum = "9e15860af634cad451f598712c24ca7fd9b45d84fff68ab8d4967567fa996c64" dependencies = [ "alloy-consensus", "alloy-contract", @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaa9ea039a6f9304b4a593d780b1f23e1ae183acdee938b11b38795acacc9f1" +checksum = "4bc32535569185cbcb6ad5fa64d989a47bccb9a08e27284b1f2a3ccf16e6d010" dependencies = [ "alloy-primitives", "num_enum", @@ -99,9 +99,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad704069c12f68d0c742d0cad7e0a03882b42767350584627fbf8a47b1bf1846" +checksum = "8b6440213a22df93a87ed512d2f668e7dc1d62a05642d107f82d61edc9e12370" dependencies = [ "alloy-eips", "alloy-primitives", @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc374f640a5062224d7708402728e3d6879a514ba10f377da62e7dfb14c673e6" +checksum = "15d0bea09287942405c4f9d2a4f22d1e07611c2dbd9d5bf94b75366340f9e6e0" dependencies = [ "alloy-consensus", "alloy-eips", @@ -140,9 +140,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c493b2812943f7b58191063a8d13ea97c76099900869c08231e8eba3bf2f92" +checksum = "d69af404f1d00ddb42f2419788fa87746a4cd13bab271916d7726fda6c792d94" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -228,9 +228,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e867b5fd52ed0372a95016f3a37cbff95a9d5409230fbaef2d8ea00e8618098" +checksum = "4bd2c7ae05abcab4483ce821f12f285e01c0b33804e6883dd9ca1569a87ee2be" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -251,9 +251,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90be17e9760a6ba6d13cebdb049cea405ebc8bf57d90664ed708cc5bc348342" +checksum = "fc47eaae86488b07ea8e20236184944072a78784a1f4993f8ec17b3aa5d08c21" dependencies = [ "alloy-eips", "alloy-primitives", @@ -289,9 +289,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcab4c51fb1273e3b0f59078e0cdf8aa99f697925b09f0d2055c18be46b4d48c" +checksum = "003f46c54f22854a32b9cc7972660a476968008ad505427eabab49225309ec40" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -304,9 +304,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196d7fd3f5d414f7bbd5886a628b7c42bd98d1b126f9a7cff69dbfd72007b39c" +checksum = "4f4029954d9406a40979f3a3b46950928a0fdcfe3ea8a9b0c17490d57e8aa0e3" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -330,9 +330,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3ae2777e900a7a47ad9e3b8ab58eff3d93628265e73bbdee09acf90bf68f75" +checksum = "7805124ad69e57bbae7731c9c344571700b2a18d351bda9e0eba521c991d1bcb" dependencies = [ "alloy-consensus", "alloy-eips", @@ -343,9 +343,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ead1731af4146c573e2ea0e83c6a0696814efb0c25feea2892bdd5e4ee1f479" +checksum = "b03d35475a02d2a8b76209cb4a1336cb7d85331d10a0f6ec329ee42151695c19" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -374,7 +374,7 @@ dependencies = [ "const-hex", "derive_more", "foldhash 0.2.0", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "indexmap 2.11.0", "itoa", "k256", @@ -391,9 +391,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9bf40c9b2a90c7677f9c39bccd9f06af457f35362439c0497a706f16557703" +checksum = "d369e12c92870d069e0c9dc5350377067af8a056e29e3badf8446099d7e00889" dependencies = [ "alloy-chains", "alloy-consensus", @@ -454,9 +454,9 @@ dependencies = [ [[package]] name = "alloy-rpc-client" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c2630fde9ff6033a780635e1af6ef40e92d74a9cacb8af3defc1b15cfebca5" +checksum = "31c89883fe6b7381744cbe80fef638ac488ead4f1956a4278956a1362c71cd2e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -477,9 +477,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad098153a12382c22a597e865530033f5e644473742d6c733562d448125e02a2" +checksum = "64e279e6d40ee40fe8f76753b678d8d5d260cb276dc6c8a8026099b16d2b43f4" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -489,9 +489,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214d9d1033c173ab8fa32edd8a4655cd784447c820b0b66cd0d5167e049567d6" +checksum = "5e176c26fdd87893b6afeb5d92099d8f7e7a1fe11d6f4fe0883d6e33ac5f31ba" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -501,9 +501,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b8429b5b62d21bf3691eb1ae12aaae9bb496894d5a114e3cc73e27e6800ec8" +checksum = "b43c1622aac2508d528743fd4cfdac1dea92d5a8fa894038488ff7edd0af0b32" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -512,9 +512,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29031a6bf46177d65efce661f7ab37829ca09dd341bc40afb5194e97600655cc" +checksum = "ed5fafb741c19b3cca4cdd04fa215c89413491f9695a3e928dee2ae5657f607e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -533,9 +533,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e856112bfa0d9adc85bd7c13db03fad0e71d1d6fb4c2010e475b6718108236" +checksum = "a6f180c399ca7c1e2fe17ea58343910cad0090878a696ff5a50241aee12fc529" dependencies = [ "alloy-primitives", "serde", @@ -544,9 +544,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a4f629da632d5279bbc5731634f0f5c9484ad9c4cad0cd974d9669dc1f46d6" +checksum = "ecc39ad2c0a3d2da8891f4081565780703a593f090f768f884049aa3aa929cbc" dependencies = [ "alloy-primitives", "async-trait", @@ -559,9 +559,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c8950810dc43660c0f22883659c4218e090a5c75dce33fa4ca787715997b7b" +checksum = "930e17cb1e46446a193a593a3bfff8d0ecee4e510b802575ebe300ae2e43ef75" dependencies = [ "alloy-consensus", "alloy-network", @@ -648,9 +648,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe215a2f9b51d5f1aa5c8cf22c8be8cdb354934de09c9a4e37aefb79b77552fd" +checksum = "cae82426d98f8bc18f53c5223862907cac30ab8fc5e4cd2bb50808e6d3ab43d8" dependencies = [ "alloy-json-rpc", "auto_impl", @@ -671,9 +671,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1b37b1a30d23deb3a8746e882c70b384c574d355bc2bbea9ea918b0c31366e" +checksum = "90aa6825760905898c106aba9c804b131816a15041523e80b6d4fe7af6380ada" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -702,9 +702,9 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccf423f6de62e8ce1d6c7a11fb7508ae3536d02e0d68aaeb05c8669337d0937" +checksum = "ae109e33814b49fc0a62f2528993aa8a2dd346c26959b151f05441dc0b9da292" dependencies = [ "darling 0.21.3", "proc-macro2", @@ -862,7 +862,6 @@ dependencies = [ "digest 0.10.7", "fnv", "merlin", - "rayon", "sha2", ] @@ -895,7 +894,6 @@ dependencies = [ "num-bigint 0.4.6", "num-integer", "num-traits", - "rayon", "zeroize", ] @@ -954,7 +952,6 @@ dependencies = [ "num-bigint 0.4.6", "num-traits", "paste", - "rayon", "zeroize", ] @@ -1039,7 +1036,6 @@ dependencies = [ "ark-relations", "ark-serialize 0.5.0", "ark-std 0.5.0", - "rayon", ] [[package]] @@ -1055,7 +1051,6 @@ dependencies = [ "educe", "fnv", "hashbrown 0.15.5", - "rayon", ] [[package]] @@ -1119,7 +1114,6 @@ dependencies = [ "arrayvec", "digest 0.10.7", "num-bigint 0.4.6", - "rayon", ] [[package]] @@ -1173,7 +1167,6 @@ checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" dependencies = [ "num-traits", "rand 0.8.5", - "rayon", ] [[package]] @@ -2098,27 +2091,18 @@ dependencies = [ "ark-groth16", "ark-serialize 0.5.0", "bincode", - "blake3", "bonsai-sdk 1.4.1 (git+https://github.com/risc0/risc0?branch=flaub%2Fshrink-bitvm2)", "borsh", "boundless-market", - "bytemuck", "circom-witnesscalc", - "crypto-bigint 0.5.2", - "derive_more", "hex", "num-bigint 0.4.6", "num-traits", - "risc0-binfmt", - "risc0-circuit-recursion", - "risc0-core", "risc0-groth16", "risc0-groth16-sys", - "risc0-zkp", "risc0-zkvm", "serde", "serde_json", - "sha2", "tempfile", "tokio", "tracing", @@ -2824,15 +2808,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" -dependencies = [ - "getrandom 0.2.16", - "subtle", -] - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -3186,7 +3161,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -4039,12 +4014,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", "serde", + "serde_core", ] [[package]] @@ -8679,9 +8655,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" [[package]] name = "vcpkg" diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index d4887d402..31932ca79 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -2,17 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addchain" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" -dependencies = [ - "num-bigint 0.3.3", - "num-integer", - "num-traits", -] - [[package]] name = "addr2line" version = "0.24.2" @@ -773,15 +762,6 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - [[package]] name = "ark-bn254" version = "0.5.0" @@ -842,7 +822,7 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "zeroize", @@ -859,7 +839,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.3.3", @@ -879,7 +859,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.4.1", @@ -900,7 +880,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "zeroize", @@ -942,7 +922,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "quote", "syn 1.0.109", @@ -954,7 +934,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -967,7 +947,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -1015,7 +995,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "tracing", @@ -1051,7 +1031,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1064,7 +1044,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1126,12 +1106,6 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - [[package]] name = "arrayvec" version = "0.7.6" @@ -1906,19 +1880,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "blake3" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - [[package]] name = "block" version = "0.1.6" @@ -2007,8 +1968,6 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", - "blake3", - "borsh", "bytemuck", "chrono", "clap", @@ -2021,8 +1980,6 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", - "risc0-binfmt", - "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", "rmp-serde", @@ -2317,12 +2274,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constant_time_eq" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" - [[package]] name = "core-foundation" version = "0.9.4" @@ -2412,25 +2363,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2610,17 +2542,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "derive_builder" version = "0.20.2" @@ -2694,15 +2615,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" -dependencies = [ - "dirs-sys", -] - [[package]] name = "dirs" version = "6.0.0" @@ -2768,20 +2680,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" -[[package]] -name = "downloader" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" -dependencies = [ - "digest 0.10.7", - "futures", - "rand 0.8.5", - "reqwest", - "thiserror 1.0.69", - "tokio", -] - [[package]] name = "dunce" version = "1.0.5" @@ -3025,28 +2923,10 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "bitvec", - "byteorder", - "ff_derive", "rand_core 0.6.4", "subtle", ] -[[package]] -name = "ff_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" -dependencies = [ - "addchain", - "num-bigint 0.3.3", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "find-msvc-tools" version = "0.1.0" @@ -3071,16 +2951,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" -[[package]] -name = "flate2" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - [[package]] name = "fnv" version = "1.0.7" @@ -3282,10 +3152,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -3295,11 +3163,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.3+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -3669,7 +3535,6 @@ dependencies = [ "tokio", "tokio-rustls 0.26.2", "tower-service", - "webpki-roots", ] [[package]] @@ -4183,9 +4048,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" dependencies = [ "value-bag", ] @@ -4208,12 +4073,6 @@ dependencies = [ "hashbrown 0.15.5", ] -[[package]] -name = "lru-slab" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" - [[package]] name = "macro-string" version = "0.1.4" @@ -4243,16 +4102,6 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matrixmultiply" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" -dependencies = [ - "autocfg", - "rawpointer", -] - [[package]] name = "md-5" version = "0.10.6" @@ -4325,7 +4174,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] @@ -4356,22 +4204,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "ndarray" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" -dependencies = [ - "matrixmultiply", - "num-complex", - "num-integer", - "num-traits", - "portable-atomic", - "portable-atomic-util", - "rawpointer", - "rayon", -] - [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4403,17 +4235,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -4441,15 +4262,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "num-complex" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" -dependencies = [ - "num-traits", -] - [[package]] name = "num-conv" version = "0.1.0" @@ -4517,15 +4329,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "nvtx" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" -dependencies = [ - "cc", -] - [[package]] name = "nybbles" version = "0.4.3" @@ -4845,21 +4648,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "portable-atomic" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" - -[[package]] -name = "portable-atomic-util" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" -dependencies = [ - "portable-atomic", -] - [[package]] name = "postcard" version = "1.1.3" @@ -5007,81 +4795,12 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "puffin" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" -dependencies = [ - "anyhow", - "byteorder", - "cfg-if", - "itertools 0.10.5", - "once_cell", - "parking_lot", -] - [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" -[[package]] -name = "quinn" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" -dependencies = [ - "bytes", - "cfg_aliases", - "pin-project-lite", - "quinn-proto", - "quinn-udp", - "rustc-hash 2.1.1", - "rustls 0.23.31", - "socket2 0.6.0", - "thiserror 2.0.16", - "tokio", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-proto" -version = "0.11.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" -dependencies = [ - "bytes", - "getrandom 0.3.3", - "lru-slab", - "rand 0.9.2", - "ring", - "rustc-hash 2.1.1", - "rustls 0.23.31", - "rustls-pki-types", - "slab", - "thiserror 2.0.16", - "tinyvec", - "tracing", - "web-time", -] - -[[package]] -name = "quinn-udp" -version = "0.5.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" -dependencies = [ - "cfg_aliases", - "libc", - "once_cell", - "socket2 0.6.0", - "tracing", - "windows-sys 0.60.2", -] - [[package]] name = "quote" version = "1.0.40" @@ -5174,32 +4893,6 @@ dependencies = [ "rand_core 0.9.3", ] -[[package]] -name = "rawpointer" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" - -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "redox_syscall" version = "0.5.17" @@ -5312,8 +5005,6 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", - "quinn", - "rustls 0.23.31", "rustls-pki-types", "serde", "serde_json", @@ -5321,7 +5012,6 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", "tower", "tower-http", "tower-service", @@ -5329,7 +5019,6 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", ] [[package]] @@ -5440,20 +5129,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "risc0-build-kernel" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" -dependencies = [ - "cc", - "directories", - "hex", - "rayon", - "sha2", - "tempfile", -] - [[package]] name = "risc0-circuit-keccak" version = "4.0.3" @@ -5478,33 +5153,11 @@ checksum = "028cd26e1b1f7bdd964d2f1eac8f812d1872b6b8fd24f10804f07d916b90000e" dependencies = [ "anyhow", "bytemuck", - "cfg-if", - "downloader", "hex", - "lazy-regex", "metal", - "rand 0.9.2", - "rayon", - "risc0-circuit-recursion-sys", "risc0-core", - "risc0-sys", "risc0-zkp", - "serde", - "sha2", "tracing", - "zip", -] - -[[package]] -name = "risc0-circuit-recursion-sys" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" -dependencies = [ - "glob", - "risc0-build-kernel", - "risc0-core", - "risc0-sys", ] [[package]] @@ -5532,8 +5185,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", - "nvtx", - "puffin", "rand_core 0.9.3", ] @@ -5570,23 +5221,13 @@ dependencies = [ "ark-serialize 0.5.0", "bytemuck", "hex", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] -[[package]] -name = "risc0-sys" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" -dependencies = [ - "anyhow", - "risc0-build-kernel", -] - [[package]] name = "risc0-zkos-v1compat" version = "2.2.1" @@ -5610,18 +5251,12 @@ dependencies = [ "bytemuck", "cfg-if", "digest 0.10.7", - "ff 0.13.1", "hex", "hex-literal", "metal", - "ndarray", - "parking_lot", "paste", - "rand 0.9.2", "rand_core 0.9.3", - "rayon", "risc0-core", - "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", @@ -5755,7 +5390,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "parity-scale-codec", @@ -5864,7 +5499,6 @@ checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", - "ring", "rustls-pki-types", "rustls-webpki 0.103.4", "subtle", @@ -5910,7 +5544,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "web-time", "zeroize", ] @@ -6341,12 +5974,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - [[package]] name = "similar" version = "2.7.0" @@ -6719,21 +6346,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tinyvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" version = "1.47.1" @@ -7300,25 +6912,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "4.4.2" @@ -7753,35 +7346,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap 2.11.0", - "memchr", - "thiserror 2.0.16", - "zopfli", -] - -[[package]] -name = "zopfli" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] - [[patch.unused]] name = "sha2" version = "0.10.8" diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 7d74767b4..8e899d270 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -22,7 +22,7 @@ dependencies = [ "cpp_demangle", "fallible-iterator", "gimli 0.31.1", - "memmap2 0.9.8", + "memmap2 0.9.9", "object 0.36.7", "rustc-demangle", "smallvec", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -73,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17c19591d57add4f0c47922877a48aae1f47074e3433436545f8948353b3bbb" +checksum = "e01db470290bb814e0485fa79aba6e36bb5d221c2e3cfeba5fba05a8a2ca8dad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -97,9 +97,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ "alloy-primitives", "num_enum", @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0dd3ed764953a6b20458b2b7abbfdc93d20d14b38babe1a70fe631a443a9f1" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9556182afa73cddffa91e64a5aa9508d5e8c912b3a15f26998d2388a824d2c7b" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19d7092c96defc3d132ee0d8969ca1b79ef512b5eda5c66e3065266b253adf2" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -213,32 +213,34 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fa99b538ca7006b0c03cfed24ec6d82beda67aac857ef4714be24231d15e6" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -258,9 +260,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a272533715aefc900f89d51db00c96e6fd4f517ea081a12fea482a352c8c815c" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -285,9 +287,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -297,9 +299,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91676d242c0ced99c0dd6d0096d7337babe9457cc43407d26aa6367fcf90553" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -312,9 +314,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f82150116b30ba92f588b87f08fa97a46a1bd5ffc0d0597efdf0843d36bfda" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -338,9 +340,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223612259a080160ce839a4e5df0125ca403a1d5e7206cc911cea54af5d769aa" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -351,9 +353,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3652a65bacfba0a169755090d4ecd7d3c63fa534b21d09b8e604dc2609760da6" +checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -372,9 +374,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", @@ -383,7 +385,7 @@ dependencies = [ "derive_more", "foldhash 0.2.0", "hashbrown 0.16.0", - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", @@ -399,9 +401,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7283b81b6f136100b152e699171bc7ed8184a58802accbc91a7df4ebb944445" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -457,14 +459,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1154b12d470bef59951c62676e106f4ce5de73b987d86b9faa935acebb138ded" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -485,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ab76bf97648a1c6ad8fb00f0d594618942b5a9e008afbfb5c8a8fca800d574" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -497,9 +499,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456cfc2c1677260edbd7ce3eddb7de419cb46de0e9826c43401f42b0286a779a" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -509,9 +511,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cc57ee0c1ac9fb14854195fc249494da7416591dc4a4d981ddfd5dd93b9bce" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -520,9 +522,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7d47bca1a2a1541e4404aa38b7e262bb4dffd9ac23b4f178729a4ddc5a5caa" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -541,9 +543,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8468f1a7f9ee3bae73c24eead0239abea720dbf7779384b9c7e20d51bfb6b0" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "serde", @@ -552,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33387c90b0a5021f45a5a77c2ce6c49b8f6980e66a318181468fb24cea771670" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives", "async-trait", @@ -567,9 +569,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55d9e795c85e36dcea08786d2e7ae9b73cb554b6bea6ac4c212def24e1b4d03" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", @@ -583,42 +585,42 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.4", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -628,15 +630,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -644,9 +646,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -656,12 +658,11 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702002659778d89a94cd4ff2044f6b505460df6c162e2f47d1857573845b0ace" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64 0.22.1", "derive_more", @@ -680,9 +681,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6bdc0830e5e8f08a4c70a4c791d400a86679c694a3b4b986caf26fad680438" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -711,15 +712,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf39928a5e70c9755d6811a2928131b53ba785ad37c8bf85c90175b5d43b818" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -850,7 +850,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -959,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -997,7 +997,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1101,7 +1101,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1369,7 +1369,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1386,7 +1386,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1421,7 +1421,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1432,9 +1432,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.8" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37cf2b6af2a95a20e266782b4f76f1a5e12bf412a9db2de9c1e9123b9d8c0ad8" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1462,9 +1462,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.8" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf26925f4a5b59eb76722b63c2892b1d70d06fa053c72e4a100ec308c1d47bc" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1484,23 +1484,22 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libloading", ] [[package]] name = "aws-runtime" -version = "1.5.12" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa006bb32360ed90ac51203feafb9d02e3d21046e1fd3a450a404b90ea73e5d" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1523,9 +1522,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.108.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200be4aed61e3c0669f7268bacb768f283f1c32a7014ce57225e1160be2f6ccb" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1557,9 +1556,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.86.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0abbfab841446cce6e87af853a3ba2cc1bc9afcd3f3550dd556c43d434c86d" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1579,9 +1578,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a68d675582afea0e94d38b6ca9c5aaae4ca14f1d36faa6edb19b42e687e70d7" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1601,9 +1600,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30990923f4f675523c51eb1c0dec9b752fb267b36a61e83cbc219c9d86da715" +checksum = "8f8090151d4d1e971269957b10dbf287bba551ab812e591ce0516b1c73b75d27" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1624,9 +1623,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.5" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffc03068fbb9c8dd5ce1c6fb240678a5cffb86fb2b7b1985c999c4b83c8df68" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1663,9 +1662,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.9" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165d8583d8d906e2fb5511d29201d447cc710864f075debcdd9c31c265412806" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1683,9 +1682,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.12" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9656b85088f8d9dc7ad40f9a6c7228e1e8447cdf4b046c87e152e0805dea02fa" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -1694,9 +1693,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.4" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3feafd437c763db26aa04e0cc7591185d0961e64c61885bece0fb9d50ceac671" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1704,6 +1703,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", "http 1.3.1", "http-body 0.4.6", @@ -1715,9 +1715,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1053b5e587e6fa40ce5a79ea27957b04ba660baa02b28b7436f64850152234f1" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1734,8 +1734,8 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -1745,9 +1745,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.6" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff418fc8ec5cadf8173b10125f05c2e7e1d46771406187b2c878557d4503390" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] @@ -1773,9 +1773,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ab99739082da5347660c556689256438defae3bcefd66c52b095905730e404" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1797,9 +1797,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3683c5b152d2ad753607179ed71988e8cfd52964443b4f74fd8e552d0bbfeb46" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1814,9 +1814,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f5b3a7486f6690ba25952cabf1e7d75e34d69eaff5081904a47bc79074d6457" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", @@ -1840,18 +1840,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c34127e8c624bc2999f3b657e749c1393bedc9cd97b92a804db8ced4d2e163" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.9" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2fd329bf0e901ff3f60425691410c69094dc2a1f34b331f37bfc4e9ac1565a1" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1942,7 +1942,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1953,7 +1953,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2010,11 +2010,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2159,7 +2159,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2343,7 +2343,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2447,9 +2447,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.40" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -2468,9 +2468,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2506,7 +2506,7 @@ dependencies = [ "byteorder", "indicatif", "libc", - "memmap2 0.9.8", + "memmap2 0.9.9", "num-bigint 0.4.6", "num-traits", "prost", @@ -2534,9 +2534,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2544,9 +2544,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2556,21 +2556,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -2620,9 +2620,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", @@ -2734,15 +2734,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -2920,7 +2920,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2935,7 +2935,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2946,7 +2946,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2957,7 +2957,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3003,9 +3003,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -3030,7 +3030,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3051,7 +3051,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3061,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3081,7 +3081,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "unicode-xid", ] @@ -3165,7 +3165,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3208,9 +3208,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck", "proc-macro2", @@ -3259,7 +3259,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3370,34 +3370,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", ] @@ -3422,9 +3422,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", "serde_core", @@ -3586,9 +3586,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "find_cuda_helper" @@ -3625,9 +3625,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3689,7 +3689,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3814,7 +3814,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3855,11 +3855,11 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gdbstub" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +checksum = "72742d2b395902caf8a5d520d0dd3334ba6d1138938429200e58d5174e275f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "log", "managed", @@ -3879,9 +3879,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3897,21 +3897,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -3922,7 +3922,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.4", + "indexmap 2.12.0", "stable_deref_trait", ] @@ -4020,7 +4020,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4039,7 +4039,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4167,11 +4167,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4396,8 +4396,8 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -4439,7 +4439,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4473,9 +4473,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4486,9 +4486,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4499,11 +4499,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4514,42 +4513,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -4601,7 +4596,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4623,9 +4618,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", "hashbrown 0.16.0", @@ -4687,17 +4682,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -4706,9 +4690,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -4716,9 +4700,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4768,15 +4752,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -4877,9 +4861,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4888,14 +4872,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4915,18 +4899,18 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.5", + "windows-link 0.2.1", ] [[package]] @@ -4961,7 +4945,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", "redox_syscall 0.5.18", ] @@ -4991,9 +4975,9 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -5045,7 +5029,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5148,7 +5132,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5178,9 +5162,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -5203,7 +5187,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -5232,7 +5216,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5281,19 +5265,19 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -5384,7 +5368,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -5399,11 +5383,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5429,11 +5413,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -5467,7 +5450,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5512,9 +5495,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -5522,13 +5505,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5597,17 +5580,17 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5624,7 +5607,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5635,9 +5618,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -5693,7 +5676,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5788,7 +5771,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5798,7 +5781,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5833,7 +5816,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5940,9 +5923,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -5975,7 +5958,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5995,7 +5978,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.7", ] [[package]] @@ -6017,14 +6000,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -6037,21 +6020,19 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -6088,7 +6069,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -6102,7 +6083,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6146,8 +6127,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.32", - "socket2 0.6.0", + "rustls 0.23.35", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -6161,12 +6142,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -6184,16 +6165,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6268,7 +6249,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -6322,7 +6303,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6364,7 +6345,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6381,9 +6362,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -6393,9 +6374,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -6404,15 +6385,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "requestor-lists" @@ -6428,9 +6409,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6454,7 +6435,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -6973,7 +6954,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -7119,7 +7100,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -7132,7 +7113,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", @@ -7153,15 +7134,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.32" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.7", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -7180,9 +7161,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -7201,9 +7182,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -7221,9 +7202,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.7" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -7324,9 +7305,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -7406,7 +7387,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7419,7 +7400,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7491,7 +7472,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7540,17 +7521,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -7559,14 +7540,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7738,12 +7719,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7816,7 +7797,7 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.12.0", "log", "memchr", "once_cell", @@ -7842,7 +7823,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7865,7 +7846,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -7878,7 +7859,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "bytes", "crc", @@ -7920,7 +7901,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "crc", "dotenvy", @@ -7997,14 +7978,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -8059,7 +8040,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8081,9 +8062,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -8092,14 +8073,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8119,7 +8100,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8128,7 +8109,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8162,7 +8143,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.2", "windows-sys 0.61.2", @@ -8198,7 +8179,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8227,7 +8208,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8238,7 +8219,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8301,9 +8282,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -8326,33 +8307,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", + "mio 1.1.0", "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8381,7 +8359,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.32", + "rustls 0.23.35", "tokio", ] @@ -8413,9 +8391,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -8447,9 +8425,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -8460,7 +8438,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -8470,21 +8448,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.4", - "toml_datetime 0.7.2", + "indexmap 2.12.0", + "toml_datetime 0.7.3", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -8516,7 +8494,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -8560,7 +8538,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8698,7 +8676,7 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8739,24 +8717,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-width" @@ -8824,7 +8802,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_json", "utoipa-gen", @@ -8838,7 +8816,7 @@ checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8847,7 +8825,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -8928,15 +8906,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -8954,9 +8923,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", @@ -8965,25 +8934,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -8994,9 +8949,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9004,22 +8959,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -9068,9 +9023,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -9088,9 +9043,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -9211,7 +9166,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9222,7 +9177,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9551,9 +9506,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wtns-file" @@ -9596,19 +9551,12 @@ dependencies = [ "hashlink", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -9616,13 +9564,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9643,7 +9591,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9663,7 +9611,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9684,14 +9632,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -9700,9 +9648,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -9711,13 +9659,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9731,7 +9679,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.0", "memchr", "thiserror 2.0.17", "zopfli", @@ -9739,9 +9687,9 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index 05255c637..755e9c395 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -22,7 +22,7 @@ dependencies = [ "cpp_demangle", "fallible-iterator", "gimli 0.31.1", - "memmap2 0.9.8", + "memmap2 0.9.9", "object 0.36.7", "rustc-demangle", "smallvec", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -73,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17c19591d57add4f0c47922877a48aae1f47074e3433436545f8948353b3bbb" +checksum = "e01db470290bb814e0485fa79aba6e36bb5d221c2e3cfeba5fba05a8a2ca8dad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -97,9 +97,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ "alloy-primitives", "num_enum", @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0dd3ed764953a6b20458b2b7abbfdc93d20d14b38babe1a70fe631a443a9f1" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9556182afa73cddffa91e64a5aa9508d5e8c912b3a15f26998d2388a824d2c7b" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19d7092c96defc3d132ee0d8969ca1b79ef512b5eda5c66e3065266b253adf2" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -213,32 +213,34 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fa99b538ca7006b0c03cfed24ec6d82beda67aac857ef4714be24231d15e6" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -258,9 +260,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a272533715aefc900f89d51db00c96e6fd4f517ea081a12fea482a352c8c815c" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -285,9 +287,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -297,9 +299,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91676d242c0ced99c0dd6d0096d7337babe9457cc43407d26aa6367fcf90553" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -312,9 +314,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f82150116b30ba92f588b87f08fa97a46a1bd5ffc0d0597efdf0843d36bfda" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -338,9 +340,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223612259a080160ce839a4e5df0125ca403a1d5e7206cc911cea54af5d769aa" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -351,9 +353,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3652a65bacfba0a169755090d4ecd7d3c63fa534b21d09b8e604dc2609760da6" +checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -372,9 +374,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", @@ -383,7 +385,7 @@ dependencies = [ "derive_more", "foldhash 0.2.0", "hashbrown 0.16.0", - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", @@ -399,9 +401,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7283b81b6f136100b152e699171bc7ed8184a58802accbc91a7df4ebb944445" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -457,14 +459,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1154b12d470bef59951c62676e106f4ce5de73b987d86b9faa935acebb138ded" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -485,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ab76bf97648a1c6ad8fb00f0d594618942b5a9e008afbfb5c8a8fca800d574" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -497,9 +499,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456cfc2c1677260edbd7ce3eddb7de419cb46de0e9826c43401f42b0286a779a" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -509,9 +511,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cc57ee0c1ac9fb14854195fc249494da7416591dc4a4d981ddfd5dd93b9bce" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -520,9 +522,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7d47bca1a2a1541e4404aa38b7e262bb4dffd9ac23b4f178729a4ddc5a5caa" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -541,9 +543,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8468f1a7f9ee3bae73c24eead0239abea720dbf7779384b9c7e20d51bfb6b0" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "serde", @@ -552,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33387c90b0a5021f45a5a77c2ce6c49b8f6980e66a318181468fb24cea771670" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives", "async-trait", @@ -567,9 +569,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55d9e795c85e36dcea08786d2e7ae9b73cb554b6bea6ac4c212def24e1b4d03" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", @@ -583,42 +585,42 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.4", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -628,15 +630,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -644,9 +646,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -656,12 +658,11 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702002659778d89a94cd4ff2044f6b505460df6c162e2f47d1857573845b0ace" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64 0.22.1", "derive_more", @@ -680,9 +681,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6bdc0830e5e8f08a4c70a4c791d400a86679c694a3b4b986caf26fad680438" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -711,15 +712,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf39928a5e70c9755d6811a2928131b53ba785ad37c8bf85c90175b5d43b818" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -850,7 +850,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -959,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -997,7 +997,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1101,7 +1101,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1369,7 +1369,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1386,7 +1386,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1421,7 +1421,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1432,9 +1432,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.8" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37cf2b6af2a95a20e266782b4f76f1a5e12bf412a9db2de9c1e9123b9d8c0ad8" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1462,9 +1462,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.8" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf26925f4a5b59eb76722b63c2892b1d70d06fa053c72e4a100ec308c1d47bc" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1484,23 +1484,22 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libloading", ] [[package]] name = "aws-runtime" -version = "1.5.12" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa006bb32360ed90ac51203feafb9d02e3d21046e1fd3a450a404b90ea73e5d" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1523,9 +1522,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.108.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200be4aed61e3c0669f7268bacb768f283f1c32a7014ce57225e1160be2f6ccb" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1557,9 +1556,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.86.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0abbfab841446cce6e87af853a3ba2cc1bc9afcd3f3550dd556c43d434c86d" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1579,9 +1578,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a68d675582afea0e94d38b6ca9c5aaae4ca14f1d36faa6edb19b42e687e70d7" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1601,9 +1600,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30990923f4f675523c51eb1c0dec9b752fb267b36a61e83cbc219c9d86da715" +checksum = "8f8090151d4d1e971269957b10dbf287bba551ab812e591ce0516b1c73b75d27" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1624,9 +1623,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.5" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffc03068fbb9c8dd5ce1c6fb240678a5cffb86fb2b7b1985c999c4b83c8df68" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1663,9 +1662,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.9" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165d8583d8d906e2fb5511d29201d447cc710864f075debcdd9c31c265412806" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1683,9 +1682,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.12" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9656b85088f8d9dc7ad40f9a6c7228e1e8447cdf4b046c87e152e0805dea02fa" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -1694,9 +1693,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.4" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3feafd437c763db26aa04e0cc7591185d0961e64c61885bece0fb9d50ceac671" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1704,6 +1703,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", "http 1.3.1", "http-body 0.4.6", @@ -1715,9 +1715,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1053b5e587e6fa40ce5a79ea27957b04ba660baa02b28b7436f64850152234f1" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1734,8 +1734,8 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -1745,9 +1745,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.6" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff418fc8ec5cadf8173b10125f05c2e7e1d46771406187b2c878557d4503390" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] @@ -1773,9 +1773,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ab99739082da5347660c556689256438defae3bcefd66c52b095905730e404" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1797,9 +1797,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3683c5b152d2ad753607179ed71988e8cfd52964443b4f74fd8e552d0bbfeb46" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1814,9 +1814,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f5b3a7486f6690ba25952cabf1e7d75e34d69eaff5081904a47bc79074d6457" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", @@ -1840,18 +1840,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c34127e8c624bc2999f3b657e749c1393bedc9cd97b92a804db8ced4d2e163" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.9" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2fd329bf0e901ff3f60425691410c69094dc2a1f34b331f37bfc4e9ac1565a1" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1942,7 +1942,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1953,7 +1953,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2010,11 +2010,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2159,7 +2159,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2343,7 +2343,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2447,9 +2447,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.40" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -2468,9 +2468,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2506,7 +2506,7 @@ dependencies = [ "byteorder", "indicatif", "libc", - "memmap2 0.9.8", + "memmap2 0.9.9", "num-bigint 0.4.6", "num-traits", "prost", @@ -2534,9 +2534,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2544,9 +2544,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2556,21 +2556,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -2620,9 +2620,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", @@ -2734,15 +2734,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -2920,7 +2920,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2935,7 +2935,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2946,7 +2946,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2957,7 +2957,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3003,9 +3003,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -3030,7 +3030,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3051,7 +3051,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3061,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3081,7 +3081,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "unicode-xid", ] @@ -3165,7 +3165,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3208,9 +3208,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck", "proc-macro2", @@ -3259,7 +3259,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3370,34 +3370,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", ] @@ -3422,9 +3422,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", "serde_core", @@ -3584,9 +3584,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "find_cuda_helper" @@ -3623,9 +3623,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3687,7 +3687,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3812,7 +3812,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3853,11 +3853,11 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gdbstub" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +checksum = "72742d2b395902caf8a5d520d0dd3334ba6d1138938429200e58d5174e275f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "log", "managed", @@ -3877,9 +3877,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3895,21 +3895,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -3920,7 +3920,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.4", + "indexmap 2.12.0", "stable_deref_trait", ] @@ -4018,7 +4018,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4037,7 +4037,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4165,11 +4165,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4394,8 +4394,8 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -4437,7 +4437,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4471,9 +4471,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4484,9 +4484,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4497,11 +4497,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4512,42 +4511,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -4599,7 +4594,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4621,9 +4616,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", "hashbrown 0.16.0", @@ -4685,17 +4680,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -4704,9 +4688,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -4714,9 +4698,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4766,15 +4750,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -4875,9 +4859,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4886,14 +4870,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4913,18 +4897,18 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.5", + "windows-link 0.2.1", ] [[package]] @@ -4959,7 +4943,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", "redox_syscall 0.5.18", ] @@ -4989,9 +4973,9 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -5043,7 +5027,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5146,7 +5130,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5176,9 +5160,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -5201,7 +5185,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -5230,7 +5214,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5279,19 +5263,19 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -5382,7 +5366,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -5397,11 +5381,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5427,11 +5411,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -5465,7 +5448,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5510,9 +5493,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -5520,13 +5503,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5595,17 +5578,17 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5622,7 +5605,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5633,9 +5616,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -5691,7 +5674,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5786,7 +5769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5796,7 +5779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5831,7 +5814,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5938,9 +5921,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -5973,7 +5956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5993,7 +5976,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.7", ] [[package]] @@ -6015,14 +5998,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -6035,21 +6018,19 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -6086,7 +6067,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -6100,7 +6081,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6144,8 +6125,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.32", - "socket2 0.6.0", + "rustls 0.23.35", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -6159,12 +6140,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -6182,16 +6163,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6266,7 +6247,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -6320,7 +6301,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6362,7 +6343,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6379,9 +6360,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -6391,9 +6372,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -6402,15 +6383,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "requestor-lists" @@ -6426,9 +6407,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6452,7 +6433,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -6971,7 +6952,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -7117,7 +7098,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -7130,7 +7111,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", @@ -7151,15 +7132,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.32" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.7", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -7178,9 +7159,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -7199,9 +7180,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -7219,9 +7200,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.7" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -7322,9 +7303,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -7404,7 +7385,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7417,7 +7398,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7489,7 +7470,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7538,17 +7519,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -7557,14 +7538,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7736,12 +7717,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7814,7 +7795,7 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.12.0", "log", "memchr", "once_cell", @@ -7840,7 +7821,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7863,7 +7844,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -7876,7 +7857,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "bytes", "crc", @@ -7918,7 +7899,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "crc", "dotenvy", @@ -7995,14 +7976,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -8057,7 +8038,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8079,9 +8060,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -8090,14 +8071,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8117,7 +8098,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8126,7 +8107,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8160,7 +8141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.2", "windows-sys 0.61.2", @@ -8196,7 +8177,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8225,7 +8206,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8236,7 +8217,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8299,9 +8280,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -8324,33 +8305,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", + "mio 1.1.0", "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8379,7 +8357,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.32", + "rustls 0.23.35", "tokio", ] @@ -8411,9 +8389,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -8445,9 +8423,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -8458,7 +8436,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -8468,21 +8446,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.4", - "toml_datetime 0.7.2", + "indexmap 2.12.0", + "toml_datetime 0.7.3", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -8514,7 +8492,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -8558,7 +8536,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8696,7 +8674,7 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8737,24 +8715,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-width" @@ -8822,7 +8800,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_json", "utoipa-gen", @@ -8836,7 +8814,7 @@ checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8845,7 +8823,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -8926,15 +8904,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -8952,9 +8921,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", @@ -8963,25 +8932,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -8992,9 +8947,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9002,22 +8957,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -9066,9 +9021,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -9086,9 +9041,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -9209,7 +9164,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9220,7 +9175,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9549,9 +9504,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wtns-file" @@ -9594,19 +9549,12 @@ dependencies = [ "hashlink", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -9614,13 +9562,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9641,7 +9589,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9661,7 +9609,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9682,14 +9630,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -9698,9 +9646,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -9709,13 +9657,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9729,7 +9677,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.0", "memchr", "thiserror 2.0.17", "zopfli", @@ -9737,9 +9685,9 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 976e8598e..582986d08 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -21,14 +21,23 @@ checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "cpp_demangle", "fallible-iterator", - "gimli", - "memmap2 0.9.8", - "object", + "gimli 0.31.1", + "memmap2 0.9.9", + "object 0.36.7", "rustc-demangle", "smallvec", "typed-arena", ] +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli 0.32.3", +] + [[package]] name = "adler2" version = "2.0.1" @@ -49,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -64,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6b7b6a501cba311fdb8f7d7798a6d9ca8a5bec16609f1629efeafbac68476e" +checksum = "e01db470290bb814e0485fa79aba6e36bb5d221c2e3cfeba5fba05a8a2ca8dad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -88,9 +97,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.9" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef8ff73a143281cb77c32006b04af9c047a6b8fe5860e85a88ad325328965355" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ "alloy-primitives", "num_enum", @@ -100,9 +109,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fec84ecc0f92bb13b2955d04d3d6bd638415f17069f7ed802de819642fa3a73c" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -119,15 +128,16 @@ dependencies = [ "rand 0.8.5", "secp256k1", "serde", + "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-consensus-any" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e953646f3d5bde9ddf26a0387a35e435044f8728602dc1cb5b9f5cadb642bd" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -139,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a411d7b472b11ceb953741faf26bad31dcac8236e2df84078951a6951561c4" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -156,14 +166,14 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-core" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -174,9 +184,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -198,37 +208,39 @@ dependencies = [ "alloy-rlp", "crc", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d9ebd288f87aa496179b83471f5b00bcd01def4048714234d3ddbf97a6b9dd2" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -243,14 +255,14 @@ dependencies = [ "serde", "serde_with", "sha2", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-genesis" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7517225168655178328679a37691b97fb67236d798e96f9e5ccfe2c769a88b9b" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -275,9 +287,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -287,24 +299,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9bedc5c977a179ef037ccadb2e711718118446b0a0cead3427fd5b6712b3" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives", "alloy-sol-types", "http 1.3.1", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c6bffd937626c66734750f022d1808ccf6d5432969044dfde973cae99930d8" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -323,14 +335,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf37162ea3d9809750c6279e09e1012124fc797b02ffb0651974a505f7f88ff" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -341,9 +353,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66feb57febd81b85a66480eeeb15579342aae1384445d8271bc965c50601554f" +checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -355,25 +367,25 @@ dependencies = [ "rand 0.8.5", "serde_json", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "url", ] [[package]] name = "alloy-primitives" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more", - "foldhash", - "hashbrown 0.15.5", - "indexmap 2.11.0", + "foldhash 0.2.0", + "hashbrown 0.16.0", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", @@ -381,7 +393,7 @@ dependencies = [ "proptest", "rand 0.9.2", "ruint", - "rustc-hash 2.1.1", + "rustc-hash", "serde", "sha3", "tiny-keccak", @@ -389,9 +401,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf52603a852c8040686e45649f1211987fa6c96885174a5c4a31a1e07c1ddef7" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -415,13 +427,13 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "lru 0.16.0", - "parking_lot 0.12.4", + "lru 0.13.0", + "parking_lot 0.12.5", "pin-project", "reqwest", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -447,14 +459,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87118d5dc24e682978fb51e3dc1cccb3ef3021e4b98825a357c3efb9256187d5" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -475,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835576f756f0e99b6341eb44d2de4bf162586995819da81f808b32265953167e" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -487,9 +499,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563ea9dff1d90a3be9454a86456e52b89b473a352003307e21c2f03a17019e30" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -499,9 +511,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953599f7a753a6d17296c21b40e15248b69b5845e8764b2fef696e2e012a3f84" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -510,9 +522,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0177e49c5d9dffbd8a427cbe757e202e5ef71718d5a8ae7d6858b6e3f448131b" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -526,14 +538,14 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-serde" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743e0fe099fe90a07215ae08413b271b8fac12fca6880c85326ce61341566e6f" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "serde", @@ -542,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "236cfc2c09ca2af29a2b0e622247c38e47657da97fc9636d5fbe64b6020026c6" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives", "async-trait", @@ -552,14 +564,14 @@ dependencies = [ "either", "elliptic-curve 0.13.8", "k256", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-local" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626cdb6bb897a09e74d7e502e1834eac83dc0fd94bbb4c9e2cf342dba7f037a9" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", @@ -568,47 +580,47 @@ dependencies = [ "async-trait", "k256", "rand 0.8.5", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "alloy-sol-macro" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.0", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -618,15 +630,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -634,9 +646,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -646,21 +658,20 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a568f574d8d11fc054e3a32f19f476fdcc4db9216246b1db0b2ecad157a6f963" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64 0.22.1", "derive_more", "futures", "futures-utils-wasm", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tower", "tracing", @@ -670,9 +681,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df4c00f7c7c6af5660423e6747d22f04ca7e019371eae2dc6535c17b1d636469" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -701,23 +712,16 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.28" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40696658bb1ac21f742107185fc2b0f60695598e4f16695e5bd24f4cfc0ddc29" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -729,9 +733,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.20" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -744,9 +748,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -779,9 +783,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" dependencies = [ "backtrace", ] @@ -846,7 +850,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -955,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -993,7 +997,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1097,7 +1101,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1246,20 +1250,20 @@ dependencies = [ [[package]] name = "async-io" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.8", + "rustix 1.1.2", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1284,9 +1288,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65daa13722ad51e6ab1a1b9c01299142bc75135b337923cfa10e79bbbd669f00" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel 2.5.0", "async-io", @@ -1297,14 +1301,14 @@ dependencies = [ "cfg-if", "event-listener 5.4.1", "futures-lite", - "rustix 1.0.8", + "rustix 1.1.2", ] [[package]] name = "async-signal" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f567af260ef69e1d52c2b560ce0ea230763e6fbb9214a85d768760a920e3e3c1" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" dependencies = [ "async-io", "async-lock", @@ -1312,10 +1316,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.8", + "rustix 1.1.2", "signal-hook-registry", "slab", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -1365,7 +1369,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1382,7 +1386,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1417,7 +1421,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1428,9 +1432,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.6" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bc1b40fb26027769f16960d2f4a6bc20c4bb755d403e552c8c1a73af433c246" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1458,9 +1462,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.6" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1470,9 +1474,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "879b6c89592deb404ba4dc0ae6b58ffd1795c78991cbb5b8bc441c48a070440d" dependencies = [ "aws-lc-sys", "zeroize", @@ -1480,11 +1484,11 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" dependencies = [ - "bindgen 0.69.5", + "bindgen", "cc", "cmake", "dunce", @@ -1493,9 +1497,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.10" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1518,9 +1522,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.104.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c488cd6abb0ec9811c401894191932e941c5f91dc226043edacd0afa1634bc" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1552,9 +1556,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.83.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cd43af212d2a1c4dedff6f044d7e1961e5d9e7cfe773d70f31d9842413886" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1574,9 +1578,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.84.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20ec4a95bd48e0db7a424356a161f8d87bd6a4f0af37204775f0da03d9e39fc3" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1596,9 +1600,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.85.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" +checksum = "8f8090151d4d1e971269957b10dbf287bba551ab812e591ce0516b1c73b75d27" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1619,9 +1623,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.4" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084c34162187d39e3740cb635acd73c4e3a551a36146ad6fe8883c929c9f876c" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1647,9 +1651,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e190749ea56f8c42bf15dd76c65e14f8f765233e6df9b0506d9d934ebef867c" +checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" dependencies = [ "futures-util", "pin-project-lite", @@ -1658,9 +1662,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.8" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d2df0314b8e307995a3b86d44565dfe9de41f876901a7d71886c756a25979f" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1678,9 +1682,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.11" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "182b03393e8c677347fb5705a04a9392695d47d20ef0a2f8cfe28c8e6b9b9778" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -1689,9 +1693,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.3" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c4dacf2d38996cf729f55e7a762b30918229917eca115de45dfa8dfb97796c9" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1699,6 +1703,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", "http 1.3.1", "http-body 0.4.6", @@ -1710,9 +1715,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1729,38 +1734,38 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.31", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower", "tracing", ] [[package]] name = "aws-smithy-json" -version = "0.61.5" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-observability" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9364d5989ac4dd918e5cc4c4bdcc61c9be17dcd2586ea7f69e348fc7c6cab393" +checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-query" -version = "0.60.7" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" +checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" dependencies = [ "aws-smithy-types", "urlencoding", @@ -1768,9 +1773,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.1" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3946acbe1ead1301ba6862e712c7903ca9bb230bdf1fbd1b5ac54158ef2ab1f" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1792,9 +1797,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1809,9 +1814,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d498595448e43de7f4296b7b7a18a8a02c61ec9349128c80a368f7c3b4ab11a8" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", @@ -1835,18 +1840,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.10" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db87b96cb1b16c024980f133968d52882ca0daaee3a086c6decc500f6c99728" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.8" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b069d19bf01e46298eaedd7c6f283fe565a59263e53eebec945f3e6398f42390" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1858,17 +1863,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ - "addr2line", + "addr2line 0.25.1", "cfg-if", "libc", "miniz_oxide", - "object", + "object 0.37.3", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -1931,36 +1936,13 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.9.4", - "cexpr", - "clang-sys", - "itertools 0.12.1", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.106", - "which", -] - [[package]] name = "bindgen" version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1969,9 +1951,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2028,11 +2010,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2121,9 +2103,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2141,7 +2123,7 @@ dependencies = [ "maybe-async", "reqwest", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -2153,7 +2135,7 @@ dependencies = [ "maybe-async", "reqwest", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", ] @@ -2177,7 +2159,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2190,7 +2172,7 @@ dependencies = [ "postcard", "risc0-zkvm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -2229,7 +2211,7 @@ dependencies = [ "sha2", "siwe", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "time", "tokio", "tokio-tungstenite", @@ -2321,7 +2303,7 @@ dependencies = [ "sha2", "sqlx", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-util", "toml", @@ -2346,22 +2328,22 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f154e572231cb6ba2bd1176980827e3d5dc04cc183a75dea38109fbdd672d29" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2391,9 +2373,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "2.1.1" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" dependencies = [ "blst", "cc", @@ -2433,11 +2415,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.12" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0b03af37dad7a14518b7691d81acb0f8222604ad3d1b02f6b4bed5188c0cd5" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2457,17 +2439,17 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "cc" -version = "1.2.35" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -2486,9 +2468,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2498,17 +2480,16 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -2521,11 +2502,11 @@ dependencies = [ "ark-bn254", "ark-ff 0.5.0", "ark-serialize 0.5.0", - "bindgen 0.72.1", + "bindgen", "byteorder", "indicatif", "libc", - "memmap2 0.9.8", + "memmap2 0.9.9", "num-bigint 0.4.6", "num-traits", "prost", @@ -2535,7 +2516,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "winnow", "wtns-file", ] @@ -2553,9 +2534,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.46" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2563,9 +2544,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.46" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2575,21 +2556,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -2606,7 +2587,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -2633,21 +2614,20 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "windows-sys 0.59.0", ] [[package]] name = "const-hex" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dccd746bf9b1038c0507b7cec21eb2b11222db96a2902c96e8c185d6d20fb9c4" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -2658,9 +2638,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -2721,9 +2701,9 @@ dependencies = [ [[package]] name = "cpp_demangle" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" +checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" dependencies = [ "cfg-if", ] @@ -2754,15 +2734,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -2940,7 +2920,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2955,7 +2935,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2966,7 +2946,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2977,7 +2957,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2991,7 +2971,7 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -3023,12 +3003,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -3050,7 +3030,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3071,7 +3051,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3081,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3101,7 +3081,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "unicode-xid", ] @@ -3163,7 +3143,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3185,7 +3165,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3228,9 +3208,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck", "proc-macro2", @@ -3279,7 +3259,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3390,34 +3370,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", ] @@ -3442,22 +3422,23 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", + "serde_core", "typeid", ] [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3603,9 +3584,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.0" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "find_cuda_helper" @@ -3642,9 +3623,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3673,6 +3654,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "foreign-types" version = "0.3.2" @@ -3700,7 +3687,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3795,7 +3782,7 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -3825,7 +3812,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3866,11 +3853,11 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gdbstub" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +checksum = "72742d2b395902caf8a5d520d0dd3334ba6d1138938429200e58d5174e275f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "log", "managed", @@ -3888,25 +3875,11 @@ dependencies = [ "num-traits", ] -[[package]] -name = "generator" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" -dependencies = [ - "cc", - "cfg-if", - "libc", - "log", - "rustversion", - "windows", -] - [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3922,21 +3895,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.3+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -3947,10 +3920,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.0", + "indexmap 2.12.0", "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + [[package]] name = "glam" version = "0.20.5" @@ -4039,7 +4018,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4058,7 +4037,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.0", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4097,7 +4076,16 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", "serde", ] @@ -4141,9 +4129,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -4180,11 +4165,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4409,11 +4394,11 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.31", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower-service", "webpki-roots", ] @@ -4436,9 +4421,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ "base64 0.22.1", "bytes", @@ -4452,7 +4437,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4462,9 +4447,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4486,9 +4471,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4499,9 +4484,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4512,11 +4497,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4527,42 +4511,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -4614,7 +4594,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4636,13 +4616,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -4654,7 +4635,7 @@ dependencies = [ "console", "number_prefix", "portable-atomic", - "unicode-width 0.2.1", + "unicode-width 0.2.2", "web-time", ] @@ -4699,17 +4680,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -4718,9 +4688,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -4728,9 +4698,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4750,15 +4720,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -4789,15 +4750,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -4898,9 +4859,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4909,14 +4870,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4928,12 +4889,6 @@ dependencies = [ "spin", ] -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "levenshtein" version = "1.0.5" @@ -4942,25 +4897,25 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.175" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.3", + "windows-link 0.2.1", ] [[package]] name = "liblzma" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10bf66f4598dc77ff96677c8e763655494f00ff9c1cf79e2eb5bb07bc31f807d" +checksum = "73c36d08cad03a3fbe2c4e7bb3a9e84c57e4ee4135ed0b065cade3d98480c648" dependencies = [ "liblzma-sys", ] @@ -4984,13 +4939,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", ] [[package]] @@ -5012,48 +4967,34 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] -[[package]] -name = "loom" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "tracing", - "tracing-subscriber 0.3.20", -] - [[package]] name = "lru" version = "0.12.5" @@ -5065,9 +5006,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.16.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86ea4e65087ff52f3862caff188d489f1fab49a0cb09e01b2e3f1a617b10aaed" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" dependencies = [ "hashbrown 0.15.5", ] @@ -5086,7 +5027,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5189,7 +5130,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5204,9 +5145,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memmap2" @@ -5219,9 +5160,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -5244,7 +5185,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -5273,7 +5214,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5305,6 +5246,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -5321,40 +5263,39 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] name = "moka" -version = "0.12.10" +version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" +checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" dependencies = [ "async-lock", "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", + "equivalent", "event-listener 5.4.1", "futures-util", - "loom", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "portable-atomic", "rustc_version 0.4.1", "smallvec", "tagptr", - "thiserror 1.0.69", "uuid", ] @@ -5425,7 +5366,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -5440,11 +5381,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5470,11 +5411,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -5508,7 +5448,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5553,9 +5493,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -5563,13 +5503,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5589,9 +5529,9 @@ dependencies = [ [[package]] name = "nybbles" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63cb50036b1ad148038105af40aaa70ff24d8a14fbc44ae5c914e1348533d12e" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", "cfg-if", @@ -5621,6 +5561,15 @@ dependencies = [ "ruzstd", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -5629,17 +5578,17 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5656,7 +5605,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5667,9 +5616,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -5725,7 +5674,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5747,12 +5696,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", - "parking_lot_core 0.9.11", + "parking_lot_core 0.9.12", ] [[package]] @@ -5771,15 +5720,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.17", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -5805,12 +5754,11 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 2.0.16", "ucd-trie", ] @@ -5821,7 +5769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.11.0", + "indexmap 2.12.0", ] [[package]] @@ -5831,7 +5779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.11.0", + "indexmap 2.12.0", ] [[package]] @@ -5866,7 +5814,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5931,16 +5879,16 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "polling" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -5973,9 +5921,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -6008,7 +5956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6024,11 +5972,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -6050,14 +5998,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -6070,21 +6018,19 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -6121,7 +6067,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -6135,7 +6081,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6158,7 +6104,7 @@ dependencies = [ "cfg-if", "itertools 0.10.5", "once_cell", - "parking_lot 0.12.4", + "parking_lot 0.12.5", ] [[package]] @@ -6178,10 +6124,10 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", - "rustls 0.23.31", - "socket2 0.6.0", - "thiserror 2.0.16", + "rustc-hash", + "rustls 0.23.35", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -6194,15 +6140,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", - "rustls 0.23.31", + "rustc-hash", + "rustls 0.23.35", "rustls-pki-types", "slab", - "thiserror 2.0.16", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -6217,16 +6163,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6301,7 +6247,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -6351,11 +6297,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.17" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6377,46 +6323,46 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "reflink-copy" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c81d000a2c524133cc00d2f92f019d399e57906c3b7119271a2495354fe895" +checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.0.8", + "rustix 1.1.2", "windows", ] [[package]] name = "regex" -version = "1.11.2" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -6426,9 +6372,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -6437,15 +6383,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "requestor-lists" @@ -6455,15 +6401,15 @@ dependencies = [ "reqwest", "serde", "serde_json", - "thiserror 2.0.16", + "thiserror 2.0.17", "url", ] [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6487,7 +6433,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.31", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -6495,7 +6441,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tower", "tower-http", @@ -6609,7 +6555,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", ] [[package]] @@ -6629,7 +6575,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "ruint", - "semver 1.0.26", + "semver 1.0.27", "serde", "tracing", ] @@ -6651,7 +6597,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "stability", @@ -6845,7 +6791,7 @@ dependencies = [ "risc0-aggregation", "risc0-zkvm", "serde", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", ] @@ -6933,7 +6879,7 @@ dependencies = [ "hex-literal", "metal", "ndarray", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "paste", "rand 0.9.2", "rand_core 0.9.3", @@ -6953,7 +6899,7 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c39d9943fe71decea1e8b6a99480cefa33799ab08b5abfccd7e2a18fb07121c1" dependencies = [ - "addr2line", + "addr2line 0.24.2", "anyhow", "bincode", "bonsai-sdk 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6965,13 +6911,13 @@ dependencies = [ "enum-map", "gdbstub", "gdbstub_arch", - "gimli", + "gimli 0.31.1", "hex", "keccak", "lazy-regex", "num-bigint 0.4.6", "num-traits", - "object", + "object 0.36.7", "prost", "rand 0.9.2", "rayon", @@ -6988,7 +6934,7 @@ dependencies = [ "rrs-lib", "rustc-demangle", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "sha2", "stability", @@ -7006,7 +6952,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -7077,13 +7023,14 @@ dependencies = [ [[package]] name = "ruint" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecb38f82477f20c5c3d62ef52d7c4e536e38ea9b73fb570a20c5cae0e14bcf6" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "borsh", "bytes", "fastrlp 0.3.1", @@ -7098,7 +7045,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -7115,12 +7062,6 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -7148,7 +7089,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] @@ -7157,7 +7098,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -7166,15 +7107,15 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", ] [[package]] @@ -7191,15 +7132,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.31" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.4", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -7218,14 +7159,14 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.5.1", ] [[package]] @@ -7239,9 +7180,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -7259,9 +7200,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -7277,9 +7218,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -7310,13 +7251,13 @@ checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_with", "sha2", "strum", "tempfile", - "thiserror 2.0.16", + "thiserror 2.0.17", "toml", "yaml-rust2", ] @@ -7341,11 +7282,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7362,9 +7303,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -7372,12 +7313,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - [[package]] name = "scopeguard" version = "1.2.0" @@ -7425,21 +7360,21 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.31.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ "bitcoin_hashes", - "rand 0.9.2", + "rand 0.8.5", "secp256k1-sys", "serde", ] [[package]] name = "secp256k1-sys" -version = "0.11.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +checksum = "d4387882333d3aa8cb20530a17c69a3752e97837832f34f6dccc760e715001d9" dependencies = [ "cc", ] @@ -7450,7 +7385,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7459,11 +7394,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7472,9 +7407,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -7491,11 +7426,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -7509,34 +7445,45 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] @@ -7572,19 +7519,18 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.0", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", - "serde", - "serde_derive", + "schemars 1.1.0", + "serde_core", "serde_json", "serde_with_macros", "time", @@ -7592,14 +7538,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ - "darling 0.20.11", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7771,12 +7717,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7810,9 +7756,9 @@ dependencies = [ [[package]] name = "sppark" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdc4f02f557e3037bbe2a379cac8be6e014a67beb7bf0996b536979392f6361" +checksum = "d9c900139f3f6fdc8db217881a946adf00e935102fdd82b0e1bc19bacbffa311" dependencies = [ "cc", "which", @@ -7849,7 +7795,7 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.0", + "indexmap 2.12.0", "log", "memchr", "once_cell", @@ -7858,7 +7804,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.16", + "thiserror 2.0.17", "tokio", "tokio-stream", "tracing", @@ -7875,7 +7821,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7898,7 +7844,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -7911,7 +7857,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "bytes", "crc", @@ -7940,7 +7886,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "whoami", ] @@ -7953,7 +7899,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "crc", "dotenvy", @@ -7977,7 +7923,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "whoami", ] @@ -8001,7 +7947,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.16", + "thiserror 2.0.17", "tracing", "url", ] @@ -8030,14 +7976,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -8052,7 +7998,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "phf_shared", "precomputed-hash", ] @@ -8092,7 +8038,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8114,9 +8060,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -8125,14 +8071,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8152,7 +8098,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8161,7 +8107,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8190,15 +8136,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.21.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", - "rustix 1.0.8", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.2", ] [[package]] @@ -8231,7 +8177,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8245,11 +8191,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.16", + "thiserror-impl 2.0.17", ] [[package]] @@ -8260,18 +8206,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8294,11 +8240,12 @@ dependencies = [ [[package]] name = "time" -version = "0.3.42" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca967379f9d8eb8058d86ed467d81d03e81acd45757e4ca341c24affbe8e8e3" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", + "itoa", "num-conv", "powerfmt", "serde", @@ -8308,15 +8255,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9108bb380861b07264b950ded55a44a14a4adc68b9f5efd85aafc3aa4d40a68" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7182799245a7264ce590b349d90338f1c1affad93d2639aed5f8f69c090b334c" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -8333,9 +8280,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -8358,33 +8305,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", - "parking_lot 0.12.4", + "mio 1.1.0", + "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8409,11 +8353,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.31", + "rustls 0.23.35", "tokio", ] @@ -8445,9 +8389,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -8464,8 +8408,8 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] @@ -8477,20 +8421,50 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.0", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" @@ -8518,7 +8492,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -8562,7 +8536,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8675,15 +8649,15 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "typetag" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" +checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" dependencies = [ "erased-serde", "inventory", @@ -8694,13 +8668,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" +checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8741,24 +8715,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-width" @@ -8768,9 +8742,9 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-width" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -8826,7 +8800,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.0", + "indexmap 2.12.0", "serde", "serde_json", "utoipa-gen", @@ -8840,7 +8814,7 @@ checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8849,7 +8823,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -8931,10 +8905,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.3+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ "wit-bindgen", ] @@ -8947,35 +8921,22 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -8986,9 +8947,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -8996,22 +8957,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -9052,7 +9013,7 @@ checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", - "parking_lot 0.12.4", + "parking_lot 0.12.5", "pin-utils", "slab", "wasm-bindgen", @@ -9060,9 +9021,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -9080,9 +9041,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -9137,11 +9098,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -9152,70 +9113,69 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.61.3" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", "windows-core", "windows-future", - "windows-link", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ "windows-core", ] [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] name = "windows-future" -version = "0.2.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ "windows-core", - "windows-link", + "windows-link 0.2.1", "windows-threading", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9224,14 +9184,20 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-numerics" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ "windows-core", - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -9240,9 +9206,9 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -9251,7 +9217,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -9260,7 +9235,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -9296,7 +9280,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.3", + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -9332,28 +9325,28 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.3" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] name = "windows-threading" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -9370,9 +9363,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -9388,9 +9381,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -9406,9 +9399,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -9418,9 +9411,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -9436,9 +9429,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -9454,9 +9447,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -9472,9 +9465,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -9490,9 +9483,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" @@ -9505,15 +9498,15 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wtns-file" @@ -9547,28 +9540,21 @@ checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "yaml-rust2" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" +checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9" dependencies = [ "arraydeque", "encoding_rs", "hashlink", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -9576,34 +9562,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9623,15 +9609,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -9644,14 +9630,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -9660,9 +9646,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -9671,13 +9657,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9691,17 +9677,17 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.0", + "indexmap 2.12.0", "memchr", - "thiserror 2.0.16", + "thiserror 2.0.17", "zopfli", ] [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index c09a36d67..44a44c605 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -22,7 +22,7 @@ dependencies = [ "cpp_demangle", "fallible-iterator", "gimli 0.31.1", - "memmap2 0.9.8", + "memmap2 0.9.9", "object 0.36.7", "rustc-demangle", "smallvec", @@ -58,9 +58,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -73,9 +73,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17c19591d57add4f0c47922877a48aae1f47074e3433436545f8948353b3bbb" +checksum = "e01db470290bb814e0485fa79aba6e36bb5d221c2e3cfeba5fba05a8a2ca8dad" dependencies = [ "alloy-consensus", "alloy-contract", @@ -97,9 +97,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ "alloy-primitives", "num_enum", @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0dd3ed764953a6b20458b2b7abbfdc93d20d14b38babe1a70fe631a443a9f1" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9556182afa73cddffa91e64a5aa9508d5e8c912b3a15f26998d2388a824d2c7b" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19d7092c96defc3d132ee0d8969ca1b79ef512b5eda5c66e3065266b253adf2" +checksum = "d5903097e4c131ad2dd80d87065f23c715ccb9cdb905fa169dffab8e1e798bae" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -171,9 +171,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575053cea24ea8cb7e775e39d5c53c33b19cfd0ca1cf6c0fd653f3d8c682095f" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6c2905bafc2df7ccd32ca3af13f0b0d82f2e2ff9dfbeb12196c0d978d5c0deb" +checksum = "3fdff496dd4e98a81f4861e66f7eaf5f2488971848bb42d9c892f871730245c8" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -213,32 +213,34 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", + "borsh", "serde", "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fa99b538ca7006b0c03cfed24ec6d82beda67aac857ef4714be24231d15e6" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -258,9 +260,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a272533715aefc900f89d51db00c96e6fd4f517ea081a12fea482a352c8c815c" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -285,9 +287,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2acb6637a9c0e1cdf8971e0ced8f3fa34c04c5e9dccf6bb184f6a64fe0e37d8" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -297,9 +299,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91676d242c0ced99c0dd6d0096d7337babe9457cc43407d26aa6367fcf90553" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -312,9 +314,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f82150116b30ba92f588b87f08fa97a46a1bd5ffc0d0597efdf0843d36bfda" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -338,9 +340,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223612259a080160ce839a4e5df0125ca403a1d5e7206cc911cea54af5d769aa" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -351,9 +353,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3652a65bacfba0a169755090d4ecd7d3c63fa534b21d09b8e604dc2609760da6" +checksum = "0be31900cc96fede4dc888a100f3c28fa2d22093f8e09fb7992829ce886acc2f" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -372,9 +374,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b77f7d5e60ad8ae6bd2200b8097919712a07a6db622a4b201e7ead6166f02e5" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "bytes", @@ -383,7 +385,7 @@ dependencies = [ "derive_more", "foldhash 0.2.0", "hashbrown 0.16.0", - "indexmap 2.11.4", + "indexmap 2.12.0", "itoa", "k256", "keccak-asm", @@ -399,9 +401,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7283b81b6f136100b152e699171bc7ed8184a58802accbc91a7df4ebb944445" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -457,14 +459,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-rpc-client" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1154b12d470bef59951c62676e106f4ce5de73b987d86b9faa935acebb138ded" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -485,9 +487,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47ab76bf97648a1c6ad8fb00f0d594618942b5a9e008afbfb5c8a8fca800d574" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -497,9 +499,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456cfc2c1677260edbd7ce3eddb7de419cb46de0e9826c43401f42b0286a779a" +checksum = "ac2bc988d7455e02dfb53460e1caa61f932b3f8452e12424e68ba8dcf60bba90" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -509,9 +511,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cc57ee0c1ac9fb14854195fc249494da7416591dc4a4d981ddfd5dd93b9bce" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -520,9 +522,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7d47bca1a2a1541e4404aa38b7e262bb4dffd9ac23b4f178729a4ddc5a5caa" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -541,9 +543,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8468f1a7f9ee3bae73c24eead0239abea720dbf7779384b9c7e20d51bfb6b0" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "serde", @@ -552,9 +554,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33387c90b0a5021f45a5a77c2ce6c49b8f6980e66a318181468fb24cea771670" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives", "async-trait", @@ -567,9 +569,9 @@ dependencies = [ [[package]] name = "alloy-signer-local" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55d9e795c85e36dcea08786d2e7ae9b73cb554b6bea6ac4c212def24e1b4d03" +checksum = "3e7d555ee5f27be29af4ae312be014b57c6cff9acb23fe2cf008500be6ca7e33" dependencies = [ "alloy-consensus", "alloy-network", @@ -583,42 +585,42 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c84c3637bee9b5c4a4d2b93360ee16553d299c3b932712353caf1cea76d0e6" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a882aa4e1790063362434b9b40d358942b188477ac1c44cfb8a52816ffc0cc17" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.11.4", + "indexmap 2.12.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18e5772107f9bb265d8d8c86e0733937bb20d0857ea5425b1b6ddf51a9804042" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -628,15 +630,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.106", + "syn 2.0.110", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e188b939aa4793edfaaa099cb1be4e620036a775b4bdf24fdc56f1cd6fd45890" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -644,9 +646,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c8a9a909872097caffc05df134e5ef2253a1cdb56d3a9cf0052a042ac763f9" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -656,12 +658,11 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702002659778d89a94cd4ff2044f6b505460df6c162e2f47d1857573845b0ace" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64 0.22.1", "derive_more", @@ -680,9 +681,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6bdc0830e5e8f08a4c70a4c791d400a86679c694a3b4b986caf26fad680438" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -711,15 +712,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.38" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bf39928a5e70c9755d6811a2928131b53ba785ad37c8bf85c90175b5d43b818" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -850,7 +850,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -959,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -997,7 +997,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1101,7 +1101,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1369,7 +1369,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1386,7 +1386,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1421,7 +1421,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -1432,9 +1432,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-config" -version = "1.8.8" +version = "1.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37cf2b6af2a95a20e266782b4f76f1a5e12bf412a9db2de9c1e9123b9d8c0ad8" +checksum = "1856b1b48b65f71a4dd940b1c0931f9a7b646d4a924b9828ffefc1454714668a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1462,9 +1462,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.8" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf26925f4a5b59eb76722b63c2892b1d70d06fa053c72e4a100ec308c1d47bc" +checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1484,23 +1484,22 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.32.2" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b715a6010afb9e457ca2b7c9d2b9c344baa8baed7b38dc476034c171b32575" +checksum = "107a4e9d9cab9963e04e84bb8dee0e25f2a987f9a8bad5ed054abd439caa8f8c" dependencies = [ "bindgen", "cc", "cmake", "dunce", "fs_extra", - "libloading", ] [[package]] name = "aws-runtime" -version = "1.5.12" +version = "1.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa006bb32360ed90ac51203feafb9d02e3d21046e1fd3a450a404b90ea73e5d" +checksum = "8fe0fd441565b0b318c76e7206c8d1d0b0166b3e986cf30e890b61feb6192045" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1523,9 +1522,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.108.0" +version = "1.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200be4aed61e3c0669f7268bacb768f283f1c32a7014ce57225e1160be2f6ccb" +checksum = "eee73a27721035c46da0572b390a69fbdb333d0177c24f3d8f7ff952eeb96690" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1557,9 +1556,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.86.0" +version = "1.89.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0abbfab841446cce6e87af853a3ba2cc1bc9afcd3f3550dd556c43d434c86d" +checksum = "a9c1b1af02288f729e95b72bd17988c009aa72e26dcb59b3200f86d7aea726c9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1579,9 +1578,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a68d675582afea0e94d38b6ca9c5aaae4ca14f1d36faa6edb19b42e687e70d7" +checksum = "4e8122301558dc7c6c68e878af918880b82ff41897a60c8c4e18e4dc4d93e9f1" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1601,9 +1600,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.88.0" +version = "1.91.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30990923f4f675523c51eb1c0dec9b752fb267b36a61e83cbc219c9d86da715" +checksum = "8f8090151d4d1e971269957b10dbf287bba551ab812e591ce0516b1c73b75d27" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1624,9 +1623,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.3.5" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffc03068fbb9c8dd5ce1c6fb240678a5cffb86fb2b7b1985c999c4b83c8df68" +checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" dependencies = [ "aws-credential-types", "aws-smithy-eventstream", @@ -1663,9 +1662,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.9" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "165d8583d8d906e2fb5511d29201d447cc710864f075debcdd9c31c265412806" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1683,9 +1682,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.12" +version = "0.60.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9656b85088f8d9dc7ad40f9a6c7228e1e8447cdf4b046c87e152e0805dea02fa" +checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" dependencies = [ "aws-smithy-types", "bytes", @@ -1694,9 +1693,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.62.4" +version = "0.62.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3feafd437c763db26aa04e0cc7591185d0961e64c61885bece0fb9d50ceac671" +checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" dependencies = [ "aws-smithy-eventstream", "aws-smithy-runtime-api", @@ -1704,6 +1703,7 @@ dependencies = [ "bytes", "bytes-utils", "futures-core", + "futures-util", "http 0.2.12", "http 1.3.1", "http-body 0.4.6", @@ -1715,9 +1715,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1053b5e587e6fa40ce5a79ea27957b04ba660baa02b28b7436f64850152234f1" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1734,8 +1734,8 @@ dependencies = [ "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -1745,9 +1745,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.6" +version = "0.61.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff418fc8ec5cadf8173b10125f05c2e7e1d46771406187b2c878557d4503390" +checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" dependencies = [ "aws-smithy-types", ] @@ -1773,9 +1773,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.3" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ab99739082da5347660c556689256438defae3bcefd66c52b095905730e404" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1797,9 +1797,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3683c5b152d2ad753607179ed71988e8cfd52964443b4f74fd8e552d0bbfeb46" +checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -1814,9 +1814,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.3.3" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f5b3a7486f6690ba25952cabf1e7d75e34d69eaff5081904a47bc79074d6457" +checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" dependencies = [ "base64-simd", "bytes", @@ -1840,18 +1840,18 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.11" +version = "0.60.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c34127e8c624bc2999f3b657e749c1393bedc9cd97b92a804db8ced4d2e163" +checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.9" +version = "1.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2fd329bf0e901ff3f60425691410c69094dc2a1f34b331f37bfc4e9ac1565a1" +checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1942,7 +1942,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1953,7 +1953,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2010,11 +2010,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.4" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2159,7 +2159,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2343,7 +2343,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2447,9 +2447,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.40" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d05d92f4b1fd76aad469d46cdd858ca761576082cd37df81416691e50199fb" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -2468,9 +2468,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2506,7 +2506,7 @@ dependencies = [ "byteorder", "indicatif", "libc", - "memmap2 0.9.8", + "memmap2 0.9.9", "num-bigint 0.4.6", "num-traits", "prost", @@ -2534,9 +2534,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -2544,9 +2544,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.48" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -2556,21 +2556,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.47" +version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" +checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "clap_lex" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" [[package]] name = "cmake" @@ -2620,9 +2620,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", @@ -2734,15 +2734,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -2920,7 +2920,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2935,7 +2935,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2946,7 +2946,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -2957,7 +2957,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3003,9 +3003,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -3030,7 +3030,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3051,7 +3051,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3061,7 +3061,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3081,7 +3081,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "unicode-xid", ] @@ -3165,7 +3165,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3208,9 +3208,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck", "proc-macro2", @@ -3259,7 +3259,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3370,34 +3370,34 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", ] @@ -3422,9 +3422,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ "serde", "serde_core", @@ -3584,9 +3584,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "find_cuda_helper" @@ -3623,9 +3623,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3687,7 +3687,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3812,7 +3812,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -3853,11 +3853,11 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "gdbstub" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b686b198dfaa4109ebd0443d2841bc521e4b4b2915f1d84b3bb50332a8cdc1ae" +checksum = "72742d2b395902caf8a5d520d0dd3334ba6d1138938429200e58d5174e275f3f" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "log", "managed", @@ -3877,9 +3877,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3895,21 +3895,21 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.7+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] @@ -3920,7 +3920,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", - "indexmap 2.11.4", + "indexmap 2.12.0", "stable_deref_trait", ] @@ -4018,7 +4018,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4037,7 +4037,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.11.4", + "indexmap 2.12.0", "slab", "tokio", "tokio-util", @@ -4165,11 +4165,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4394,8 +4394,8 @@ dependencies = [ "http 1.3.1", "hyper 1.7.0", "hyper-util", - "rustls 0.23.32", - "rustls-native-certs 0.8.1", + "rustls 0.23.35", + "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -4437,7 +4437,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4471,9 +4471,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4484,9 +4484,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4497,11 +4497,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4512,42 +4511,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -4599,7 +4594,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4621,9 +4616,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" dependencies = [ "equivalent", "hashbrown 0.16.0", @@ -4685,17 +4680,6 @@ dependencies = [ "rustversion", ] -[[package]] -name = "io-uring" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -4704,9 +4688,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -4714,9 +4698,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4766,15 +4750,15 @@ version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -4875,9 +4859,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4886,14 +4870,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -4913,18 +4897,18 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.176" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.5", + "windows-link 0.2.1", ] [[package]] @@ -4959,7 +4943,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "libc", "redox_syscall 0.5.18", ] @@ -4989,9 +4973,9 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -5043,7 +5027,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5146,7 +5130,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5176,9 +5160,9 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" dependencies = [ "libc", ] @@ -5201,7 +5185,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -5230,7 +5214,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5279,19 +5263,19 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -5382,7 +5366,7 @@ version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "crossbeam-channel", "filetime", "fsevent-sys", @@ -5397,11 +5381,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.50.1" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -5427,11 +5411,10 @@ dependencies = [ [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "82c79c15c05d4bf82b6f5ef163104cc81a760d8e874d38ac50ab67c8877b647b" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -5465,7 +5448,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5510,9 +5493,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -5520,13 +5503,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5595,17 +5578,17 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -5622,7 +5605,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5633,9 +5616,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -5691,7 +5674,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5786,7 +5769,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5796,7 +5779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.11.4", + "indexmap 2.12.0", ] [[package]] @@ -5831,7 +5814,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5938,9 +5921,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -5973,7 +5956,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -5993,7 +5976,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.6", + "toml_edit 0.23.7", ] [[package]] @@ -6015,14 +5998,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -6035,21 +6018,19 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.4", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -6086,7 +6067,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.106", + "syn 2.0.110", "tempfile", ] @@ -6100,7 +6081,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6144,8 +6125,8 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.32", - "socket2 0.6.0", + "rustls 0.23.35", + "socket2 0.6.1", "thiserror 2.0.17", "tokio", "tracing", @@ -6159,12 +6140,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "slab", "thiserror 2.0.17", @@ -6182,16 +6163,16 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.0", + "socket2 0.6.1", "tracing", "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -6266,7 +6247,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -6320,7 +6301,7 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", ] [[package]] @@ -6362,7 +6343,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -6379,9 +6360,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.3" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -6391,9 +6372,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -6402,15 +6383,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "requestor-lists" @@ -6426,9 +6407,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.23" +version = "0.12.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" +checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" dependencies = [ "base64 0.22.1", "bytes", @@ -6452,7 +6433,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.32", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -6971,7 +6952,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -7117,7 +7098,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.4.15", @@ -7130,7 +7111,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys 0.11.0", @@ -7151,15 +7132,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.32" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.7", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -7178,9 +7159,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" dependencies = [ "openssl-probe", "rustls-pki-types", @@ -7199,9 +7180,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -7219,9 +7200,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.7" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -7322,9 +7303,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -7404,7 +7385,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -7417,7 +7398,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -7489,7 +7470,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7538,17 +7519,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093cd8c01b25262b84927e0f7151692158fab02d961e04c979d3903eba7ecc5" +checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -7557,14 +7538,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.15.0" +version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7e6c180db0816026a61afa1cff5344fb7ebded7e4d3062772179f2501481c27" +checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7736,12 +7717,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7814,7 +7795,7 @@ dependencies = [ "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.12.0", "log", "memchr", "once_cell", @@ -7840,7 +7821,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -7863,7 +7844,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.106", + "syn 2.0.110", "tokio", "url", ] @@ -7876,7 +7857,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "bytes", "crc", @@ -7918,7 +7899,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.4", + "bitflags 2.10.0", "byteorder", "crc", "dotenvy", @@ -7995,14 +7976,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -8057,7 +8038,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8079,9 +8060,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.106" +version = "2.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" dependencies = [ "proc-macro2", "quote", @@ -8090,14 +8071,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2375c17f6067adc651d8c2c51658019cef32edfff4a982adaf1d7fd1c039f08b" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8117,7 +8098,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8126,7 +8107,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -8160,7 +8141,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix 1.1.2", "windows-sys 0.61.2", @@ -8196,7 +8177,7 @@ checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8225,7 +8206,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8236,7 +8217,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8299,9 +8280,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -8324,33 +8305,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.47.1" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" dependencies = [ - "backtrace", "bytes", - "io-uring", "libc", - "mio 1.0.4", + "mio 1.1.0", "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "slab", - "socket2 0.6.0", + "socket2 0.6.1", "tokio-macros", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8379,7 +8357,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.32", + "rustls 0.23.35", "tokio", ] @@ -8411,9 +8389,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -8445,9 +8423,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ "serde_core", ] @@ -8458,7 +8436,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -8468,21 +8446,21 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.6" +version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3effe7c0e86fdff4f69cdd2ccc1b96f933e24811c5441d44904e8683e27184b" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.11.4", - "toml_datetime 0.7.2", + "indexmap 2.12.0", + "toml_datetime 0.7.3", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ "winnow", ] @@ -8514,7 +8492,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags 2.10.0", "bytes", "futures-util", "http 1.3.1", @@ -8558,7 +8536,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8696,7 +8674,7 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8737,24 +8715,24 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.19" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-width" @@ -8822,7 +8800,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.12.0", "serde", "serde_json", "utoipa-gen", @@ -8836,7 +8814,7 @@ checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -8845,7 +8823,7 @@ version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "js-sys", "wasm-bindgen", ] @@ -8926,15 +8904,6 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "wasi" -version = "0.14.7+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" -dependencies = [ - "wasip2", -] - [[package]] name = "wasip2" version = "1.0.1+wasi-0.2.4" @@ -8952,9 +8921,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", @@ -8963,25 +8932,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.106", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -8992,9 +8947,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -9002,22 +8957,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.106", - "wasm-bindgen-backend", + "syn 2.0.110", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -9066,9 +9021,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -9086,9 +9041,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -9209,7 +9164,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9220,7 +9175,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9549,9 +9504,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wtns-file" @@ -9594,19 +9549,12 @@ dependencies = [ "hashlink", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -9614,13 +9562,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9641,7 +9589,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9661,7 +9609,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", "synstructure", ] @@ -9682,14 +9630,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -9698,9 +9646,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -9709,13 +9657,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.106", + "syn 2.0.110", ] [[package]] @@ -9729,7 +9677,7 @@ dependencies = [ "crossbeam-utils", "displaydoc", "flate2", - "indexmap 2.11.4", + "indexmap 2.12.0", "memchr", "thiserror 2.0.17", "zopfli", @@ -9737,9 +9685,9 @@ dependencies = [ [[package]] name = "zopfli" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" dependencies = [ "bumpalo", "crc32fast", From c71ca9b15dc0672417f1f952b2f3f5a2356eed01 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 13:12:44 -0500 Subject: [PATCH 79/86] fix bento --- bento/crates/workflow/src/tasks/snark.rs | 65 ++++++++++-------------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/bento/crates/workflow/src/tasks/snark.rs b/bento/crates/workflow/src/tasks/snark.rs index 4d7e00505..022f301c6 100644 --- a/bento/crates/workflow/src/tasks/snark.rs +++ b/bento/crates/workflow/src/tasks/snark.rs @@ -8,14 +8,9 @@ use anyhow::{Context as _, Result, bail}; use risc0_zkvm::{InnerReceipt, ProverOpts, Receipt}; use std::time::Instant; use workflow_common::{ -<<<<<<< HEAD CompressType, SnarkReq, SnarkResp, - s3::{BLAKE3_GROTH16_BUCKET_DIR, GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, -======= - SnarkReq, SnarkResp, metrics::helpers, - s3::{GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, ->>>>>>> main + s3::{BLAKE3_GROTH16_BUCKET_DIR, GROTH16_BUCKET_DIR, RECEIPT_BUCKET_DIR, STARK_BUCKET_DIR}, }; /// Converts a stark, stored in s3 to a snark @@ -38,16 +33,24 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< tracing::debug!("performing identity predicate on receipt, {job_id}"); -<<<<<<< HEAD let (snark_receipt_bytes, bucket_dir) = match req.compress_type { CompressType::None => bail!("Cannot convert to snark with no compression"), CompressType::Groth16 => { - let groth16_receipt = agent + let groth16_receipt = match agent .prover .as_ref() - .context("Missing prover from resolve task")? + .context("[BENTO-SNARK-002] Missing prover from resolve task")? .compress(&ProverOpts::groth16(), &receipt) - .context("groth16 compress failed")?; + { + Ok(receipt) => { + helpers::record_task_operation("snark", "compress", "success", 0.0); + receipt + } + Err(e) => { + helpers::record_task_operation("snark", "compress", "error", 0.0); + return Err(e.context("groth16 compress failed")); + } + }; if !matches!(groth16_receipt.inner, InnerReceipt::Groth16(_)) { bail!("[BENTO-SNARK-004] failed to create groth16 receipt"); } @@ -57,29 +60,23 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< (bincode::serialize(&groth16_receipt)?, GROTH16_BUCKET_DIR) } CompressType::Blake3Groth16 => { - let blake3_receipt = blake3_groth16::compress_blake3_groth16(&receipt) + let blake3_receipt = match blake3_groth16::compress_blake3_groth16(&receipt) .await - .context("blake3 groth16 compress failed")?; + .context("[BENTO-SNARK-007] blake3 groth16 compress failed") + { + Ok(blake3_receipt) => { + helpers::record_task_operation("snark", "compress", "success", 0.0); + blake3_receipt + } + Err(e) => { + helpers::record_task_operation("snark", "compress", "error", 0.0); + return Err(e.context("blake3 groth16 compress failed")); + } + }; blake3_receipt .verify_integrity() - .context("[BENTO-SNARK-007] Failed to verify blake3 snark receipt")?; + .context("[BENTO-SNARK-008] Failed to verify blake3 snark receipt")?; (bincode::serialize(&blake3_receipt)?, BLAKE3_GROTH16_BUCKET_DIR) -======= - let opts = ProverOpts::groth16(); - let snark_receipt = match agent - .prover - .as_ref() - .context("[BENTO-SNARK-002] Missing prover from resolve task")? - .compress(&opts, &receipt) - { - Ok(receipt) => { - helpers::record_task_operation("snark", "compress", "success", 0.0); - receipt - } - Err(e) => { - helpers::record_task_operation("snark", "compress", "error", 0.0); - return Err(e.context("groth16 compress failed")); ->>>>>>> main } }; @@ -87,15 +84,8 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< tracing::debug!("Uploading snark receipt to S3: {key}"); -<<<<<<< HEAD - agent - .s3_client - .write_buf_to_s3(key, snark_receipt_bytes) - .await - .context("[BENTO-SNARK-006] Failed to upload final receipt to obj store")?; -======= let s3_write_start = Instant::now(); - match agent.s3_client.write_to_s3(key, snark_receipt).await { + match agent.s3_client.write_buf_to_s3(key, snark_receipt_bytes).await { Ok(()) => { helpers::record_s3_operation( "write", @@ -116,7 +106,6 @@ pub async fn stark2snark(agent: &Agent, job_id: &str, req: &SnarkReq) -> Result< "success", start_time.elapsed().as_secs_f64(), ); ->>>>>>> main Ok(SnarkResp { snark: job_id.to_string() }) } From 33caf055d1cd3c58b1e05a00ab9bf6711de18f99 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 13:17:52 -0500 Subject: [PATCH 80/86] removed a couple unused deps --- Cargo.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 626d1f07e..203eb8a42 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,6 @@ bytemuck = "1.16" chrono = { version = "0.4", features = ["serde"] } clap = { version = "4.5", features = ["derive", "env"] } clap_complete = "4.5" -derive_more = { version = "2.0" } futures-util = "0.3" guest-set-builder = { git = "https://github.com/risc0/risc0-ethereum", tag = "aggregation-v0.8.1" } hex = { version = "0.4", default-features = false, features = ["alloc"] } @@ -84,7 +83,6 @@ risc0-binfmt = { version = "3.0.3", default-features = false } risc0-build-ethereum = { version = "3.0.1" } risc0-build = { version = "3.0.4", features = ["docker", "unstable"] } risc0-circuit-recursion = { version = "4.0.3" } -risc0-core = { version = "3.0.0" } risc0-ethereum-contracts = { version = "3.0.1" } risc0-groth16 = { version = "3.0.3", default-features = false } risc0-groth16-sys = { version = "0.1.0" } From 70cf8ebc02804d045fe4d36dd76710e5b6205792 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 13:38:48 -0500 Subject: [PATCH 81/86] add back zkp --- Cargo.lock | 1 + blake3_groth16/Cargo.toml | 1 + .../guest/assessor/assessor-guest/Cargo.lock | 464 +++++++++++++++++- 3 files changed, 452 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe7c0f9a9..d854c37cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2606,6 +2606,7 @@ dependencies = [ "num-traits", "risc0-groth16", "risc0-groth16-sys", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", diff --git a/blake3_groth16/Cargo.toml b/blake3_groth16/Cargo.toml index 3d455c82b..ebb96a852 100644 --- a/blake3_groth16/Cargo.toml +++ b/blake3_groth16/Cargo.toml @@ -50,6 +50,7 @@ hex = { workspace = true } num-bigint = { version = "0.4", features = ["std"], optional = true } num-traits = { version = "0.2.19", optional = true } risc0-groth16-sys = { workspace = true, optional = true } +risc0-zkp = { workspace = true } risc0-zkvm = { workspace = true, default-features = false, features = ["bonsai"] } tempfile = { workspace = true, optional = true } tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } diff --git a/crates/guest/assessor/assessor-guest/Cargo.lock b/crates/guest/assessor/assessor-guest/Cargo.lock index 31932ca79..d4887d402 100644 --- a/crates/guest/assessor/assessor-guest/Cargo.lock +++ b/crates/guest/assessor/assessor-guest/Cargo.lock @@ -2,6 +2,17 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addchain" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" +dependencies = [ + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -762,6 +773,15 @@ version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-bn254" version = "0.5.0" @@ -822,7 +842,7 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "zeroize", @@ -839,7 +859,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.3.3", @@ -859,7 +879,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "rustc_version 0.4.1", @@ -880,7 +900,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "paste", "zeroize", @@ -922,7 +942,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "quote", "syn 1.0.109", @@ -934,7 +954,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -947,7 +967,7 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "proc-macro2", "quote", @@ -995,7 +1015,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "tracing", @@ -1031,7 +1051,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1044,7 +1064,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint", + "num-bigint 0.4.6", ] [[package]] @@ -1106,6 +1126,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -1880,6 +1906,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -1968,6 +2007,8 @@ dependencies = [ "async-stream", "async-trait", "aws-sdk-s3", + "blake3", + "borsh", "bytemuck", "chrono", "clap", @@ -1980,6 +2021,8 @@ dependencies = [ "rand 0.9.2", "reqwest", "risc0-aggregation", + "risc0-binfmt", + "risc0-circuit-recursion", "risc0-ethereum-contracts", "risc0-zkvm", "rmp-serde", @@ -2274,6 +2317,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -2363,6 +2412,25 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -2542,6 +2610,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -2615,6 +2694,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs" version = "6.0.0" @@ -2680,6 +2768,20 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "downloader" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac1e888d6830712d565b2f3a974be3200be9296bc1b03db8251a4cbf18a4a34" +dependencies = [ + "digest 0.10.7", + "futures", + "rand 0.8.5", + "reqwest", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "dunce" version = "1.0.5" @@ -2923,10 +3025,28 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ + "bitvec", + "byteorder", + "ff_derive", "rand_core 0.6.4", "subtle", ] +[[package]] +name = "ff_derive" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" +dependencies = [ + "addchain", + "num-bigint 0.3.3", + "num-integer", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "find-msvc-tools" version = "0.1.0" @@ -2951,6 +3071,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -3152,8 +3282,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -3163,9 +3295,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.3+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -3535,6 +3669,7 @@ dependencies = [ "tokio", "tokio-rustls 0.26.2", "tower-service", + "webpki-roots", ] [[package]] @@ -4048,9 +4183,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" dependencies = [ "value-bag", ] @@ -4073,6 +4208,12 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "macro-string" version = "0.1.4" @@ -4102,6 +4243,16 @@ dependencies = [ "regex-automata", ] +[[package]] +name = "matrixmultiply" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +dependencies = [ + "autocfg", + "rawpointer", +] + [[package]] name = "md-5" version = "0.10.6" @@ -4174,6 +4325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] @@ -4204,6 +4356,22 @@ dependencies = [ "tempfile", ] +[[package]] +name = "ndarray" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +dependencies = [ + "matrixmultiply", + "num-complex", + "num-integer", + "num-traits", + "portable-atomic", + "portable-atomic-util", + "rawpointer", + "rayon", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -4235,6 +4403,17 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -4262,6 +4441,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -4329,6 +4517,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "nvtx" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad2e855e8019f99e4b94ac33670eb4e4f570a2e044f3749a0b2c7f83b841e52c" +dependencies = [ + "cc", +] + [[package]] name = "nybbles" version = "0.4.3" @@ -4648,6 +4845,21 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "postcard" version = "1.1.3" @@ -4795,12 +5007,81 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "puffin" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa9dae7b05c02ec1a6bc9bcf20d8bc64a7dcbf57934107902a872014899b741f" +dependencies = [ + "anyhow", + "byteorder", + "cfg-if", + "itertools 0.10.5", + "once_cell", + "parking_lot", +] + [[package]] name = "quick-error" version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "socket2 0.6.0", + "thiserror 2.0.16", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash 2.1.1", + "rustls 0.23.31", + "rustls-pki-types", + "slab", + "thiserror 2.0.16", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2 0.6.0", + "tracing", + "windows-sys 0.60.2", +] + [[package]] name = "quote" version = "1.0.40" @@ -4893,6 +5174,32 @@ dependencies = [ "rand_core 0.9.3", ] +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.5.17" @@ -5005,6 +5312,8 @@ dependencies = [ "native-tls", "percent-encoding", "pin-project-lite", + "quinn", + "rustls 0.23.31", "rustls-pki-types", "serde", "serde_json", @@ -5012,6 +5321,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", + "tokio-rustls 0.26.2", "tower", "tower-http", "tower-service", @@ -5019,6 +5329,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots", ] [[package]] @@ -5129,6 +5440,20 @@ dependencies = [ "tempfile", ] +[[package]] +name = "risc0-build-kernel" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaaa3e04c71e4244354dd9e3f8b89378cfecfbb03f9c72de4e2e7e0482b30c9a" +dependencies = [ + "cc", + "directories", + "hex", + "rayon", + "sha2", + "tempfile", +] + [[package]] name = "risc0-circuit-keccak" version = "4.0.3" @@ -5153,11 +5478,33 @@ checksum = "028cd26e1b1f7bdd964d2f1eac8f812d1872b6b8fd24f10804f07d916b90000e" dependencies = [ "anyhow", "bytemuck", + "cfg-if", + "downloader", "hex", + "lazy-regex", "metal", + "rand 0.9.2", + "rayon", + "risc0-circuit-recursion-sys", "risc0-core", + "risc0-sys", "risc0-zkp", + "serde", + "sha2", "tracing", + "zip", +] + +[[package]] +name = "risc0-circuit-recursion-sys" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f137bcd382520efcd982e4ee131da43f448b12ade979fe9d1fa92d4337dec0" +dependencies = [ + "glob", + "risc0-build-kernel", + "risc0-core", + "risc0-sys", ] [[package]] @@ -5185,6 +5532,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80f2723fedace48c6c5a505bd8f97ac4e1712bc4cb769083e10536d862b66987" dependencies = [ "bytemuck", + "nvtx", + "puffin", "rand_core 0.9.3", ] @@ -5221,13 +5570,23 @@ dependencies = [ "ark-serialize 0.5.0", "bytemuck", "hex", - "num-bigint", + "num-bigint 0.4.6", "num-traits", "risc0-binfmt", "risc0-zkp", "serde", ] +[[package]] +name = "risc0-sys" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960c8295fbb87e1e73e332f8f7de2fba0252377575042d9d3e9a4eb50a38e078" +dependencies = [ + "anyhow", + "risc0-build-kernel", +] + [[package]] name = "risc0-zkos-v1compat" version = "2.2.1" @@ -5251,12 +5610,18 @@ dependencies = [ "bytemuck", "cfg-if", "digest 0.10.7", + "ff 0.13.1", "hex", "hex-literal", "metal", + "ndarray", + "parking_lot", "paste", + "rand 0.9.2", "rand_core 0.9.3", + "rayon", "risc0-core", + "risc0-sys", "risc0-zkvm-platform", "serde", "sha2", @@ -5390,7 +5755,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "parity-scale-codec", @@ -5499,6 +5864,7 @@ checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", + "ring", "rustls-pki-types", "rustls-webpki 0.103.4", "subtle", @@ -5544,6 +5910,7 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ + "web-time", "zeroize", ] @@ -5974,6 +6341,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "similar" version = "2.7.0" @@ -6346,6 +6719,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.47.1" @@ -6912,6 +7300,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "which" version = "4.4.2" @@ -7346,6 +7753,35 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.11.0", + "memchr", + "thiserror 2.0.16", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + [[patch.unused]] name = "sha2" version = "0.10.8" From 5bcd2b5ca7fc19dbd0decfa2c8b9c4065c3b2629 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 16:19:06 -0500 Subject: [PATCH 82/86] update rapidsnark docker to pull in the proving key so we can avoid setting variables --- blake3_groth16/README.md | 2 +- .../dockerfiles/rapidsnark.dockerfile | 28 +++++++++++++++---- blake3_groth16/scripts/build-docker.sh | 1 + blake3_groth16/scripts/prove.sh | 7 +++++ blake3_groth16/src/prove.rs | 1 - blake3_groth16/src/prove/cuda.rs | 5 +++- blake3_groth16/src/prove/docker.rs | 24 +++------------- blake3_groth16/src/prove/witgen.rs | 24 ---------------- 8 files changed, 39 insertions(+), 53 deletions(-) create mode 100755 blake3_groth16/scripts/build-docker.sh create mode 100644 blake3_groth16/scripts/prove.sh delete mode 100644 blake3_groth16/src/prove/witgen.rs diff --git a/blake3_groth16/README.md b/blake3_groth16/README.md index 66e72c8e8..9c054ba6d 100644 --- a/blake3_groth16/README.md +++ b/blake3_groth16/README.md @@ -19,7 +19,7 @@ cargo xtask-blake3-groth16 ### Building Rapidsnark -If using rapidsnark for CPU proving instead of CUDA, you will need to need to manually build rapidsnark. This is all packaged in a dockerfile. +If using rapidsnark for CPU proving instead of CUDA, you will need to need to manually build rapidsnark. This is all packaged in a dockerfile. To build the rapidsnark dockerfile, run the `scripts/build-docker.sh` from this directory. ## Proving diff --git a/blake3_groth16/dockerfiles/rapidsnark.dockerfile b/blake3_groth16/dockerfiles/rapidsnark.dockerfile index aae0723f3..bd96b42d9 100644 --- a/blake3_groth16/dockerfiles/rapidsnark.dockerfile +++ b/blake3_groth16/dockerfiles/rapidsnark.dockerfile @@ -1,11 +1,10 @@ # syntax=docker/dockerfile:1.4 -FROM debian:bookworm-slim AS dependencies - +FROM rust:1.89.0-bookworm AS dependencies WORKDIR /src/ # APT deps RUN apt -qq update && \ - apt install -y -q build-essential cmake libgmp-dev libsodium-dev nasm curl m4 git + apt install -y -q build-essential cmake libgmp-dev libsodium-dev nasm curl m4 git protobuf-compiler clang WORKDIR /src/ @@ -22,15 +21,32 @@ RUN git submodule init && \ make host && \ cp ./package/bin/prover /usr/local/sbin/rapidsnark +# Build circom-witnesscalc +RUN git clone https://github.com/iden3/circom-witnesscalc.git && \ + cd circom-witnesscalc && \ + git checkout b7ff0ffd9c72c8f60896ce131ee98a35aba96009 && \ + cargo install --path . + +WORKDIR /setup/ +# Download prover files +ADD https://staging-signal-artifacts.beboundless.xyz/v3/proving/blake3_groth16_artifacts.tar.xz blake3_groth16_artifacts.tar.xz +RUN tar -xvf blake3_groth16_artifacts.tar.xz && \ + rm blake3_groth16_artifacts.tar.xz # Create a final clean image with all the dependencies to perform stark->snark FROM debian:bookworm-slim AS prover - RUN apt -qq update && \ apt install -y -q build-essential cmake libgmp-dev libsodium-dev nasm curl m4 COPY --from=dependencies /usr/local/sbin/rapidsnark /usr/local/sbin/rapidsnark +COPY --from=dependencies /usr/local/cargo/bin/calc-witness /usr/local/sbin/calc-witness + +WORKDIR /setup/ +COPY --from=dependencies /setup/blake3_groth16_artifacts/verify_for_guest_graph.bin . +COPY --from=dependencies /setup/blake3_groth16_artifacts/verify_for_guest_final.zkey . -RUN ulimit -s unlimited +WORKDIR /app/ +COPY scripts/prove.sh prove.sh +RUN chmod +x /app/prove.sh -ENTRYPOINT ["/usr/local/sbin/rapidsnark"] \ No newline at end of file +ENTRYPOINT ["/app/prove.sh"] \ No newline at end of file diff --git a/blake3_groth16/scripts/build-docker.sh b/blake3_groth16/scripts/build-docker.sh new file mode 100755 index 000000000..38be790ef --- /dev/null +++ b/blake3_groth16/scripts/build-docker.sh @@ -0,0 +1 @@ +docker build -t boundless-blake3-g16:latest -f dockerfiles/rapidsnark.dockerfile . \ No newline at end of file diff --git a/blake3_groth16/scripts/prove.sh b/blake3_groth16/scripts/prove.sh new file mode 100644 index 000000000..9630fc69f --- /dev/null +++ b/blake3_groth16/scripts/prove.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -eoux + +ulimit -s 16384 +calc-witness /setup/verify_for_guest_graph.bin /mnt/input.json output.wtns +rapidsnark /setup/verify_for_guest_final.zkey output.wtns /mnt/proof.json /mnt/public.json \ No newline at end of file diff --git a/blake3_groth16/src/prove.rs b/blake3_groth16/src/prove.rs index 234dbeaa2..eec2dce60 100644 --- a/blake3_groth16/src/prove.rs +++ b/blake3_groth16/src/prove.rs @@ -26,7 +26,6 @@ use tempfile::tempdir; pub(crate) mod cuda; #[cfg(not(feature = "cuda"))] pub(crate) mod docker; -pub(crate) mod witgen; /// Creates a BLAKE3 Groth16 proof from a Risc0 SuccinctReceipt. /// It will first run the identity_p254 program to convert the STARK to BN254, diff --git a/blake3_groth16/src/prove/cuda.rs b/blake3_groth16/src/prove/cuda.rs index d400cad37..405ea6b31 100644 --- a/blake3_groth16/src/prove/cuda.rs +++ b/blake3_groth16/src/prove/cuda.rs @@ -31,7 +31,10 @@ impl CalcWitness { } fn calculate_witness(graph_path: &Path, inputs: &str) -> Result { - let witness_encoded = calculate_witness_encoded(graph_path, inputs)?; + tracing::debug!("blake3 groth16 calculate_witness"); + let graph = std::fs::read(graph_path)?; + let witness_encoded = circom_witnesscalc::calc_witness(inputs, &graph) + .map_err(|err| anyhow!("witness failure: {err}"))?; let wtns_f = wtns_file::WtnsFile::read(Cursor::new(witness_encoded))?; Ok(CalcWitness { witness: wtns_f.witness.0 }) } diff --git a/blake3_groth16/src/prove/docker.rs b/blake3_groth16/src/prove/docker.rs index df1c00548..c335fbfdc 100644 --- a/blake3_groth16/src/prove/docker.rs +++ b/blake3_groth16/src/prove/docker.rs @@ -14,8 +14,6 @@ use std::{path::Path, process::ExitStatus}; -use crate::prove::witgen::calculate_witness_encoded; - use anyhow::{anyhow, bail, Result}; use risc0_groth16::ProofJson as Groth16ProofJson; use std::process::Command; @@ -24,34 +22,21 @@ pub fn shrink_wrap( work_dir: &Path, identity_seal_json: serde_json::Value, ) -> Result { - tracing::debug!("blake3 shrink_wrap with rapidsnark"); + tracing::debug!("blake3 shrink_wrap with docker rapidsnark"); if !is_docker_installed() { bail!("Please install docker first.") } - let root_dir = std::env::var("BLAKE3_GROTH16_SETUP_DIR"); - let root_dir = root_dir.as_ref().map(Path::new).expect("must provide BLAKE3_GROTH16_SETUP_DIR"); - let graph_path = root_dir.join("verify_for_guest_graph.bin"); - let witness_path = work_dir.join("output.wtns"); let proof_path = work_dir.join("proof.json"); - let public_path = work_dir.join("public.json"); - - let witness_encoded = - calculate_witness_encoded(&graph_path, identity_seal_json.to_string().as_str())?; - std::fs::write(&witness_path, witness_encoded)?; + let input_path = work_dir.join("input.json"); + std::fs::write(&input_path, identity_seal_json.to_string())?; let output = Command::new("docker") .arg("run") .arg("--rm") .arg("-v") .arg(format!("{}:/mnt", work_dir.display())) - .arg("-v") - .arg(format!("{}:/setup", root_dir.display())) - .arg("rpsnark:latest") - .arg("/setup/verify_for_guest_final.zkey") - .arg(format!("/mnt/{}", witness_path.file_name().unwrap().to_str().unwrap())) - .arg(format!("/mnt/{}", proof_path.file_name().unwrap().to_str().unwrap())) - .arg(format!("/mnt/{}", public_path.file_name().unwrap().to_str().unwrap())) + .arg("boundless-blake3-g16:latest") .output()?; if !output.status.success() { return Err(error_from_status(output.status)); @@ -75,7 +60,6 @@ fn is_docker_installed() -> bool { fn error_from_status(status: ExitStatus) -> anyhow::Error { let err = anyhow!("docker returned failure exit code: {:?}", status.code()); - // Add a hint to the error context for certain error codes. match status.code() { Some(126) => err.context("This process may not have permission to run containers."), diff --git a/blake3_groth16/src/prove/witgen.rs b/blake3_groth16/src/prove/witgen.rs deleted file mode 100644 index 0a102acf8..000000000 --- a/blake3_groth16/src/prove/witgen.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2025 Boundless Foundation, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -use anyhow::{anyhow, Result}; -use std::path::Path; - -pub fn calculate_witness_encoded(graph_path: &Path, inputs: &str) -> Result> { - tracing::info!("calculate_witness"); - let graph = std::fs::read(graph_path)?; - let witness_encoded = circom_witnesscalc::calc_witness(inputs, &graph) - .map_err(|err| anyhow!("witness failure: {err}"))?; - Ok(witness_encoded) -} From 0d78ccfb7f1da375f78c1e9e8976c44748563ea2 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 16:25:48 -0500 Subject: [PATCH 83/86] fix import --- blake3_groth16/src/prove/cuda.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/blake3_groth16/src/prove/cuda.rs b/blake3_groth16/src/prove/cuda.rs index 405ea6b31..80d80b733 100644 --- a/blake3_groth16/src/prove/cuda.rs +++ b/blake3_groth16/src/prove/cuda.rs @@ -14,11 +14,9 @@ use std::{io::Cursor, path::Path}; -use anyhow::{Context as _, Result}; -use risc0_groth16_sys::{ProverParams, SetupParams, WitnessParams}; - -use crate::prove::witgen::calculate_witness_encoded; +use anyhow::{anyhow, Context as _, Result}; use risc0_groth16::ProofJson as Groth16ProofJson; +use risc0_groth16_sys::{ProverParams, SetupParams, WitnessParams}; struct CalcWitness { witness: Vec>, From 98f49748d4eba360ebc77b2ae7d05b820bfa2cee Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 19:13:32 -0500 Subject: [PATCH 84/86] bento docker files now can mount or build with prover artifacts --- compose.yml | 14 +++++++++----- dockerfiles/agent.dockerfile | 22 ++++++++++++++++++++-- dockerfiles/agent.prebuilt.dockerfile | 20 +++++++++++++++++++- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/compose.yml b/compose.yml index 02b5ba3d4..4250234e6 100644 --- a/compose.yml +++ b/compose.yml @@ -18,6 +18,9 @@ x-agent-common: &agent-common dockerfile: ${AGENT_DOCKERFILE:-dockerfiles/agent.prebuilt.dockerfile} args: BINARY_URL: ${BENTO_BINARY_URL:-https://github.com/boundless-xyz/boundless/releases/download/bento-v1.1.1/bento-bundle-linux-amd64.tar.gz} + BLAKE3_GROTH16_ARTIFACTS_URL: ${BLAKE3_GROTH16_ARTIFACTS_URL:-https://staging-signal-artifacts.beboundless.xyz/v3/proving/blake3_groth16_artifacts.tar.xz} + # If set to 1, yes, or true, the agent will expect local mounting of BLAKE3 Groth16 setup files instead of downloading + USE_LOCAL_BLAKE3_GROTH16_SETUP: ${USE_LOCAL_BLAKE3_GROTH16_SETUP:-0} restart: always depends_on: postgres: @@ -192,11 +195,12 @@ services: mem_limit: 4G cpus: 4 entrypoint: /app/agent -t prove --redis-ttl ${REDIS_TTL:-57600} - volumes: - - type: bind - source: ${BLAKE3_GROTH16_SETUP_DIR} - target: /.blake3_groth16 - read_only: true + # # Uncomment to mount local BLAKE3 Groth16 setup files instead of downloading and set USE_LOCAL_BLAKE3_GROTH16_SETUP to 1, yes, or true. + # volumes: + # - type: bind + # source: ${BLAKE3_GROTH16_SETUP_DIR} + # target: /.blake3_groth16_artifacts/ + # read_only: true # comment-out if running in CPU proving mode deploy: resources: diff --git a/dockerfiles/agent.dockerfile b/dockerfiles/agent.dockerfile index 98e02b356..9cee11a98 100644 --- a/dockerfiles/agent.dockerfile +++ b/dockerfiles/agent.dockerfile @@ -68,12 +68,30 @@ RUN --mount=type=secret,id=ci_cache_creds,target=/root/.aws/credentials \ FROM ${CUDA_RUNTIME_IMG} AS runtime RUN apt-get update -q -y \ - && apt-get install -q -y ca-certificates libssl3 \ + && apt-get install -q -y ca-certificates libssl3 curl tar xz-utils \ && rm -rf /var/lib/apt/lists/* +# Download and extract BLAKE3 Groth16 artifacts. +ARG BLAKE3_GROTH16_ARTIFACTS_URL +# If USE_LOCAL_BLAKE3_GROTH16_SETUP is set to 1 or yes or true, skip downloading and expect user to mount setup files +ARG USE_LOCAL_BLAKE3_GROTH16_SETUP +ENV BLAKE3_GROTH16_SETUP_DIR=/.blake3_groth16_artifacts/ + +RUN if [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "1" ] || [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "yes" ] || [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "true" ]; then \ + echo "Using local BLAKE3 Groth16 setup files, skipping download"; \ + else \ + if [ -z "$BLAKE3_GROTH16_ARTIFACTS_URL" ]; then \ + echo "ERROR: BLAKE3_GROTH16_ARTIFACTS_URL not specified. Either set USE_LOCAL_BLAKE3_GROTH16_SETUP=1 and mount the setup files, or provide a URL via BLAKE3_GROTH16_ARTIFACTS_URL"; exit 1; \ + fi && \ + mkdir -p $BLAKE3_GROTH16_SETUP_DIR && \ + curl -L -o /tmp/blake3_groth16_artifacts.tar.xz "$BLAKE3_GROTH16_ARTIFACTS_URL" && \ + tar -xvf /tmp/blake3_groth16_artifacts.tar.xz -C $BLAKE3_GROTH16_SETUP_DIR --strip-components=1 && \ + rm -rf /tmp/* ; \ + fi + # Main prover COPY --from=builder /src/agent /app/agent COPY --from=builder /usr/local/risc0 /usr/local/risc0 -ENV BLAKE3_GROTH16_SETUP_DIR=/.blake3_groth16 + ENTRYPOINT ["/app/agent"] diff --git a/dockerfiles/agent.prebuilt.dockerfile b/dockerfiles/agent.prebuilt.dockerfile index d9fc32c77..85a340695 100644 --- a/dockerfiles/agent.prebuilt.dockerfile +++ b/dockerfiles/agent.prebuilt.dockerfile @@ -8,7 +8,7 @@ ARG BINARY_URL # Install runtime dependencies matching non-prebuilt version RUN apt-get update && \ - apt-get install -y ca-certificates libssl3 curl tar && \ + apt-get install -y ca-certificates libssl3 curl tar xz-utils && \ rm -rf /var/lib/apt/lists/* # Download and extract bento bundle tar.gz @@ -39,5 +39,23 @@ RUN curl -L https://risczero.com/install | bash && \ # Clean up any temporary files to reduce image size rm -rf /tmp/* /var/tmp/* +# Download and extract BLAKE3 Groth16 artifacts. +ARG BLAKE3_GROTH16_ARTIFACTS_URL +# If USE_LOCAL_BLAKE3_GROTH16_SETUP is set to 1 or yes or true, skip downloading and expect user to mount setup files +ARG USE_LOCAL_BLAKE3_GROTH16_SETUP +ENV BLAKE3_GROTH16_SETUP_DIR=/.blake3_groth16_artifacts/ + +RUN if [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "1" ] || [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "yes" ] || [ "$USE_LOCAL_BLAKE3_GROTH16_SETUP" = "true" ]; then \ + echo "Using local BLAKE3 Groth16 setup files, skipping download"; \ + else \ + if [ -z "$BLAKE3_GROTH16_ARTIFACTS_URL" ]; then \ + echo "ERROR: BLAKE3_GROTH16_ARTIFACTS_URL not specified. Either set USE_LOCAL_BLAKE3_GROTH16_SETUP=1 and mount the setup files, or provide a URL via BLAKE3_GROTH16_ARTIFACTS_URL"; exit 1; \ + fi && \ + mkdir -p $BLAKE3_GROTH16_SETUP_DIR && \ + curl -L -o /tmp/blake3_groth16_artifacts.tar.xz "$BLAKE3_GROTH16_ARTIFACTS_URL" && \ + tar -xvf /tmp/blake3_groth16_artifacts.tar.xz -C $BLAKE3_GROTH16_SETUP_DIR --strip-components=1 && \ + rm -rf /tmp/* ; \ + fi + WORKDIR /app ENTRYPOINT ["/app/agent"] \ No newline at end of file From d339ef399b1d46bf07318a74440f34e138d8dad2 Mon Sep 17 00:00:00 2001 From: Eric Date: Tue, 25 Nov 2025 19:15:25 -0500 Subject: [PATCH 85/86] cargo locks --- examples/composition/Cargo.lock | 1 + examples/counter-with-callback/Cargo.lock | 1 + examples/counter/Cargo.lock | 1 + examples/smart-contract-requestor/Cargo.lock | 1 + 4 files changed, 4 insertions(+) diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 8e899d270..112798279 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -2066,6 +2066,7 @@ dependencies = [ "boundless-market", "hex", "risc0-groth16", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index 755e9c395..c2d988cc1 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -2066,6 +2066,7 @@ dependencies = [ "boundless-market", "hex", "risc0-groth16", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 582986d08..4a62f31ab 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -2066,6 +2066,7 @@ dependencies = [ "boundless-market", "hex", "risc0-groth16", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index 44a44c605..eb5723107 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -2066,6 +2066,7 @@ dependencies = [ "boundless-market", "hex", "risc0-groth16", + "risc0-zkp", "risc0-zkvm", "serde", "serde_json", From e91c5201f793143c094dde650e8f06dde2c9c31f Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 1 Dec 2025 11:43:10 -0500 Subject: [PATCH 86/86] fix outstanding comments from angelo --- Cargo.lock | 2 +- blake3_groth16/README.md | 6 ++++- compose.yml | 2 +- crates/boundless-cli/src/lib.rs | 8 ------ .../src/request_builder/requirements_layer.rs | 26 +++++++++++++------ crates/broker/src/order_picker.rs | 2 +- crates/broker/src/proving.rs | 2 +- crates/test-utils/Cargo.toml | 14 ++++++++-- crates/test-utils/src/verifier.rs | 6 +---- examples/composition/Cargo.lock | 2 +- examples/counter-with-callback/Cargo.lock | 2 +- examples/counter/Cargo.lock | 2 +- examples/smart-contract-requestor/Cargo.lock | 2 +- 13 files changed, 44 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d854c37cb..2c53b2fbd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3023,6 +3023,7 @@ dependencies = [ "alloy-sol-types", "anyhow", "bincode", + "blake3_groth16", "boundless-market", "boundless-povw", "boundless-zkc", @@ -3031,7 +3032,6 @@ dependencies = [ "guest-assessor", "guest-set-builder", "guest-util", - "hex", "postcard", "rand 0.9.2", "reqwest", diff --git a/blake3_groth16/README.md b/blake3_groth16/README.md index 9c054ba6d..8ca78dff3 100644 --- a/blake3_groth16/README.md +++ b/blake3_groth16/README.md @@ -23,4 +23,8 @@ If using rapidsnark for CPU proving instead of CUDA, you will need to need to ma ## Proving -The prover looks for an environment variable `BLAKE3_GROTH16_SETUP_DIR` which is the directory in which we output the artifacts from the setup step. The Bento docker contains will also look for this env variable, so before running a prover, make sure to set that environment variable. +The prover looks for an environment variable `BLAKE3_GROTH16_SETUP_DIR` which is the directory in which we output the artifacts from the setup step. The Bento docker container will also look for this env variable, so before running a prover, make sure to set that environment variable. + +## Proving with Bento + +If Bento is used, all of these steps will be handled for you. diff --git a/compose.yml b/compose.yml index 4250234e6..d32a0de3b 100644 --- a/compose.yml +++ b/compose.yml @@ -1,4 +1,4 @@ -name: bento-dev +name: bento # Anchors: x-base-environment: &base-environment DATABASE_URL: postgresql://${POSTGRES_USER:-worker}:${POSTGRES_PASSWORD:-password}@${POSTGRES_HOST:-postgres}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-taskdb} diff --git a/crates/boundless-cli/src/lib.rs b/crates/boundless-cli/src/lib.rs index 9317adf24..3f66b533d 100644 --- a/crates/boundless-cli/src/lib.rs +++ b/crates/boundless-cli/src/lib.rs @@ -605,14 +605,6 @@ impl OrderFulfiller { } } -// // Returns `true` if the dev mode environment variable is enabled. -// fn is_dev_mode() -> bool { -// std::env::var("RISC0_DEV_MODE") -// .ok() -// .map(|x| x.to_lowercase()) -// .filter(|x| x == "1" || x == "true" || x == "yes") -// .is_some() -// } #[cfg(test)] #[allow(missing_docs)] #[path = "../tests/common/mod.rs"] diff --git a/crates/boundless-market/src/request_builder/requirements_layer.rs b/crates/boundless-market/src/request_builder/requirements_layer.rs index 571cc4bed..b92c1c5fa 100644 --- a/crates/boundless-market/src/request_builder/requirements_layer.rs +++ b/crates/boundless-market/src/request_builder/requirements_layer.rs @@ -167,14 +167,24 @@ impl Layer<(Digest, &Journal, &RequirementParams)> for RequirementsLayer { journal.bytes.len() ); } - predicate = Some(params.predicate.clone().unwrap_or_else(|| { - let blake3_claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok( - image_id, - journal.bytes.clone(), - ) - .digest(); - Predicate::claim_digest_match(blake3_claim_digest) - })); + if let Some(pred) = &predicate { + matches!(pred, Predicate::ClaimDigestMatch(_)).then_some(()).ok_or_else( + || { + anyhow::anyhow!( + "Blake3Groth16 proofs require a ClaimDigestMatch predicate" + ) + }, + )?; + } else { + predicate = Some(params.predicate.clone().unwrap_or_else(|| { + let blake3_claim_digest = blake3_groth16::Blake3Groth16ReceiptClaim::ok( + image_id, + journal.bytes.clone(), + ) + .digest(); + Predicate::claim_digest_match(blake3_claim_digest) + })); + } } } diff --git a/crates/broker/src/order_picker.rs b/crates/broker/src/order_picker.rs index 31dbefd2e..12f544a64 100644 --- a/crates/broker/src/order_picker.rs +++ b/crates/broker/src/order_picker.rs @@ -815,7 +815,7 @@ where let predicate = Predicate::try_from(order.request.requirements.predicate.clone()) .map_err(|e| OrderPickerErr::RequestError(Arc::new(e.into())))?; let eval_data = if is_blake3_groth16_selector(order.request.requirements.selector) { - // These proofs have to have no journal delivery because they cannot be authenticated on chain. + // These proofs must have no journal delivery because they cannot be authenticated on chain. FulfillmentData::None } else { FulfillmentData::from_image_id_and_journal(Digest::from_hex(image_id).unwrap(), journal) diff --git a/crates/broker/src/proving.rs b/crates/broker/src/proving.rs index 6c42f833b..ed42ab1a8 100644 --- a/crates/broker/src/proving.rs +++ b/crates/broker/src/proving.rs @@ -92,7 +92,7 @@ impl ProvingService { .await .context("Monitoring proof (stark) failed")?; - tracing::info!( + tracing::debug!( "compression_type: {compression_type:?}, snark_proof_id: {snark_proof_id:?}" ); let is_compress = compression_type != CompressionType::None; diff --git a/crates/test-utils/Cargo.toml b/crates/test-utils/Cargo.toml index 94543ba88..ab040bfed 100644 --- a/crates/test-utils/Cargo.toml +++ b/crates/test-utils/Cargo.toml @@ -26,11 +26,22 @@ povw = [ ] [dependencies] -alloy = { workspace = true, features = ["network", "node-bindings", "rpc-types", "providers", "transports", "sol-types", "contract", "signers", "signer-local"] } +alloy = { workspace = true, features = [ + "network", + "node-bindings", + "rpc-types", + "providers", + "transports", + "sol-types", + "contract", + "signers", + "signer-local", +] } alloy-primitives = { workspace = true } alloy-sol-types = { workspace = true } anyhow = { workspace = true } bincode = { version = "1.3", optional = true } +blake3_groth16 = { workspace = true } boundless-market = { workspace = true, features = ["test-utils"] } boundless-povw = { workspace = true, optional = true } boundless-zkc = { workspace = true } @@ -39,7 +50,6 @@ derive_builder = { version = "0.20.2", optional = true } guest-assessor = { workspace = true } guest-set-builder = { workspace = true } guest-util = { workspace = true } -hex = { workspace = true } postcard = { version = "1.1", features = ["alloc"], optional = true } rand = { version = "0.9", optional = true } risc0-aggregation = { workspace = true } diff --git a/crates/test-utils/src/verifier.rs b/crates/test-utils/src/verifier.rs index b3672e00b..3aec13b1b 100644 --- a/crates/test-utils/src/verifier.rs +++ b/crates/test-utils/src/verifier.rs @@ -22,7 +22,6 @@ use boundless_market::contracts::bytecode::{ Blake3Groth16Verifier, RiscZeroGroth16Verifier, RiscZeroMockVerifier, RiscZeroSetVerifier, RiscZeroVerifierRouter, }; -use hex::FromHex; use risc0_aggregation::SetInclusionReceiptVerifierParameters; use risc0_circuit_recursion::control_id::{ALLOWED_CONTROL_ROOT, BN254_IDENTITY_CONTROL_ID}; use risc0_zkvm::sha::{Digest, Digestible}; @@ -152,10 +151,7 @@ pub async fn setup_verifiers( let control_root = ALLOWED_CONTROL_ROOT; let mut bn254_control_id = BN254_IDENTITY_CONTROL_ID; bn254_control_id.as_mut_bytes().reverse(); - let verifier_parameters_digest = Digest::from_hex( - "62f049f606e804744f1fac2485677bf7905c82a8174a55a1555532b0fc5b2ab3", // TODO(ec2): fixme - ) - .unwrap(); + let verifier_parameters_digest = blake3_groth16::verify::verifier_parameters().digest(); let b3_groth16_verifier = deploy_blake3_groth16_verifier( &deployer_provider, <[u8; 32]>::from(control_root).into(), diff --git a/examples/composition/Cargo.lock b/examples/composition/Cargo.lock index 112798279..c8b8e1b48 100644 --- a/examples/composition/Cargo.lock +++ b/examples/composition/Cargo.lock @@ -2231,12 +2231,12 @@ dependencies = [ "alloy-primitives", "alloy-sol-types", "anyhow", + "blake3_groth16", "boundless-market", "boundless-zkc", "guest-assessor", "guest-set-builder", "guest-util", - "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", diff --git a/examples/counter-with-callback/Cargo.lock b/examples/counter-with-callback/Cargo.lock index c2d988cc1..72b36acc5 100644 --- a/examples/counter-with-callback/Cargo.lock +++ b/examples/counter-with-callback/Cargo.lock @@ -2231,12 +2231,12 @@ dependencies = [ "alloy-primitives", "alloy-sol-types", "anyhow", + "blake3_groth16", "boundless-market", "boundless-zkc", "guest-assessor", "guest-set-builder", "guest-util", - "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", diff --git a/examples/counter/Cargo.lock b/examples/counter/Cargo.lock index 4a62f31ab..5da4d5844 100644 --- a/examples/counter/Cargo.lock +++ b/examples/counter/Cargo.lock @@ -2231,12 +2231,12 @@ dependencies = [ "alloy-primitives", "alloy-sol-types", "anyhow", + "blake3_groth16", "boundless-market", "boundless-zkc", "guest-assessor", "guest-set-builder", "guest-util", - "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts", diff --git a/examples/smart-contract-requestor/Cargo.lock b/examples/smart-contract-requestor/Cargo.lock index eb5723107..f6964e501 100644 --- a/examples/smart-contract-requestor/Cargo.lock +++ b/examples/smart-contract-requestor/Cargo.lock @@ -2231,12 +2231,12 @@ dependencies = [ "alloy-primitives", "alloy-sol-types", "anyhow", + "blake3_groth16", "boundless-market", "boundless-zkc", "guest-assessor", "guest-set-builder", "guest-util", - "hex", "risc0-aggregation", "risc0-circuit-recursion", "risc0-ethereum-contracts",